ip route show src field

12

Leí la página de manual de ipy todavía no entiendo qué srces y no pude encontrar mucha documentación.

Por favor, si puede explicarlo a fondo o señalar algún enlace, es una buena respuesta.

volcado de memoria
fuente
3
¿No sabe qué significa "fuente" en el contexto de la comunicación IP? No necesita la falla del servidor - necesita el libro de Stevens ...
voretaq7

Respuestas:

17

Al agregar una ruta a un host de host múltiple, es posible que desee tener control sobre la dirección IP de origen desde la que envía su host al iniciar las comunicaciones utilizando esta ruta. Para esto es src .

Un breve ejemplo: tiene un host con dos interfaces y las direcciones IP 192.168.1.123/24 y 10.45.22.12/24. Está agregando una ruta a 78.22.45.0/24 a través de 10.45.22.1 y desea asegurarse de que no está enviando a 78.22.45.0/24 utilizando la dirección 192.168.1.123 (tal vez porque la red 78.22.45.0/24 no tiene ruta de regreso 192.168.1.0/24 o porque no desea que su tráfico tome esta ruta por una razón u otra):

ip route add 78.22.45.0/24 via 10.45.22.1 src 10.45.22.12

Tenga en cuenta que el src que está dando solo afectaría el tráfico que se origina en su propio host. Si se está enrutando un paquete extraño, obviamente ya tendría una dirección IP de origen, por lo que se pasaría sin modificaciones (a menos que esté utilizando NAT, por supuesto, pero este es un asunto completamente diferente). Además, esta configuración puede ser anulada por un proceso que elige específicamente vincularse a una dirección específica en lugar de utilizar los valores predeterminados al iniciar las conexiones (bastante raro).

el wabbit
fuente
9

El srcatributo es una pista que utiliza el algoritmo de selección de dirección . Es importante cuando un host tiene múltiples direcciones IP, que generalmente es, pero no siempre, cuando tiene múltiples interfaces. Si bien hay otras reglas que influyen en la selección de direcciones, y una aplicación de red también puede anular el algoritmo de selección mediante el uso de llamadas al sistema como bind(), el srcatributo es una forma de usar una búsqueda en la tabla de enrutamiento para responder la pregunta: "Si quiero iniciar un conexión al host X, ¿cuál de mis direcciones debo usar? "

Aquí hay un ejemplo para ilustrar el uso y el efecto del srcatributo. Para aclarar que esto está relacionado con direcciones y rutas, no estrictamente con interfaces, este host de ejemplo solo tiene una interfaz de red pero dos direcciones. Además, ambas direcciones están en la misma subred para enfatizar el hecho de que no hay otra forma obvia de elegir cuál usar.

$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.1.0.2/24 brd 10.1.0.255 scope global eth0
    inet 10.1.0.16/24 scope global secondary eth0
$ ip route list dev eth0
10.1.0.32/27  scope link  src 10.1.0.16
10.1.0.0/24  proto kernel  scope link  src 10.1.0.2

Este host puede comunicarse con cualquiera de las otras 252 direcciones en esta subred / 24 desde cualquiera de las direcciones, pero por defecto usará 10.1.0.16 cuando inicie una conexión con 10.1.0.32 a 10.1.0.63, y use 10.1.0.2 para todos los descanso.

Si el host responde, en lugar de iniciarse, responderá desde la dirección de destino de la solicitud. Por ejemplo, si otro host en 10.1.0.32 se conecta a este host en 10.1.0.2, la respuesta vendrá de 10.1.0.2 aunque eso no coincida con el srcatributo de la ruta de regreso.

neirbowj
fuente