Sto cercando di trovare il modo più elegante per implementare un filtro RTBH per i percorsi ricevuti da un cliente.
Il filtro dovrebbe:
- Accetta solo i prefissi dei clienti da un elenco di prefissi
- Accetta solo / 32 prefissi
- Solo prefissi con la comunità blackhole
- Imposta l'hop successivo sull'hop successivo RTBH (192.0.2.1)
Per iniziare, ho esaminato il documento " Configurazione delle condizioni di corrispondenza nei termini della politica di routing " di Juniper.
Per prima cosa ho pensato di combinare a prefix-list-filter
per abbinare solo le rotte dall'elenco dei prefissi dei clienti e a route-filter
per limitare i prefissi accettati a / 32, in questo modo:
from {
as-path customer;
community blackhole;
prefix-list-filter customer-prefixes orlonger;
route-filter 0.0.0.0/0 prefix-length-range /32-/32;
}
Ma poi mi sono imbattuto in queste informazioni nel documento:
Se si configura un criterio che include una combinazione di filtri di route, elenchi di prefissi e filtri di indirizzi di origine, questi vengono valutati in base a un'operazione OR logica o una ricerca di corrispondenza di route più lunga.
Da quanto ho capito (e lo trovo un po 'poco chiaro), se lo uso prefix-list-filter
, route-filter
e / o source-address-filter
nello stesso termine, sarebbe valutato con una corrispondenza più lunga OR tra tutti, il che rende questo approccio inutilizzabile .
Quello che mi è venuto in mente è questo il seguente filtro. Il hostroutes-only
termine devia tutti i prefissi più brevi di / 32 alla politica successiva. Dopodiché il prefixes
termine corrisponde se il / 32 è compreso nell'intervallo del cliente, corrisponde al suo percorso e ha la comunità blackhole impostata:
term hostroutes-only {
from {
route-filter 0.0.0.0/0 prefix-length-range /0-/31;
}
then next policy;
}
term prefixes {
from {
as-path customer;
community blackhole;
prefix-list-filter customer-prefixes orlonger;
}
then {
next-hop 192.0.2.1;
accept;
}
}
Quindi, è questo il modo più elegante per gestirlo? Qualche altra soluzione?