0 votos

¿Cada personalizado de la tabla de enrutamiento (w/puerta de enlace predeterminada) necesidad de un vínculo ámbito de ruta?

Mi Centos máquina tiene una costumbre de la tabla de enrutamiento foo_table que contiene sólo una puerta de enlace predeterminada de la ruta:

# ip route add default via 10.0.2.1 table foo_table
# ip route show table foo_table  
default via 10.0.2.1 dev bond0.2

Una regla de política de las rutas de todo el tráfico de 10.0.2.22 el uso de esta tabla:

# ip rule show
0:      from all lookup local 
32765:  from 10.0.2.22 lookup foo_table 
32766:  from all lookup main 
32767:  from all lookup default 

Cuando me traceroute de la 10.0.2.22 Centos máquina a otra máquina en la misma subred local, el paquete se enruta al router en primer lugar, a continuación, en el servidor:

# traceroute -In 10.0.2.60
traceroute to 10.0.2.60 (10.0.2.60), 30 hops max, 60 byte packets
 1  10.0.2.1  3.573 ms  3.972 ms  4.219 ms
 2  10.0.2.60  1.461 ms  1.494 ms  1.700 ms

Naturalmente, me gustaría que el tráfico local para no involucrar innecesariamente el router como este.

En la main tabla de enrutamiento, por supuesto, hay un enlace ámbito de ruta para la subred local:

10.0.2.0/24 dev bond0.2  proto kernel  scope link  src 10.0.2.22

Mi entendimiento es que debido a que foo_table es consultado antes de main (como por ip rule show), la ruta por defecto a través de 10.0.2.1 en foo_table se utiliza en lugar de eso, incluso a pesar de que el destino es una dirección local de enlace.

¿Esto significa que tengo para agregar un vínculo ámbito de aplicación de la ruta a foo_table así?

# ip route add 10.0.2.0/24 dev bond0.2 scope link table foo_table
# ip route show table foo_table  
10.0.2.0/24 dev bond0.2  scope link
default via 10.0.2.1 dev bond0.2

Parece que para resolver el problema, pero es esta la manera correcta de hacerlo?

# traceroute -In 10.0.2.60
traceroute to 10.0.2.60 (10.0.2.60), 30 hops max, 60 byte packets
 1  10.0.2.60  0.339 ms  0.355 ms  0.399 ms

Es mi entendimiento de lo que está sucediendo, ¿correcto? (He mínima experiencia con enrutamiento.)

1voto

Cedric Knight Puntos 540

¿Sabe usted cuál es el propósito de la foo_table ? Para mí, parece ser que su efecto es para enrutar todo el tráfico de la 10.0.2.22 de la interfaz (incluyendo a la subred local) a través del router, lo que usted dice es lo que no quieres. ¿Cuál es el contenido de /etc/iproute2/rt_tables ? Usted también no dicen lo que la ruta por defecto en la main tabla.

Para evitar esto, agregue la ruta de subred a foo_table como usted sugiere, o simplemente eliminar la regla:

ip rule del from 10.0.2.22 lookup foo_table

Que yo sepa, no es necesario especificar scope link para agregar una ruta de subred a foo_table, sólo

ip route add 10.0.2.0/24 dev bond0.2 table foo_table

desde que especifica el prefijo correspondiente al enlace de todos modos. Tal vez me estoy entendiendo.

((Por cierto, supongo que la default ruta en la tabla principal puede ser movido a la default tabla de simplicidad, pero default aparece vacía por convención, tal vez porque la ruta por defecto depende de la interfaz configurada.))

0voto

Frode Puntos 108

Para cualquier persona que viene a través de esto, he encontrado una similar pregunta respondida en un hermano sitio: https://unix.stackexchange.com/questions/27850/routing-tables-and-default-routes

En general, usted verá dos reglas (al menos) en su tabla de enrutamiento la mayoría de los sabores de *nix.

Usted tendrá una ruta a la red local (para este ejemplo, 10.11.12.0/24):

10.11.12.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

Y una la identificación de la ruta por defecto.

0.0.0.0 10.11.12.1 0.0.0.0 UG 0 0 0 eth0

Así, lo que de esta forma, le dice a su núcleo, es:

enviar todos los paquetes que va a 10.11.12.0/24 fuera eth0, directamente, sin específicamente enviarlos al router por defecto (banderas: U = es la ruta ARRIBA)

enviar paquetes a cualquier dirección que no sea la de la red local (0.0.0.0 coincide con cualquier cosa) a la puerta de enlace (10.11.12.1) (banderas: U = es la ruta, G = puerta de enlace).

Si usted tiene más de interfaces, o que son multi-homed, o si usted tiene red o de las rutas de host configurado, puede ver más rutas que eso, pero este es el mínimo que te gustaría ver en un regular base.

Por la configuración y la educación de la interfaz, el kernel crear automáticamente que la red local de la ruta.

No es necesario agregar manualmente esa ruta.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: