Você precisará de uma combinação de DNAT e SNAT e precisará ativar o ip_forwarding.
Primeiro, verifique o ip_forwarding:
cat /proc/sys/net/ipv4/ip_forward
Se for 1 (habilitado), vá em frente. Caso contrário, você terá que colocar net.ipv4.ip_forward=1
em /etc/sysctl.conf
e executar sysctl -p
.
A primeira regra é DNAT (suponha 8.8.8.8
como o IP externo e 192.168.0.10
como interno):
iptables -t nat -A PREROUTING -d 8.8.8.8 -j DNAT --to-destination 192.168.0.10
Quando um sistema externo (por exemplo, 200.100.50.25
) envia um pacote que atinge 8.8.8.8, o DESTINATION
é alterado para 192.168.0.10
e enviado para fora. Mas a fonte será 200.100.50.25
, o pacote será processado e o pacote de resposta poderá:
-
Seja descartado por 192.168.0.10 que talvez não saiba como rotear. Não desejável.
-
Ser enviado por 192.168.0.10 para o gateway padrão e para a internet. Assim que atingir
200.100.50.25
, este sistema nunca ouviu falar de192.168.0.10
e irá descartar o pacote. Não é bom. -
Seja descartado no primeiro salto, pois
192.168.0.10
é um endereço particular e não pode ser roteado na Internet.
Para resolver isso, você precisa da segunda regra, SNAT:
iptables -t nat -A POSTROUTING -s 192.168.0.10 -j SNAT --to-source 8.8.8.8
Com esta regra, todos os pacotes que vêm de 192.168.0.10
terão a fonte alterada para 8.8.8.8
e enviados.
O efeito colateral é que todo log em 192.168.0.10
mostrará 8.8.8.8
como o cliente, não o cliente real. Acompanhar os abusadores será um pouco mais difícil.