Crie uma rede de loop Ethernet - como configurar rotas

Crie uma rede de loop Ethernet - como configurar rotas

Tenho uma rede que precisa ser configurada como loop. Consiste em 3 nós, cada um dos quais possui duas interfaces. O diagrama abaixo explica isso.

+--->(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    |
+--<----------------------------<--------------------------------------------+

Quero fazer um ping do Nó 1 para o Nó 3 para que a solicitação passe pelo Nó2 e a resposta vá diretamente para o Nó 1 do Nó 3.

node1$ ping 10.0.2.3

Eu configurei os nós 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

Ao executar o ping, a solicitação do Nó 1 chega ao Nó 3. Porém o Nó 3 não responde, não gera nem mesmo a resposta (pelo menos que consigo capturar com o wireshark).

Você poderia me dar alguma dica?

TA

Responder1

Quando um nó escolhe ofonteEndereço IP de um pacote que ele origina, a menos que haja restrição de outra forma, ele normalmente escolhe o endereço IP "mais próximo" do próximo salto na rota para o destino do pacote.

Do ponto de vista do Nó 1, o próximo salto para o Nó 3 é 10.0.1.2. O endereço IP do Nó 1 mais próximo 10.0.1.2é 10.0.1.1, não 10.0.3.1. (Um endereço IP na mesma sub-rede do destino é considerado “mais próximo” do destino do que um endereço IP que não esteja na mesma sub-rede.)

Verifique o endereço IP de origem do ping. Muito provavelmente, é 10.0.1.1, não 10.0.3.1. Se o Nó 3 não tiver rota para 10.0.1.1, ele não poderá responder.

Responder2

Os nós não estão conseguindo repetir corretamente para evitar a transmissão da ponte descontrolada. Eu recomendo que você execute o Spanning Tree Protocol. Isso permitirá que você coloque rotas totalmente funcionais entre todos os nós. Não consigo pensar em outra maneira de fazer isso, a menos que você esteja disposto a limitar a conectividade entre determinados links na camada 2 ou na camada 3.

Responder3

( /sbin/routeestá obsoleto, use ip routeem seu lugar).

Se você deseja que seus pacotes viajem apenas em uma direção, isso significa que cada nó precisa usar o próximo nó como gateway, qualquer que seja o 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

No entanto, na maioria das distribuições, a filtragem de caminho reverso costuma ser habilitada por padrão. A filtragem de caminho reverso é um filtro para pacotes recebidos que tenta verificar se uma resposta a esse pacote iria para a mesma interface em que o pacote foi recebido. Isso é uma coisa boa em redes comuns onde o roteamento é simétrico, mas no seu caso, você precisa de roteamento assimétrico, então você pode simplesmente desabilitar a filtragem de caminho reverso na interface onde você recebe pacotes, ou pelo menos reduzi-la para apenas verificar se o IP de origem é roteável:

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

A documentação sobre filtragem de caminho reverso e outros botões está disponível na documentação do kernel, em Documentation/networking/ip-sysctl.txt. Onde encontrar isso depende da sua distribuição (ou apenas navegue na web ip-sysctl.txt).

Feliz looping!

informação relacionada