
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.4
via 10.20.10.4
e 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.4
na 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 chamadappp1
seppp0
nã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).