在 iptables 中打开端口不起作用

在 iptables 中打开端口不起作用

我在 COMMIT 之前添加了以下行/etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

然后我使用service iptables restart重新启动iptables,但端口仍然关闭 - 如果我停止iptables service iptables stop,端口就会打开。

iptables -L -n

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

答案1

说到iptables顺序,非常重要的:

REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80 

因此,你首先拒绝任何不符合先前规则的内容,然后然后您接受端口 80。这就是此规则永远不会被触发的原因。尝试使用 -I 而不是 -A。

答案2

兄弟使用下面的 CLI。从文件的位置来看,您似乎在 CentOS 或 Redhat 上。

iptables -I 输入 1 -m 状态 --状态新 -m tcp -p tcp --dport 80 -j 接受

这会将此规则置于顶部。之后,按如下所示保存。

服务 iptables 保存

您无需重新启动服务,它将立即生效。从您的帖子中我可以看到,您附加的端口 80 上的接受规则位于拒绝规则之后。我提出的解决方案将解决此问题。

相关内容