Estou tentando configurar meu computador como um gateway entre duas redes, mas não consigo fazê-lo funcionar por alguns motivos
Aqui está uma representação da rede:
192.168.1.101 192.168.1.102 192.168.1.103 ...
| | |
\------------+------+-------+--------...
|
192.168.1.200 (eth1)
PC
(192.168.2.101 192.168.2.102 192.168.2.103 ...)
eth0:1 eth0:2 eth0:3
| | |
\------------+------+-------+--------...
|
192.168.2.200 (eth0)
|
...
Meu computador possui N interfaces virtuais (eth0: *) com seus próprios endereços IP na interface 192.168.2.200 (eth0). Eu quero que qualquer conexão (TCP principalmente) que ataca as interfaces eth0: * seja encaminhada para o servidor 192.168.1.1 equivalente.
Eu tentei usar o redirecionamento executável, mas como os servidores usam números de porta aleatórios para ouvir (não posso mudar isso) tive que reiniciar os processos toda vez que fiz alguns testes.
Então usei regras do iptables como estas (para apenas um servidor para testes):
iptables -t nat -A PREROUTING -d 192.168.2.101 -j DNAT --to-destination 192.168.1.101
iptables -t nat -A POSTROUTING -d 192.168.1.101 -j SNAT --to-source 192.168.2.101
iptables -A FORWARD -i 192.168.2.101 -d 192.168.1.101 -j ACCEPT
Mas qualquer conexão para 192.168.2.101:80 retorna "Conexão recusada" enquanto qualquer conexão com 192.168.1.101:80 é aceita.
Então eu "joguei" com as regras do iptables sem redefinir as regras e consegui me conectar ao 192.168.2.101:80 que era o servidor correto; mas quando tentei outra conexão (com um servidor web temporário no TCP / 6666), a conexão foi rejeitada como acima.
Você tem um exemplo completo para fazê-lo funcionar, por favor?
Nota: Eu removi todas as entradas no iptables para fazer outros testes, então eu reiniciei do zero sem o que eu fiz antes ...
@lain: habilitei o encaminhamento de IP
$ cat /proc/sys/net/ipv4/ip_forward
1