¿Por qué Linux elige un prefijo más corto? (fuerteCisne, tabla 220)

¿Por qué Linux elige un prefijo más corto? (fuerteCisne, tabla 220)

Tengo 2 rutas siguientes:

# ip ro show table 0|grep 10.250
10.250.0.0/16 via 10.80.1.1 dev ens5 table 220 proto static src 10.80.1.76 
10.250.1.4 via 10.80.1.45 dev ens5 

El primero proviene de la tabla 220 administrada por strongSwan, el otro lo creé manualmente para realizar pruebas.

Espero que la /32ruta explícita siempre gane, pero

# ip ro get 10.250.1.4
10.250.1.4 via 10.80.1.1 dev ens5 table 220 src 10.80.1.76 uid 0 
    cache 

Linux todavía prefiere /16.

¿Por qué hace eso?

Respuesta1

Esto se debe a que strongSwan utiliza enrutamiento de políticas. La parte que falta para explicar esto es el resultado deip rulecon una entrada adicional establecida por strongSwan que normalmente sería:

# ip rule
0:  from all lookup local
220:    from all lookup 220
32766:  from all lookup main
32767:  from all lookup default

la rutanormasse recorren en orden de preferencia (el orden que se muestra arriba) para hacer referencia a varias rutasmesasNetwork is unreachable, hasta que se encuentre una ruta (o ninguna (caso posible si no había una ruta predeterminada en ninguna parte, o si hay rutas "negativas") y se devuelve un error como ). La regla de enrutamiento preferida 220 se ejecuta antes que la regla de enrutamiento estándar preferida 32766, por lo que primero se verifica la tabla de enrutamiento 220. Dado que en la tabla de enrutamiento 220 10.250.0.0/16 coincide con 10.250.1.4 se encontró una ruta: la evaluación de la ruta se detiene aquí, cualquiera que se haya elegido en tablas posteriores. ElprincipalLa tabla de enrutamiento nunca se alcanza para este destino.

Cuando el resultado de ip route get ...muestra una tabla de enrutamiento diferente a lalocal,principal(o la mesapor defectosi no se deja vacío como suele ser el caso), significa que tiene que haber una regla de enrutamiento que haga referencia a esta tabla y será visible usando ip rule.

Para muchos otrosenrutamiento basado en políticasEn algunos casos, habría un selector adicional en lugar del "comodín" from all. Por lo general, se utiliza una dirección IP/red de origen o una interfaz entrante: nuevamente para alterar el resultado del enrutamiento normal. Incluso hay otras posibilidades, como puerto, uid, etc. Una dirección IP/red de destino ya está seleccionada mediante las entradas de ruta habituales, por lo que rara vez se usaría como selector en las reglas de enrutamiento.

información relacionada