iptables, Apache2 и cgi

Я использую скрипт Perl cgi, предоставляющий некоторые отчеты о веб-сервере Apache на хосте за модемом DSL, который выполняет переадресацию портов. Обзор:

net <-> DSL_Modem (192.168.1.254) <-> Ap2host (eth1/192.168.1.222, eth0/10.0.0.1)

Модем DSL - открытый порт для переадресации портов 30016 на хост Apache2, а именно 192.168.1.222:30016,

Открытие скриптовой страницы из частной сети (10.0.0.0/8предоставляется хостом Apache2 через eth0) работает отлично.

Теперь, странная вещь в том, что если я настрою пересылку таким образом:

/sbin/iptables -t nat -A PREROUTING -p tcp -d 192.168.1.222 --dport 30016 -j DNAT --to-destination 10.0.0.1:80
/sbin/iptables -t nat -I POSTROUTING 1 -p tcp --dst 10.0.0.1 --dport 80 -j SNAT --to-source 10.0.0.1:30016
/sbin/iptables -I genfilter 1 -p tcp -m state --state NEW -m tcp --dport 30016 -j ACCEPT

... браузер отображает содержимое скрипта Perl, когда URL открывается из Интернета (URL, например, http://example.com:30016/).

Но если я сделаю это вместо этого:

/sbin/iptables -t nat -I PREROUTING -p tcp -d 192.168.1.222 --dport 30050 -j REDIRECT --to-port 80
/sbin/iptables -I genfilter 1 -p tcp -m state --state NEW -m tcp --dport 30050 -j ACCEPT

..browser открывает сгенерированную страницу правильно (опять же из интернета, конечно).

Почему должен -j REDIRECT работать пока DNAT/SNAT переадресация портов будет проблемой? Это (DNAT/SNAT) способ переадресации портов прекрасно работает для других служб, например, переадресация портов RDP,

0 ответов

Другие вопросы по тегам