Estoy tratando de encontrar la forma más elegante de implementar un filtro RTBH para las rutas recibidas de un cliente.
El filtro debe:
- Solo acepte los prefijos propios de los clientes de una lista de prefijos
- Solo acepta / 32 prefijos
- Solo prefijos con la comunidad blackhole
- Establezca el siguiente salto en el RTBH siguiente salto (192.0.2.1)
Para comenzar, miré el documento " Configuración de condiciones de coincidencia en términos de política de enrutamiento " de Juniper.
Primero pensé en combinar una prefix-list-filter
para que solo coincida con las rutas de la lista de prefijos de los clientes y una route-filter
para limitar los prefijos aceptados a / 32, así:
from {
as-path customer;
community blackhole;
prefix-list-filter customer-prefixes orlonger;
route-filter 0.0.0.0/0 prefix-length-range /32-/32;
}
Pero luego me topé con esta información en el documento:
Si configura una política que incluye alguna combinación de filtros de ruta, listas de prefijos y filtros de dirección de origen, se evalúan de acuerdo con una operación OR lógica o una búsqueda de coincidencia de ruta más larga.
Según tengo entendido (y lo encuentro un poco confuso), si lo uso prefix-list-filter
, route-filter
y / o source-address-filter
en el mismo término, se evaluaría con un OR más largo entre todos, lo que hace que este enfoque sea inutilizable .
Lo que se me ocurrió es este el siguiente filtro. El hostroutes-only
término desvía todos los prefijos más cortos que / 32 a la siguiente política. Después de eso, el prefixes
término coincide si el / 32 está en el rango del cliente, coincide con su ruta de acceso y tiene establecida la comunidad de agujeros negros:
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;
}
}
Entonces, ¿es esta la forma más elegante de manejar esto? ¿Alguna otra solución?