Crear una red de bucle Ethernet: cómo configurar rutas

Crear una red de bucle Ethernet: cómo configurar rutas

Tengo una red que debe configurarse como un bucle. Consta de 3 nodos, cada uno de los cuales tiene dos interfaces. El siguiente diagrama lo explica.

+--->(eth0) Node 1 (eth1)--->(eth0) Node 2 (eth1)--->(eth0) Node 3 (eth1)--->+
|    10.0.3.1     10.0.1.1  10.0.1.2     10.0.2.2  10.0.2.3      10.0.3.3    |
+--<----------------------------<--------------------------------------------+

Quiero hacer un ping desde el Nodo 1 al Nodo 3 para que la solicitud pase por el Nodo 2 y la respuesta vaya directamente al Nodo 1 desde el Nodo 3.

node1$ ping 10.0.2.3

He configurado los nodos como:

node1# route add -net 10.0.2.0/24 gw 10.0.1.2

node2# route add -net 10.0.3.0/24 gw 10.0.2.3

node3# route add -net 10.0.1.0/24 gw 10.0.3.1

Al ejecutar el ping, la solicitud del Nodo 1 llega al Nodo 3. Sin embargo el Nodo 3 no responde, ni siquiera genera la respuesta (al menos eso puedo capturar con Wireshark).

¿Podrías darme alguna pista?

ejército de reserva

Respuesta1

Cuando un nodo elige elfuenteDirección IP de un paquete que origina, a menos que se restrinja lo contrario, normalmente elige la dirección IP "más cercana" al siguiente salto en la ruta hacia el destino del paquete.

Desde el punto de vista del Nodo 1, el siguiente salto al Nodo 3 es 10.0.1.2. La dirección IP del Nodo 1 más cercana 10.0.1.2es 10.0.1.1, no 10.0.3.1. (Una dirección IP en la misma subred que el destino se considera "más cercana" al destino que una dirección IP que no está en la misma subred).

Verifique la dirección IP de origen del ping. Lo más probable es que 10.0.1.1no lo sea 10.0.3.1. Si el nodo 3 no tiene ruta hacia 10.0.1.1, no puede responder.

Respuesta2

Los nodos no se repiten correctamente para evitar una transmisión descontrolada del puente. Le recomiendo que ejecute el protocolo Spanning Tree. Esto le permitirá establecer rutas completamente funcionales entre todos los nodos. No se me ocurre otra forma de hacer esto a menos que esté dispuesto a limitar la conectividad entre ciertos enlaces en la capa 2 o la capa 3.

Respuesta3

( /sbin/routeestá en desuso, utilícelo ip routeen su lugar).

Si desea que sus paquetes viajen solo en una dirección, eso significa que cada nodo debe usar el siguiente nodo como puerta de enlace, sea cual sea el destino.

node1# ip route add 10.0.0.0/22 via 10.0.1.2
node2# ip route add 10.0.0.0/22 via 10.0.2.3
node3# ip route add 10.0.0.0/22 via 10.0.3.1

Sin embargo, en la mayoría de las distribuciones, el filtrado de ruta inversa suele estar habilitado de forma predeterminada. El filtrado de ruta inversa es un filtro para paquetes entrantes que intenta verificar que una respuesta a este paquete vaya a la misma interfaz en la que se recibe el paquete. Esto es bueno en una red común donde el enrutamiento es simétrico, pero en su caso, necesita un enrutamiento asimétrico, por lo que podría desactivar el filtrado de ruta inversa en la interfaz donde recibe los paquetes, o al menos reducirlo para que solo verifique si la IP de origen es enrutable:

node1# sysctl -w net.ipv4.conf.eth0.rp_filter=2
node2# sysctl -w net.ipv4.conf.eth0.rp_filter=2
node3# sysctl -w net.ipv4.conf.eth0.rp_filter=2

La documentación sobre el filtrado de ruta inversa y otros controles está disponible en la documentación del kernel, en Documentation/networking/ip-sysctl.txt. Dónde encontrarlo depende de su distribución (o simplemente busque en la web ip-sysctl.txt).

¡Feliz bucle!

información relacionada