Ping de Linux entre 2 espacios de nombres de red

Ping de Linux entre 2 espacios de nombres de red

Silencio nuevo en las redes Linux y no pude encontrar una respuesta a preguntas similares

Intentando crear 2 espacios de nombres y hacer ping entre ellos

ip netns add red;
ip netns add blue;

ip link add dev v-red type veth peer name v-blue;
ip link set dev v-red netns red;
ip link set dev v-blue netns blue;

ip netns exec red ip addr add 192.168.15.1 dev v-red;
ip netns exec blue ip addr add 192.168.15.2 dev v-blue;

ip netns exec red ip link set dev v-red up;
ip netns exec blue ip link set dev v-blue up;

ip netns exec red ping 192.168.15.2;
-> ping: connect: Network is unreachable

Lo que busqué al depurar

ip netns exec blue ifconfig
v-blue: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.15.2  netmask 255.255.255.255  broadcast 0.0.0.0

ip netns exec red ifconfig
v-red: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.15.1  netmask 255.255.255.255  broadcast 0.0.0.0

Respuesta1

Los dos dispositivos se encuentran en dos redes lógicas /32 diferentes y no hay ninguna ruta o tabla de enrutamiento que indique la manera de contactar con cada host.

Si ejecutas # ip netns exec red ip route get 192.168.15.2te responderá con RTNETLINK answers: Network is unreachable. Porque la tabla de enrutamiento no tiene respuesta sobre cómo enviar un paquete a la red 192.168.15.2/32.

Sin embargo, si agrega las rutas en ambas direcciones, esto debería actuar como una pista de que los dos hosts son vecinos (más bien técnicamente pares conectados directamente) y los paquetes deberían enviarse.

ip netns exec red ip route add 192.168.15.2/32 dev v-red
ip netns exec blue ip route add 192.168.15.1/32 dev v-blue

Luego puede imprimir la tabla de enrutamiento de una y ver cómo se indica ahora una ruta.

ip netns exec blue ip route list
192.168.15.1 dev v-blue scope link

Tenga en cuenta que es completamente válido utilizar una ruta predeterminada aquí ( ip netns exec red ip route add default dev v-red), ya que cubre todos los hosts, no solo el que sabe que existe en el otro lado, pero para comprender cuál es el problema aquí, agregué el hosts específicos con los que buscaba comunicarse.

En este punto, (si los firewalls lo permiten) el ping debería funcionar como se esperaba.

Respuesta2

Todo fue explicado por la respuesta anterior. Estoy tratando de explicar más explicando esbozando su configuración. Le falta enrutamiento en cada espacio de nombres. Solo tenga en cuenta que un espacio de nombres es una instancia completa de una pila de enrutamiento TCP/IP (ARP, interfaces, enrutamiento, reglas de firewall, etc.).

Tu configuración

Espero que esto ayude.

Respuesta3

Si su intención era tener espacios de nombres rojo y azul en la misma red, es posible que desee utilizar lo siguiente, que elimina el enrutador.

ip netns exec ruta ip roja agregar 192.168.15.2/24 dev v-red

ip netns exec ruta ip azul agregar 192.168.15.1/24 dev v-blue

información relacionada