Ola amigo,
Olha bem grande esse script, e isso só dificulta a manutenção.
Porém existe uma parte ali onde tem uma regra
drop-and-log-it que está no final da chain forward! Tudo o que não foi identificado antes será dropado!
Basicamente não é só colocar as regras nas chains PRE e POSTROUTING da tabela nat, é necessário aceitar esse trafego na chain FORWARD da tabela filter! E como a chain
drop-and-log-it dropa tudo o que não estiver identificado você não consegue acessar o servidor!
As suas regras de redirecionamento eu as deixaria assim:
Código:
$IPTABLES -t nat -A PREROUTING -p tcp -s <ip externo> --dport 80 -j DNAT --to 192.168.20.2
$IPTABLES -t nat -A POSTROUTING -s 192.168.20.2 -j SNAT --to <ip externo>
E além dessas regras falta essa para aceitar o trafego:
Código:
iptables -t filter -I FORWARD -d 192.168.20.2 -p tcp --dport 80 -j ACCEPT
iptables -t filter -I FORWARD -s 192.168.20.2 -p tcp --sport 80 -j ACCEPT
Testa aee