No se puede hacer ping al espacio de nombres de la red interna

No se puede hacer ping al espacio de nombres de la red interna

He creado dos espacios de nombres de red, es decir, rojo y azul en la máquina centos de la siguiente manera:

[root@ip-xxx-xxx-xxx-xxx ~]# ip netns add red
[root@ip-xxx-xxx-xxx-xxx ~]# ip netns add blue

[root@ip-xxx-xxx-xxx-xxx ~]# ip netns
blue
red

Creé el cable virtual 'veth-red' y 'veth-blue' y luego los conecté usando el siguiente comando:

[root@ip-xxx-xxx-xxx-xxx ~]# ip link add veth-red type veth peer name veth-blue

Luego adjunté la interfaz apropiada a cada espacio de nombres de la siguiente manera:

[root@ip-xxx-xxx-xxx-xxx ~]# ip link set veth-red netns red
[root@ip-xxx-xxx-xxx-xxx ~]# ip link set veth-blue netns blue

Luego asigné direcciones IP a cada uno de estos espacios de nombres de la siguiente manera:

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n red addr add 192.168.15.1 dev veth-red

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n blue addr add 192.168.15.2 dev veth-blue

Luego abro la interfaz usando el comando de configuración del enlace IP para cada dispositivo dentro de los respectivos espacios de nombres.

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n red link set veth-red up
[root@ip-xxx-xxx-xxx-xxx ~]# ip -n blue link set veth-blue up

Luego, cuando reviso las interfaces dentro de cada espacio de nombres, obtengo 'veth-red' en el espacio de nombres 'rojo' y 'veth-blue' en el espacio de nombres azul de la siguiente manera:

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n red link
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
17: veth-red@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 7e:9d:42:79:2d:2f brd ff:ff:ff:ff:ff:ff link-netnsid 1
[root@ip-xxx-xxx-xxx-xxx ~]# ip -n blue link
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
16: veth-blue@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 62:aa:79:55:46:56 brd ff:ff:ff:ff:ff:ff link-netnsid 0

Mi duda surge cuando intento enviar un ping de rojo a azul (dirección IP: 192.168.15.2) de la siguiente manera:

[root@ip-xxx-xxx-xxx-xxx ~]# ip netns exec red ping 192.168.15.2
connect: Network is unreachable

¿Alguien puede decirme por qué aparece el mensaje "La red es inalcanzable" cuando hice todo según las reglas? Por favor ayuda

Respuesta1

Puede solucionar problemas con el routecomando:

# ip -n red route get 192.168.15.2
RTNETLINK answers: Network is unreachable

Esa es una buena pista. No tienes una ruta adecuada en los espacios de nombres. En este caso es porque te perdiste la máscara de red al agregar la dirección IP:

# ip -o -n red a
7: veth-red    inet 192.168.15.1/32 scope global veth-red\       valid_lft forever preferred_lft forever 

Intente agregar la dirección IP con a /24para que la tabla de enrutamiento sepa que puede llegar a otras IP en la red a través de esta interfaz.

  1. borre todas las direcciones IP primero
# ip -n red  addr flush dev veth-red
# ip -n blue addr flush dev veth-blue

  1. Añade la IP correctacon máscara de red(Usando /24lo menos confuso, pero incluso /30funcionará para su ejemplo).
# ip -n red  addr add 192.168.15.1/24 dev veth-red
# ip -n blue addr add 192.168.15.2/24 dev veth-blue

Y tu estas listo:

# ip netns exec red ping -c2 192.168.15.2
PING 192.168.15.2 (192.168.15.2) 56(84) bytes of data.
64 bytes from 192.168.15.2: icmp_seq=1 ttl=64 time=0.034 ms
64 bytes from 192.168.15.2: icmp_seq=2 ttl=64 time=0.022 ms

--- 192.168.15.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1035ms
rtt min/avg/max/mdev = 0.022/0.028/0.034/0.006 ms```

información relacionada