Próbuję znaleźć najbardziej elegancki sposób na wdrożenie filtru RTBH dla tras otrzymanych od klienta.
Filtr powinien:
- Akceptuj tylko własne prefiksy klientów z listy prefiksów
- Akceptuj tylko / 32 prefiksy
- Tylko przedrostki ze społecznością Blackhole
- Ustaw następny przeskok na następny przeskok RTBH (192.0.2.1)
Na początek przejrzałem dokument „ Konfigurowanie warunków dopasowania w warunkach zasad routingu ” firmy Juniper.
Najpierw pomyślałem o połączeniu prefix-list-filter
tylko pasujących tras z listy prefiksów klientów i route-filter
ograniczeniu akceptowanych prefiksów do / 32, tak jak:
from {
as-path customer;
community blackhole;
prefix-list-filter customer-prefixes orlonger;
route-filter 0.0.0.0/0 prefix-length-range /32-/32;
}
Ale potem natknąłem się na te informacje w dokumencie:
Jeśli skonfigurujesz zasadę, która zawiera kombinację filtrów trasy, list prefiksów i filtrów adresów źródłowych, są one oceniane zgodnie z logiczną operacją LUB lub wyszukiwaniem najdłuższej trasy.
Jak rozumiem to (i uważam, że to trochę niejasne), jeśli mogę użyć prefix-list-filter
, route-filter
i / lub source-address-filter
w tym samym okresie będzie ona oceniana z najdłuższego meczu lub pomiędzy nimi, co sprawia, że podejście to bezużyteczne .
Wymyśliłem następujący filtr. hostroutes-only
Termin odwraca wszystkie prefiksy krótszy niż / 32 do następnej polityki. Następnie prefixes
termin pasuje, jeśli / 32 znajduje się w zasięgu klienta, pasuje do jego ścieżki i ma ustawioną społeczność blackhole:
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;
}
}
Czy to jest najbardziej elegancki sposób na poradzenie sobie z tym? Jakieś inne rozwiązania?