Route Filters in RouterOS v7: sintassi if/then, matcher e azioni avanzate
Padroneggia il sistema di route filter in RouterOS v7 con la sintassi script-like if/then/else, i matcher disponibili (dst, protocol, bgp-as-path, ecc.) e le azioni (accept, reject, set distance, set bgp-local-pref).
Architettura dei route filter in v7
I route filter in RouterOS v7 usano una sintassi script-like molto più potente della v6. Ogni regola appartiene a una chain (catena) identificata da un nome; le regole si valutano in ordine. Le chain sono referenziate dai protocolli (BGP, OSPF) tramite i parametri input.filter e output.filter. Sono lo strumento con cui decidi cosa accettare/annunciare e come manipolare gli attributi (distance, local-pref, MED, community).
Struttura di una regola
La forma generale è: if ( <condizione> ) { <azioni> } else { <azioni> }. Le condizioni usano operatori logici && (AND), || (OR), ! (NOT). Le azioni possono modificare attributi prima di accept/reject. Si può anche fare jump a un'altra chain e return per tornare indietro.
# 1. Accettare solo prefissi esattamente /24
/routing/filter/rule/add chain=accept-only-24 \
rule="if (dst-len == 24) { accept } else { reject }"
# 2. Sanity check: scartare prefissi troppo aggregati o troppo specifici da BGP
/routing/filter/rule/add chain=bgp-prefix-sanity \
rule="if (dst-len < 8 || dst-len > 24) { reject } else { accept }"
# 3. Aumentare la distance delle rotte OSPF esterne (tipo E2)
/routing/filter/rule/add chain=ospf-in \
rule="if (ospf-type ext2) { set distance 150; accept } else { accept }"
# 4. Impostare local-preference per rendere preferito un upstream (iBGP)
/routing/filter/rule/add chain=bgp-in-primary \
rule="set bgp-local-pref 200; accept"
# 5. Rifiutare AS path che contiene un AS bogon
/routing/filter/rule/add chain=bgp-in-clean \
rule="if (bgp-as-path ~\"65535\") { reject } else { accept }"
# 6. Saltare a un'altra chain (jump) e poi tornare
/routing/filter/rule/add chain=main-in \
rule="if (protocol bgp) { jump bgp-prefix-sanity }"Filtro bogon: la prima cosa da fare su ogni eBGP
Su ogni sessione eBGP devi filtrare i bogon (prefissi privati/riservati che non dovrebbero mai apparire in BGP pubblico): RFC1918, loopback, link-local, documentazione. Accettarli espone a leak e dirottamenti. È un filtro che ogni operatore serio applica sia in input sia in output.
/routing/filter/rule/add chain=bgp-bogon \
rule="if (dst in 10.0.0.0/8 || dst in 172.16.0.0/12 || dst in 192.168.0.0/16 || \
dst in 127.0.0.0/8 || dst in 169.254.0.0/16 || dst in 0.0.0.0/8 || \
dst in 100.64.0.0/10 || dst in 192.0.2.0/24 || dst in 224.0.0.0/4) \
{ reject } else { accept }"
# Applica sia in input sia in output sulla sessione eBGP
/routing/bgp/connection/set [find name=peer-upstream] input.filter=bgp-bogonMatcher principali disponibili
- dst / dst-len: prefisso destinazione e lunghezza maschera (
dst in 192.168.0.0/16,dst-len == 24) - protocol: sorgente della rotta (
bgp,ospf,static,connected,rip) - bgp-as-path: regexp sull'AS path (es.
~"^65001"= inizia con AS 65001) - bgp-communities: presenza di una community (es.
65000:100) - bgp-input-remote-as / bgp-input-local-as: AS del peer
- ospf-type: tipo LSA OSPF (
ext1,ext2,inter-area,intra-area,nssa) - afi: address family (
ipv4,ipv6,vpnv4,vpnv6) - routing-mark / rtab: routing mark o tabella di provenienza
- rpki: stato validazione RPKI (
valid,invalid,unknown)
Azioni principali disponibili
| Azione | Effetto |
|---|---|
| accept | Accetta la rotta, ferma la valutazione della chain |
| reject | Rifiuta la rotta (non entra nel RIB / non viene annunciata) |
| return | Torna alla chain chiamante (usato con jump) |
| set distance N | Imposta la distance amministrativa |
| set bgp-local-pref N | Imposta la local preference (iBGP, per scegliere l'uscita) |
| set bgp-med N | Imposta il MED (suggerisce all'eBGP quale ingresso preferire) |
| set bgp-weight N | Peso locale Cisco-like (solo selezione locale, non annunciato) |
| append bgp-communities X:Y | Aggiunge una community BGP |
| set gw address | Forza il gateway/next-hop della rotta |
Continua 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