¿en qué orden se analiza la tabla de ruta?


19

En mi PC tengo que seguir la siguiente tabla de enrutamiento:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

No entiendo cómo se analiza, quiero decir de arriba hacia abajo o de abajo hacia arriba.

Si se analiza de arriba hacia abajo, todo se enviará siempre al enrutador de mi casa, aunque el destino de la IP sea 192.168.1.15; pero lo que sabía (¿erróneamente?) era que si una PC está dentro de mi misma red local, una vez que recuperé el destino MAC a través de un mensaje de difusión, mi PC podría enviar directamente el mensaje al destino.

Respuestas:


19

La tabla de enrutamiento se usa en el orden de más específico a menos específico.

Sin embargo, en Linux es un poco más complicado de lo que cabría esperar. En primer lugar, hay más de una tabla de enrutamiento, y cuándo se utiliza dicha tabla de enrutamiento depende de una serie de reglas.

Para obtener la imagen completa:

$ ip rule show
0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

$ ip route show table local
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
broadcast 192.168.0.0 dev eth0  proto kernel  scope link  src 192.168.1.27 
local 192.168.1.27 dev eth0  proto kernel  scope host  src 192.168.1.27 
broadcast 192.168.1.255 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table main
default via 192.168.1.254 dev eth0 
192.168.0.0/23 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table default

$

La localtabla es la tabla de enrutamiento especial que contiene rutas de control de alta prioridad para direcciones locales y de difusión.

La maintabla es la tabla de enrutamiento normal que contiene todas las rutas no políticas. Esta es también la tabla que puede ver si simplemente ejecuta ip route show(o ip ropara abreviar). Recomiendo no usar el routecomando anterior, ya que solo muestra la maintabla y su formato de salida es algo arcaico.

La tabla defaultestá vacía y reservada para el procesamiento posterior si las reglas predeterminadas anteriores no seleccionaron el paquete.

Puede agregar sus propias tablas y agregar reglas para usarlas en casos específicos. Un ejemplo es si tiene dos conexiones a Internet, pero un host o subred siempre debe enrutarse a través de una conexión a Internet en particular.

El libro Policy Routing with Linux explica todo esto con exquisito detalle.


¿Hay alguna manera de cambiar esa prioridad?
Mheni

4

La tabla de enrutamiento generalmente se aplica en orden de "más específico" a "menos específico". Un destino de 0.0.0.0con una máscara de red de 0.0.0.0, es decir, su ruta predeterminada , es el menos específico posible y, por lo tanto, siempre se aplicará al final.

Si tenía la dirección MAC para otra PC en su red local, pero estaba en una subred diferente, podría agregar una ruta de host específica para esa PC y probablemente obtendría comunicación.


s / generalmente / siempre /. Eso es bastante fundamental para la forma en que funcionan las tablas de enrutamiento.
Celada

1
@Celada He omitido mencionar las métricas para rutas "mismas específicas". Y luego está el enrutamiento de políticas. Por el momento, al menos, yo estoy por lo general .
roaima
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.