Roteamento entre várias sub-redes

10

Digamos que eu quero criar uma rede interna com 4 sub-redes. Não há roteador ou switch central. Eu tenho uma "sub-rede de gerenciamento" disponível para vincular os gateways nas quatro sub-redes (192.168.0.0/24). O diagrama geral ficaria assim:

10.0.1.0/24 <-> 10.0.2.0/24 <-> 10.0.3.0/24 <-> 10.0.4.0/24

Em palavras, eu configuro uma única caixa Linux em cada sub-rede com 2 interfaces, 10.0.x.1 e 192.168.0.x. Eles funcionam como dispositivos de gateway para cada sub-rede. Haverá vários hosts para cada sub-rede 10.x / 24. Outros hosts terão apenas 1 interface disponível como 10.0.xx

Quero que cada host possa executar ping em outro host em qualquer outra sub-rede. Minha pergunta é a primeira: isso é possível? E segundo, se sim, preciso de ajuda para configurar iptables e / ou rotas. Eu tenho experimentado isso, mas só posso encontrar uma solução que permita pings em uma direção (pacotes icmp são apenas um exemplo, eu gostaria de ter recursos completos de rede entre hosts, por exemplo, ssh, telnet, ftp, etc.) .

linha cinza
fonte

Respostas:

8

Ok, então você tem cinco redes 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, 10.0.4.0/24e 192.168.0.0/24, e quatro caixas de roteamento entre eles. Digamos que os caixas de roteamento têm endereços 10.0.1.1/192.168.0.1, 10.0.2.1/192.168.0.2, 10.0.3.1/192.168.0.3, e 10.0.4.1/192.168.0.4.

Você precisará adicionar rotas estáticas às outras 10.0.x.0/24redes em cada caixa do roteador, com comandos como este (EDITADO!):

# on the 10.0.1.1 box
ip route add 10.0.2.0/24 via 192.168.0.2
ip route add 10.0.3.0/24 via 192.168.0.3
ip route add 10.0.4.0/24 via 192.168.0.4

e as rotas correspondentes nas outras caixas do roteador. Nas caixas sem roteamento com apenas uma interface, defina a rota padrão para a qual apontar 10.0.x.1. Claro que você também terá que adicionar os endereços estáticos e máscaras de rede em todas as interfaces.

Observe também que o linux não funciona como roteador por padrão; você precisará habilitar o encaminhamento de pacotes com:

echo 1 > /proc/sys/net/ipv4/ip_forward

Os ipcomandos acima não tornam as configurações persistentes, pois isso depende da distribuição.

Como eu disse, não testei isso e posso ter esquecido algo.

Johan Myréen
fonte
Obrigado pela ajuda aqui. O que você recomendou funciona quando eu sigo o roteador para o roteador (10.0.1.1 a 10.0.2.1), mas não quando sigo um host diferente. Por exemplo, o ping de 10.0.1.1 a 10.0.2.2 resulta em nenhum tráfego sendo roteado para o host 10.0.2.2. Você sugeriria fazer alguma manipulação do iptables de alguma forma? Venho experimentando isso há alguns dias, mas sem sucesso.
Greyline
Técnicas de roteamento padrão devem ser suficientes. Aqui está uma lista de verificação: 1. todos os endereços devem ser configurados nos hosts (por exemplo, ip addr add 10.0.2.2/24 dev eth0), 2. as rotas devem ser configuradas nas quatro caixas do roteador como acima, 3. a rota padrão nas caixas de não-roteador devem ser configuradas para apontar para a caixa de roteamento na rede (por exemplo, rota ip adicionar padrão via 10.0.1.1), 4. cat / proc / sys / net / ipv4 / ip_forward nas quatro caixas de roteador imprima "1".
Johan Myréen 25/09
Corrigi um erro nos comandos ip route acima. Na verdade, eu também testei essa configuração, embora apenas com quatro máquinas: duas caixas de roteamento e dois hosts nos lados 10.0.x.0. Funciona!
Johan Myréen 26/09/16
Johan, obrigado por sua contribuição adicional. Essa configuração funciona. Acontece que a imagem do Linux que eu estava usando tinha regras padrão do iptables que estavam sendo problemáticas. Obrigado por me ajudar no meu aprendizado sobre isso.
greyline 27/09/16