У меня есть интерфейсы eth0 (доступ в Интернет) и tap_vpn0 (интерфейс vpn tap, сеть 192.168.110.0/24). Что я хочу, так это DNAT всех входящих соединений через eth0 до 192.168.110.2, но ТОЛЬКО если НЕТ службы прослушивания на самом сервере (в основном, на самом VPN-сервере, но в основном на любой другой службе, отображаемой в netstat -plunt
, в том числе на самом деле SSH).
На данный момент то, что я делаю, это
iptables -t nat -I PREROUTING 1 -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p tcp --dport 5555 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p tcp --dport 992 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p tcp --dport 1194 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p udp --dport 4500 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p udp --dport 500 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p udp --dport 1701 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p udp --dport 54700 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p udp --dport 63486 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p udp --dport 68 -j ACCEPT
iptables -t nat -I PREROUTING 1 -i eth0 -p gre -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-destination 192.168.110.2
записывать длинный список статических исключений. Но есть ли способ сказать IPTables не DNAT в случае, если порт не закрыт на фактическом хосте, если пакет будет успешно обработан локально? Так, если для примера у меня есть случайный порт 9988, открытый позже на сервере, мне не нужно добавлять другое исключение, такое как iptables -t nat -I PREROUTING 1 -i eth0 -p tcp --dport 9988 -j ACCEPT
но это просто не будет DNAT-ред?