Primeiro, cada PC precisa usar o próximo como porta de entrada para os intertubes:
PC1# ip route add default via 1.1.1.2 # PC2's address where it can join PC1
PC2# ip route add default via 2.1.1.2 # PC3's address where it can join PC2
PC3# ip route add default via 3.1.1.2 # PC4's address where it can join PC3
E como é uma rota padrão, isso significa que agora cada computador pode acessar o próximo. Então, agora, todo o PC pode (teoricamente, se rp_filter¹
não estiver habilitado) enviar pacotes para o próximo e para a internet. No entanto, não há caminho de retorno.
Para isso, cada PC precisa ser capaz de acessar todos os anteriores não conectados diretamente.
PC1 não tem um anterior, então não há problema. PC2 está diretamente conectado ao PC1, então ainda não há problema. Para PC3, ele precisa rotear para PC1 via PC2:
PC3# ip route add 1.1.1.1/? via 2.1.1.1 # PC1's network via PC2
# Fill the '?' according to PC1's network mask. it should include 1.1.1.2.
Agora, o PC3 e o PC1 devem poder efetuar o ping uns aos outros. Caso contrário, verifique se o PC2 tem o encaminhamento ativado (sysctl -w net.ipv4.eth? .Forwarding = 1 para ambas as interfaces). Certifique-se de que todo o seu PC tenha esta opção definida, exceto no PC1, onde é inútil.
Agora, o PC4 precisa de uma rota para PC2 e PC1 via PC3.
PC4# ip route add 1.1.1.1/? via 3.1.1.1 # PC1's network via PC3
PC4# ip route add 2.1.1.1/? via 3.1.1.1 # PC2's network via PC3
Agora, todo o seu PC deve poder fazer o ping uns aos outros. Caso contrário, verifique sua configuração novamente e verifique se o encaminhamento está ativado.
Agora, conectar-se à internet deve funcionar. se o PC4 precisar do NAT para acessar a Internet, configure um NAT no PC4, sem tocar nas tabelas de roteamento.
¹ rp_filter
é uma opção geralmente útil, mas torna o teste mais complicado: verifica se o caminho inverso está correto antes de aceitar um pacote. Se um pacote é recebido da eth0 do ip 1.1.1.1, então ele verifica que 1.1.1.1 é roteado via eth0. Se não for o caso, ele rejeita o pacote. Portanto, rp_filter
não tolera configurações parcialmente configuradas, mas quando sua configuração estiver completa, rp_filter
poderá ser ativado e funcionará bem. rp_filter
é ativado por padrão em algumas distribuições do Linux como medida de segurança.