Crie uma rede de loop ethernet - como configurar rotas

2

Eu tenho uma rede que precisa ser configurada como um loop. Consiste em 3 nós, cada um dos quais tem 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    |
+--<----------------------------<--------------------------------------------+

Eu 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, o pedido do Nó 1 chega ao Nó 3. No entanto, o Nó 3 não responde, ele não gera nem mesmo a resposta (pelo menos eu posso capturar com o wireshark).

Poderia, por favor, me dar alguma dica?

TA

    
por jlanza 10.01.2013 / 17:58

3 respostas

2

Quando um nó escolhe o endereço IP source para um pacote que está originando, a menos que seja restrito de outra forma, ele normalmente escolhe o endereço IP "mais próximo" do próximo hop na rota para o destino do pacote. / p>

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 de 10.0.1.2 é 10.0.1.1 , não 10.0.3.1 . (Um endereço IP na mesma sub-rede que o 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. 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.

    
por 10.01.2013 / 18:21
1

Os nós não estão repetindo corretamente para impedir a difusão de ponte em fuga. Eu recomendo que você execute o Spanning Tree Protocol. Isso permitirá que você coloque rotas em pleno funcionamento 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.

    
por 10.01.2013 / 18:11
0

( /sbin/route está obsoleto, use ip route ).

Se você quiser que seus pacotes viajem somente em uma direção, isso significa que cada nó precisa usar o próximo nó como seu gateway, seja qual for 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 inverso geralmente é ativada por padrão. A filtragem de caminho inverso é um filtro para o pacote de entrada que tenta verificar se uma resposta a este pacote iria para a mesma interface em que o pacote é recebido. Isso é uma coisa boa na rede comum 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-los para 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

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

Loop feliz!

    
por 10.01.2013 / 19:49