我在 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 上的接受规则位于拒绝规则之后。我提出的解决方案将解决此问题。