我想将端口 80 转发到 8080。因此我尝试编辑/etc/syscongfig/iptables
:
-A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
但得到:
# service iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: iptables-restore v1.4.7:
Line 8 seems to have a -t table option.
有什么问题?该怎么办?
答案1
文件是否/etc/syscongfig/iptables
具有适合 iptables-restore 的正确结构?
尝试手动将此规则添加到防火墙
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
并与命令/etc/sysconfig/iptables
的输出进行比较iptables-save
答案2
这是你的iptables
规则:
-A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
但我相信它应该是这样的:
-A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
注意-m tcp
添加了。虽然-p tcp
匹配规则或要检查的数据包的协议,-m tcp
但明确告诉 IPTables 匹配 TCP 数据包。这似乎令人困惑,但据我所知,在调用特定于端口的规则时-p tcp
需要与 配对。-m tcp
如果其他人可以扩展此要求背后的理由/逻辑,请在评论中提出意见。