Essa é uma coisa muito básica de rede: se você deseja conectar diferentes segmentos de LAN, você precisa de um roteador . Você não precisa de NAT, você não precisa de iptables
, você apenas direciona, simples e simples.
Por alguma razão as pessoas parecem achar que o roteamento precisa de pelo menos NAT ou iptables
, e a internet está cheia de conselhos para esse fim. Realmente não é necessário, e uma implicância minha.
Tudo o que você precisa fazer é
1) Ativar o encaminhamento no servidor # 2. Isso já foi descrito (adicione um arquivo em /etc/sysctl.d/
, reinicialize e veja se cat /proc/sys/net/ipv4/ip_forward
mostra 1
ou ative-o diretamente com echo 1 > /proc/sys/net/ipv4/ip_forward
).
2) Defina uma rota em todos os hosts que desejam usar o gateway . É o que a maioria das pessoas esquece. Então, no servidor # 1, você precisa de algo como
ip route add 10.8.0.0/24 dev enp0s17 via 192.168.56.120
ip route add 10.0.4.0/24 dev enp0s17 via 192.168.56.120
e o mesmo em todos os outros hosts na LAN A e B que desejam acessar a LAN C e D. No servidor # 3 (e em todos os outros hosts), você precisa
ip route add 192.168.56.0/24 dev tun0 via 10.8.0.1
Isso diz a cada host que quando quiser alcançar a LAN remota, ela deve passar pelo servidor nº 2, com o endereço IP apropriado do servidor nº 2 na LAN local.
Você pode testar o roteamento com ip route get a.b.c.d
no servidor # 1 e no servidor # 3. Agora teste com ping
. Se algo ainda estiver errado, depure com tcpdump
. Se um firewall estiver no caminho, desative-o conforme necessário.
Quando tudo funcionar, use alguma forma de tornar as rotas permanentes, por exemplo, distribuí-las via DHCP ou adicioná-las a um arquivo de configuração adequado.