iptables、Apache2 和 cgi

iptables、Apache2 和 cgi

我正在运行 Perl cgi 脚本,该脚本提供有关 DSL 调制解调器后面的主机上进行端口转发的 Apache Web 服务器的一些报告。概述:

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

...浏览器在从互联网打开 URL 时显示 Perl 脚本的内容(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

..浏览器正确打开生成的页面(当然也是来自互联网)。

为什么在端口转发出现问题-j REDIRECT时仍能正常工作?对于我来说,这种 ( ) 端口转发方式对于其他服务(例如端口转发)来说运行良好。DNAT/SNATDNAT/SNATRDP

相关内容