Ping do Linux entre 2 namespaces de rede

Ping do Linux entre 2 namespaces de rede

Ainda novo em redes Linux e não consegui encontrar uma resposta para perguntas semelhantes

Tentando criar 2 namespaces e fazer ping entre eles

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

O que procurei ao 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

Responder1

Os dois dispositivos ficam em duas redes lógicas /32 diferentes e não há nenhuma rota ou tabela de roteamento que indique a maneira de contatar cada host.

Se você executar, # ip netns exec red ip route get 192.168.15.2ele responderá com RTNETLINK answers: Network is unreachable. Porque a tabela de roteamento não tem resposta sobre como enviar um pacote para a rede 192.168.15.2/32.

No entanto, se você adicionar as rotas em ambas as direções, isso deverá funcionar como uma dica de que os dois hosts são vizinhos (tecnicamente, mais parecidos com pares conectados diretamente) e os pacotes devem ser enviados.

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

Você pode então imprimir a tabela de roteamento para ver como uma rota é instruída.

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

Esteja ciente de que é totalmente válido usar uma rota padrão aqui ( ip netns exec red ip route add default dev v-red), já que isso cobre todos os hosts, não apenas aquele que você sabe que existe do outro lado, mas para entender qual é o problema aqui, adicionei o hosts específicos com os quais você estava procurando se comunicar.

Neste ponto, (se os firewalls permitirem), o ping deve funcionar conforme o esperado.

Responder2

Tudo foi explicado pela resposta acima. Estou tentando explicar melhor esboçando sua configuração. Falta roteamento em cada namespace. Apenas tenha em mente que um namespace é uma instância completa de uma pilha de roteamento TCP/IP (ARP, interfaces, roteamento, regras de firewall, etc.).

Sua configuração

Espero que isto ajude.

Responder3

Se sua intenção era ter namespaces vermelho e azul na mesma rede, você pode usar o seguinte, o que elimina o roteador.

ip netns exec vermelho ip rota adicionar 192.168.15.2/24 dev v-red

ip netns exec azul ip rota adicionar 192.168.15.1/24 dev v-blue

informação relacionada