Você precisa de 4 coisas.
- manipula a conexão de entrada:
-
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 10.1.2.21:80
-
- permitir através do firewall:
-
iptables -t filter -A FORWARD -i eth0 -o eth2 -p tcp --dport 80 -j ACCEPT
-
- permite o tráfego de resposta pelo firewall:
-
iptables -t filter -A FORWARD -i eth2 -o eth0 -p tcp --sport 80 -j ACCEPT
-
- fonte NAT ou MASQ a resposta de saída:
-
iptables -t nat -A POSTROUTING -i eth2 -o eth0 -s 10.1.2.21 --sport 80 -j MASQERUADE
-
Os dois no meio podem ser omitidos se você não bloquear nenhum tráfego no seu firewall. O principal é que você precisa dizer à sua caixa como lidar com o tráfego de entrada destinado à porta 80 ( --dport 80
) e como lidar com o tráfego de resposta (source nat it / masq it).
Uma pequena informação sobre as cadeias. A cadeia NAT PREROUTING manipula (altera) as informações do cabeçalho do pacote ANTES que o pacote seja encaminhado / encaminhado (isto é, atravessa a cadeia FORWARD). A cadeia de POSTROUTING NAT manipula o pacote após o roteamento. Então, quando o pacote atinge o público, você precisa alterar o endereço de destino para o endereço interno do servidor web. Em seguida, ele roteará o pacote e atravessará a corrente. Se você executar um despejo TCP no servidor da Web, verá o tráfego de entrada e a resposta de saída. Quando a resposta de saída atingir o firewall, ela será roteada e, em seguida, cruzará a cadeia POSTROUTING. Em seguida, o pacote será mutilado novamente para alterar o endereço de origem do intervalo de IP privado RFC1918 de 10.1.x.x para o IP principal público em eth0.