无需手动键入规则,您可以iptables
将规则添加到适当的链中,然后保存它们。这将允许您实时调试规则,确认它们正确无误,而不必像看起来那样将其添加到文件中。
要打开端口80,请执行以下操作:
$ sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo /etc/init.d/iptables save
最后一条命令将保存添加的规则。这是我用来打开网络流量端口的规则。
为什么您的规则导致了问题
如果您注意到要使用的规则:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
有一个名为“ RH-Firewall-1-INPUT”的链。如果您没有此链,也没有该链与该INPUT
链的链接,那么此规则将永远无法实现。该规则可能如下所示:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
或者您的INPUT
链条应RH-Firewall-1-INPUT
使用以下规则链接到该链条:
$ sudo iptables --list
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
....
注意:您可以使用此命令查看具有哪些链:
$ sudo iptables -L| grep Chain
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
...
同样,可能需要修改状态,以便也允许现有连接。
-A INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 80 -j ACCEPT
同样,当您使用-A
开关时,您会将规则附加到chain INPUT
。如果之前有其他规则正在阻止和/或干扰此规则的实现,则它将永远不会执行。因此,您可能希望通过插入而不是附加将其移至顶部,如下所示:
-I INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 80 -j ACCEPT
使用GUI
防火墙可能是复杂的野兽。因此,您可能想尝试使用TUI(TUI是终端的GUI)。
$ sudo system-config-firewall-tui
然后,您可以浏览各个屏幕的设置iptables
规则。
参考文献