J'essaie de trouver le moyen le plus élégant d'implémenter un filtre RTBH pour les itinéraires reçus d'un client.
Le filtre doit:
- Accepter uniquement les préfixes des clients à partir d'une liste de préfixes
- Accepter uniquement / 32 préfixes
- Seuls les préfixes avec la communauté blackhole
- Définissez le tronçon suivant sur le tronçon suivant RTBH (192.0.2.1)
Pour commencer, j'ai regardé le document " Configuration des conditions de correspondance dans les conditions de la politique de routage " de Juniper.
J'ai d'abord pensé à combiner un prefix-list-filter
pour ne faire correspondre que les itinéraires de la liste des préfixes clients et un route-filter
pour limiter les préfixes acceptés à / 32, comme ceci:
from {
as-path customer;
community blackhole;
prefix-list-filter customer-prefixes orlonger;
route-filter 0.0.0.0/0 prefix-length-range /32-/32;
}
Mais ensuite je suis tombé sur cette information dans le document:
Si vous configurez une stratégie qui inclut une combinaison de filtres de route, de listes de préfixes et de filtres d'adresse source, ils sont évalués selon une opération logique OU ou une recherche de correspondance de route la plus longue.
Si je comprends bien (et je trouve cela un peu flou), si j'utilise prefix-list-filter
, route-filter
et / ou source-address-filter
dans le même terme, il serait évalué avec un OU le plus long entre tous, ce qui rend cette approche inutilisable .
Ce que j'ai trouvé, c'est le filtre suivant. Le hostroutes-only
terme détourne tous les préfixes inférieurs à / 32 vers la stratégie suivante. Après cela, le prefixes
terme correspond si le / 32 est à la portée du client, correspond à son chemin d'accès et a la communauté de trous noirs définie:
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;
}
}
Alors, est-ce la façon la plus élégante de gérer cela? D'autres solutions?