BGP in RouterOS v7: instance, connection, local.role e output.network
Configura BGP v7 in RouterOS: creazione dell'instance, connessioni eBGP e iBGP con local.role, annuncio di prefissi con output.network e differenze fondamentali rispetto alla v6.
BGP in RouterOS v7: cosa cambia rispetto alla v6
In RouterOS v6 la configurazione BGP era concentrata in /routing/bgp/instance e /routing/bgp/peer. In RouterOS v7 l'architettura è completamente diversa: l'istanza si dichiara in /routing/bgp/instance con un AS number, e ogni sessione peer è una entry in /routing/bgp/connection con sub-parametri dotted (local.role, remote.address, remote.as, output.network, ecc.). Il vecchio menu /routing/bgp/peer non esiste più.
Quando un WISP ha davvero bisogno di BGP
BGP serve quando: (1) hai un tuo blocco IP pubblico (PA o PI) e un AS number e vuoi annunciarlo; (2) hai più upstream e vuoi multihoming/ridondanza tra operatori; (3) fai peering a un IXP (es. MIX, TOP-IX, NaMeX). Se hai un solo upstream e nessun AS, ti basta una default route statica — non complicarti la vita con BGP.
# 1. Creare l'istanza BGP con il proprio AS number /routing/bgp/instance/add \ name=bgp-main \ as=65001 \ router-id=10.255.0.1 # 2. Creare la connessione eBGP verso il peer ISP (AS 65002) /routing/bgp/connection/add \ name=peer-upstream \ instance=bgp-main \ remote.address=203.0.113.2 \ remote.as=65002 \ local.role=ebgp \ local.address=203.0.113.1 \ output.network=mynetworks \ output.filter=bgp-out \ input.filter=bgp-in \ comment="Peering eBGP con ISP upstream" # 3. Definire i prefissi da annunciare al peer /routing/bgp/network/add \ network=192.0.2.0/24 \ comment="Il nostro blocco IP pubblico" # Verificare sessione BGP e rotte ricevute /routing/bgp/session/print /ip/route/print where bgp
local.role: il parametro chiave per eBGP e iBGP
Il parametro local.role definisce il tipo di sessione BGP e attiva le policy di sicurezza predefinite (RFC 8212: senza policy esplicite, eBGP non annuncia/accetta nulla per default). I valori principali:
| Valore | Uso | Comportamento |
|---|---|---|
| ebgp | Tra AS diversi (upstream, peer) | Decrementa TTL, non propaga attributi iBGP |
| ibgp | Stesso AS (router interni) | Propaga rotte BGP internamente, niente loop via AS-path |
| ebgp-rs | Route server di un IXP | Non altera next-hop né AS-path |
| ebgp-rs-client | Client di un route server | Lato client del route server IXP |
# Router A (route reflector) — AS 65001 /routing/bgp/instance/add name=ibgp-rr as=65001 router-id=10.255.0.1 /routing/bgp/connection/add \ name=ibgp-to-routerB \ instance=ibgp-rr \ remote.address=10.255.0.2 \ local.role=ibgp \ local.address=10.255.0.1 \ reflect=yes \ comment="Route Reflector -> Client" # Router B (client del RR) — AS 65001 /routing/bgp/instance/add name=ibgp-client as=65001 router-id=10.255.0.2 /routing/bgp/connection/add \ name=ibgp-to-rr \ instance=ibgp-client \ remote.address=10.255.0.1 \ local.role=ibgp \ local.address=10.255.0.2
Ricevere solo la default (non la full table)
La full table BGP supera i 950.000 prefissi: un router entry-level (poca RAM) non la regge. La maggior parte dei WISP single/dual-homed non ha bisogno della full table — basta ricevere una default route dall'upstream. Si filtra l'input per accettare solo 0.0.0.0/0, risparmiando RAM e CPU.
# Chain di filtro: accetta solo 0.0.0.0/0, rifiuta tutto il resto
/routing/filter/rule/add chain=bgp-in-defaultonly \
rule="if (dst==0.0.0.0/0) { accept }"
/routing/filter/rule/add chain=bgp-in-defaultonly rule="reject"
# Applica alla connessione (l'upstream deve essere configurato per inviarti la default)
/routing/bgp/connection/set [find name=peer-upstream] input.filter=bgp-in-defaultonlyContinua con
Configura senza fatica con l'AI
In WispOS l'agente AI genera la configurazione RouterOS dalle tue parole e un tutor ti guida passo passo.
Prova WispOS