NAT лучше делать статически:
-A POSTROUTING -s 192.168.0.0/24 -o внутренний-интерфейс -j SNAT --to-source внешний-IP
-A FORWARD -i eth0 -o eth1 -j REJECT — вот это зачем?
Вот пример, как можно сделать.
*nat
:PREROUTING ACCEPT
:POSTROUTING ACCEPT
:OUTPUT ACCEPT
#Перенаправление портов
-A PREROUTING -i внешний-интерфейс -p tcp -m tcp --dport 80 -j DNAT --to-destination айпи-сервера:80
-A PREROUTING -i внешний-интерфейс -p tcp -m tcp --dport 8080 -j DNAT --to-destination айпи-сервера:8080
-A POSTROUTING -s внутренняя-сеть/24 -o внешний-интерфейс -j SNAT --to-source внешний-IP
COMMIT
*filter
:INPUT DROP
:FORWARD DROP
:OUTPUT ACCEPT
-A INPUT ! -i lo -m addrtype --src-type LOCAL -j DROP
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -p tcp -m conntrack --ctstate INVALID,NEW -m tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with icmp-port-unreachable
#Пропускаем установленные соединения
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#Пропускаем всё на локальном интерфейсе
-A INPUT -i lo -j ACCEPT
#Пропускаем всё из локальной сети
-A INPUT -i внутренний-интерфейс -j ACCEPT
#Открываем порты
-A FORWARD -i внешний-интерфейс -p tcp -m state --state NEW -m tcp -m multiport --dports 80,8080,3306,25,110 -j ACCEPT
COMMIT
Сохраняешь отдельно в iptables.conf, подгружаешь из своего скрипта так:
iptables-restore /path/to/iptables.conf