← 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.as sia 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 network statement 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-length nel 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