iptables FORWARD todas as conexões de um cliente através de um gateway para um servidor

iptables FORWARD todas as conexões de um cliente através de um gateway para um servidor

Gostaria de encaminhar todas as portas do meu cliente (windows) para um servidor (windows) que esteja atrás de um Gateway (linux).

Minha topologia de rede é a seguinte:

10.20.10.14 --> 10.20.10.4 --> 192.168.1.1 --> 192.168.1.4
   client          ppp0           eth0          server
                |--------- Gateway -------|

onde o dispositivo Gateway possui dois dispositivos de rede: ppp0 e eth0.

Gostaria que no caso de uma conexão de rede entre cliente e ppp0, o dispositivo servidor veja os dados na mesma porta em que foram enviados do cliente.

Ou seja, o servidor deve pensar que se comunica diretamente com o cliente e os Gateways são transparentes neste caso.

Além disso, gostaria de saber como remover esta regra.

Alguma ideia?

Observação: sou o administrador de todos os dispositivos.

Responder1

Traduzindo as regras do inglês para as regras do iptables, apenas esta regra é necessária:

iptables -t nat -A PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4

A porta de destino não é alterada (e a porta de origem também não deve ser, exceto em casos raros quando o cliente se conecta simultaneamente diretamente ao servidor).

Nada impede que o cliente adicione manualmente uma rota ao 192.168.1.4via 10.20.10.4e acesse diretamente o servidor. Se você não quiser isso, para manter o IP do servidor oculto, você também pode adicionar esta regra:

iptables -I FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP

Isso eliminará o acesso direto ao servidor que não foi DNATado.

Para remover essas regras, basta usar -D:

iptables -D FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP
iptables -t nat -D PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4

Observações aleatórias:

  • O encaminhamento de IP deve estar habilitado no Gateway, pois a conexão DNATed é encaminhada. O mais fácil de fazer isso seria echo 1 > /proc/sys/net/ipv4/ip_forward.
  • o servidor precisa, é claro, de uma rota para o cliente aceitar suas conexões, por exemplo, ter Gateway ( 192.168.1.1) como gateway padrão.
  • -i ppp0é opcional e pode ser removido (ou substituído -d 10.20.10.4na regra PREROUTING, se preferir). Pode causar problemas se não for substituído por -i ppp+( +sendo um curinga): quando há uma falha/reconexão rápida do link, a nova interface ppp pode ser chamada ppp1se ppp0não tiver sido arrancada antes. As regras do iptables não corresponderiam mais.
  • os fluxos já estabelecidos não serão afetados quando a regra DNAT for removida, os fluxos mais recentes serão (ou seja, não chegarão ao servidor).

informação relacionada