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 rispetto alla v6. Ogni regola appartiene a una chain (catena) identificata da un nome. Le regole vengono valutate in ordine; se nessuna regola fa accept o reject, il comportamento di default è reject. Le chain sono referenziate dai protocolli (BGP, OSPF) tramite i parametri input.filter e output.filter.
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 o reject.
# 1. Accettare solo prefissi esattamente /24
/routing/filter/rule/add \
chain=accept-only-24 \
rule="if (dst-len == 24) { accept } else { reject }"
# 2. Filtrare prefissi troppo specifici o troppo aggregati 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 rotte BGP preferite
/routing/filter/rule/add \
chain=bgp-in-preferred \
rule="if (dst in 10.0.0.0/8) { set bgp-local-pref 200; accept } else { accept }"
# 5. Rifiutare AS path che contiene AS 65535 (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)
/routing/filter/rule/add \
chain=main-in \
rule="if (protocol bgp) { jump bgp-prefix-sanity }"Matcher principali disponibili
- dst / dst-len: prefisso destinazione e lunghezza maschera (es.
dst in 192.168.0.0/16,dst-len == 24) - protocol: sorgente della rotta (
bgp,ospf,static,connected,rip) - bgp-as-path: regexp numerica sull'AS path (es.
^65001= inizia con AS 65001) - bgp-input-remote-as / bgp-input-local-as: AS del peer
- ospf-type: tipo LSA OSPF (
ext1,ext2,inter,intra,nssa1,nssa2) - afi: address family (
ipv4,ipv6,vpnv4,vpnv6) - vrf / rtab: VRF o routing table di provenienza
- rpki: stato validazione RPKI (
valid,invalid,unknown)
Azioni principali disponibili
- accept: accetta la rotta, interrompe la valutazione della chain
- reject: rifiuta la rotta (non entra nel RIB)
- return: torna alla chain chiamante (utile con jump)
- set distance [+/-]N: imposta o incrementa/decrementa la distance
- set bgp-local-pref N: imposta BGP local preference (usato su iBGP)
- set bgp-med N: imposta MED (Multi-Exit Discriminator, annunciato ai peer eBGP)
- set bgp-weight N: imposta peso locale (non annunciato, solo per selezione locale)
- set gw address: modifica il gateway della rotta
- append bgp-communities X:Y: aggiunge community BGP
- delete bgp-communities regexp: rimuove community tramite regexp
rule="accept" nelle chain che devono lasciar passare le rotte non matchate, altrimenti perdi tutte le rotte inaspettatamente.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