自从 iptables 诞生以来,我就一直在使用它进行端口转发。由于某种原因,在重启后,Centos 服务器上转发端口 80 的功能就失效了。我甚至从 Centos 7.7 更新到了 8。我可以转发其他端口,但不能转发 80。Firewalld 和 SELINUX 已禁用。HTTP 设置为 ACCEPT,与之前一样。
iptables 行是:
$IPTABLES -t nat -A PREROUTING --dst (public address) -p tcp --dport 80 -j DNAT --to-destination 192.x.x.x
我也尝试过在内部服务器地址末尾添加:80,但没有成功。
再次,我可以成功转发其他端口。我尝试转发到不同的内部服务器,所以它不是我要转发到的机器。
有任何想法吗?
谢谢,罗伯特
答案1
在已经存在规则的情况下尝试-I
代替。-A
查看你的 nat iptables 规则,并使用以下命令验证良好规则上的数据包数量是否增加:
iptables -t nat -L -n -v
然后删除错误的规则-D
答案2
RHEL 8(CentOS 紧随其后)正在将防火墙支持转移到 nftables。此外,他们还使用防火墙,如果启用,它可能会覆盖您已设置的任何 iptables。
请检查您安装并启用了什么防火墙软件,并禁用超出您使用范围的任何软件 - 它们会互相干扰。
答案3
修复方法是更改服务器上哪个接口(同一子网上的两个网卡)具有默认网关。我怀疑这是由于网络组件更新造成的,因为它已经这样工作了两年。
谢谢大家,罗伯特