我在 VM VirtualBox(具有静态 IP 的桥接以太网)上有一个 CentOS 7 映像,我尝试设置iptables
过滤器表,但遇到以下问题:
无论我做什么在端口 80 上打开 Apache 都不起作用(相反,如果我停止 iptables 服务,我可以毫无问题地加载网页)。我在某个地方发现一个可能的解决方案是编写一条规则来启用桥接。这是真的吗?无论如何,我在机器中找不到任何桥接配置。
我删除了端口 22 的默认规则,现在我什至无法从 SSH 登录,即使我认为我已恢复它。
这是 iptables 文件:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -j ACCEPT
-A INPUT -p tcp -m tcp --sport 137:139 --dport 137:139 -j ACCEPT
-A INPUT -p tcp -m tcp -m multiport --ports 445 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
*mangle
:PREROUTING ACCEPT [48:5579]
:INPUT ACCEPT [47:5507]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [39:4446]
:POSTROUTING ACCEPT [54:7320]
COMMIT
*nat
:PREROUTING ACCEPT [23:1557]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [7:548]
:POSTROUTING ACCEPT [7:548]
COMMIT
答案1
问题是这样的:
-A INPUT -j REJECT --reject-with icmp-host-prohibited
## More rules
iptables 按顺序遍历所有规则,它发现您首先拒绝所有 INPUT 包,即使您稍后接受它们。重新排序您的规则,以便拒绝位于最后,而您的接受位于最顶部。另外,删除重复的条目。那么它应该可以工作。
您无法同时访问 80 和 22 端口就是因为这个原因。