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.
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.
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 .
La tabla de enrutamiento generalmente se aplica en orden de "más específico" a "menos específico". Un destino de
0.0.0.0
con una máscara de red de0.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.
fuente