← Documentazione
BGP
Configurare BGP su MikroTik RouterOS
Guida pratica alla configurazione BGP su RouterOS/CCR per annunciare i tuoi prefissi con il tuo ASN.
Configurare BGP su MikroTik RouterOS
Guida pratica per configurare BGP su RouterOS 7.x (CCR2116, CCR2004, CHR) per annunciare i tuoi prefissi con il tuo ASN. Esempi basati su AS199920 e infrastruttura Velix.
Prerequisiti
- RouterOS 7.x (BGP v2 — sintassi diversa da ROS 6)
- ASN proprio (es. AS199920)
- Prefisso IPv4 o IPv6 da annunciare
- Almeno un upstream provider che accetta il tuo BGP
Configurazione base eBGP con upstream
# Definisci il tuo ASN
/routing/bgp/template
add as=206658 name=velix-base hold-time=90 keepalive-time=30
# Aggiungi il peer upstream (es. Hetzner AS24940)
/routing/bgp/connection
add name=hetzner-upstream \
remote.address=10.0.0.1 \
remote.as=24940 \
local.role=ebgp \
templates=velix-base \
output.filter-chain=ANNOUNCE-ONLY-MINE \
input.filter-chain=ACCEPT-FROM-UPSTREAM
Filtri di annuncio (FONDAMENTALE)
Non annunciare mai prefissi di altri — filtra in uscita solo i tuoi:
# Filtro output: annuncia solo i tuoi prefissi
/routing/filter/rule
add chain=ANNOUNCE-ONLY-MINE \
rule="if (dst == 81.29.157.0/24) { accept; }"
add chain=ANNOUNCE-ONLY-MINE \
rule="reject;"
# Filtro IPv6
add chain=ANNOUNCE-ONLY-MINE \
rule="if (dst == 2a13:4d00::/29) { accept; }"
Filtri di ricezione (best practice)
# Blocca bogons e prefissi troppo specifici in ingresso
/routing/filter/rule
add chain=ACCEPT-FROM-UPSTREAM \
rule="if (dst-len > 24) { reject; }"
add chain=ACCEPT-FROM-UPSTREAM \
rule="if (dst in 10.0.0.0/8) { reject; }"
add chain=ACCEPT-FROM-UPSTREAM \
rule="if (dst in 192.168.0.0/16) { reject; }"
add chain=ACCEPT-FROM-UPSTREAM \
rule="if (dst in 172.16.0.0/12) { reject; }"
add chain=ACCEPT-FROM-UPSTREAM \
rule="accept;"
Configurare IPv6 BGP
/routing/bgp/connection
add name=hetzner-upstream-v6 \
remote.address=2a01:4f8::1 \
remote.as=24940 \
local.role=ebgp \
templates=velix-base \
output.filter-chain=ANNOUNCE-IPV6 \
address-families=ipv6
/routing/filter/rule
add chain=ANNOUNCE-IPV6 \
rule="if (dst == 2a13:4d00::/29) { accept; }"
add chain=ANNOUNCE-IPV6 \
rule="reject;"
RPKI validation su RouterOS 7
# Aggiungi un RPKI cache server
/routing/rpki
add address=rpki.cloudflare.com port=8282 \
refresh-interval=600 name=cloudflare-rpki
# Filtra gli Invalid in ingresso
/routing/filter/rule
add chain=ACCEPT-FROM-UPSTREAM \
rule="if (rpki-state == invalid) { reject; }"
Verifica stato BGP
# Stato sessioni
/routing/bgp/session print
# Route ricevute
/routing/route print where bgp
# Route annunciate
/routing/bgp/advertisement print
Troubleshooting comune
Sessione non si alza:
- Verifica firewall: porta TCP 179 deve essere aperta bidirezionalmente
- Controlla che il
remote.assia corretto - Verifica la raggiungibilità dell'IP del peer
Prefisso non annunciato:
- Verifica che il prefisso esista nella routing table (
/ip route print) - Controlla che il filtro di output non lo stia bloccando
- Assicurati che ci sia un
networkstatement o una route statica
Prefisso marcato Invalid da RPKI:
- Verifica il ROA su rpki-validator.ripe.net
- Controlla che l'ASN nel ROA corrisponda al tuo ASN di annuncio
- Verifica il
max-lengthnel ROA
AS-SET per i peering
Quando fai peering con IXP o altri operatori, ti chiederanno il tuo AS-SET. Con Velix LIR come sponsor, il tuo AS-SET viene creato automaticamente:
AS-SET: AS199920:AS-CUSTOMERS
Members: AS199920, AS[tuo-asn]
Comunicalo al tuo upstream come: AS199920:AS-CUSTOMERS
#BGP#MikroTik#RouterOS#CCR#AS199920