我刚刚在新的CentOS 6.5安装上安装了apache。我在浏览器地址栏中输入了ip地址,但无法连接。然后我关闭了iptables,然后刷新了,这次我可以连接。
很明显,iptables阻止了http(端口80)流量。
所以我看了一下iptables规则(在新的Centos安装后不要记得):
[root@centos ~]# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
现在,我不是iptables专家,但我认为我已经足够理解这个简单的事情。但我很困惑,因为INPUT链中的第3行是这样的:
ACCEPT all -- anywhere anywhere
对于任何协议,从任何来源,到任何目的地,似乎都在说"
所以我希望我可以连接到网站(tcp,端口80)。但我不能。所以我一定误解了iptables的工作原理或者列表的含义。
有人可以解释为什么上述规则不允许传入的http连接吗?
答案 0 :(得分:7)
我自己想通了。难怪我很困惑 - 上市并没有显示完整的故事。我使用-v(详细)选项再次尝试了它。
[root@centos ~]# iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
81194 118M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- any any anywhere anywhere
0 0 ACCEPT all -- lo any anywhere anywhere
7 364 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:ssh
21 2394 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
特别是,它现在也显示了INTERFACE。第三条规则,我认为非常宽松,实际上根本不允许,因为它只适用于系统的内部环回地址。
因此,来自外部的HTTP请求将在以太网接口上接收,而不是环回,第3条规则不适用,因此唯一匹配的是最终的REJECT规则。
希望这会帮助别人不要像我一样困惑。