当我尝试访问正在侦听端口8011的Web服务器时,出现奇怪的行为我configuration了iptables来启用此端口,其外观如下所示:
> :INPUT ACCEPT [0:0] :FORWARD ACCEPT > [0:0] :OUTPUT ACCEPT [844:101801] > :RH-Firewall-1-INPUT - [0:0] > -A INPUT -j RH-Firewall-1-INPUT > -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT > -A INPUT -p tcp -m tcp --dport 8011 -j ACCEPT > -A INPUT -p tcp -m tcp --dport 81 -j ACCEPT > -A FORWARD -j RH-Firewall-1-INPUT > -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT > -A RH-Firewall-1-INPUT -i lo -j ACCEPT > -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT > -A RH-Firewall-1-INPUT -p esp -j ACCEPT > -A RH-Firewall-1-INPUT -p ah -j ACCEPT > -A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT > -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT > -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT > -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT > -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT > -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
我运行服务器CentOS 5.5的wmware和即时通讯尝试从同一本地电脑访问networking服务器当我尝试访问Web服务器从与Lynn 10.0.0.3:8011的Centos访问我可以很好地访问服务器。
那么closuresiptable是唯一的解决scheme?
你几乎是正确的。 问题是你的数据包永远不会返回到INPUT链,因为有一个默认的拒绝,它匹配在RH-Firewall-1-INPUT末尾没有允许的所有内容。
要打破链条中发生的事情:
:INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [844:101801] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT
input界面中的所有内容都将由RH-Firewall-1-INPUT处理,如果数据包没有被链接匹配,我们将返回到这里。
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 8011 -j ACCEPT -A INPUT -p tcp -m tcp --dport 81 -j ACCEPT
这些将在RH-Firewall-1-INPUT后进行处理,当且仅当没有匹配时。
-A FORWARD -j RH-Firewall-1-INPUT
您正向链也应用了RH-Firewall-1-INPUT规则
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT -A RH-Firewall-1-INPUT -p ah -j ACCEPT -A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
这是一些默认的RH东西-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited该规则匹配所有的数据包。 并拒绝它们,因为我们匹配所有的数据包,我们永远不会返回到INPUT链。
你可以做一些事情来解决这个问题。 我的第一个build议是我build议保持统一的build议。 您可以像这样修改RH-Firewall-1-INPUT链:
-A RH-Firewall-1-INPUT -p tcp -m tcp -m state --state NEW --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp -m state --state NEW --dport 8011 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp -m state --state NEW--dport 81 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT -A RH-Firewall-1-INPUT -p ah -j ACCEPT -A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
你第二个select是在input规则后跳转。 我真的不build议这样做,因为它可能导致一些丑陋的规则,但是是一个有效的解决scheme,所以我把它放在这里:
:INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [844:101801] :RH-Firewall-1-INPUT - [0:0] -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 8011 -j ACCEPT -A INPUT -p tcp -m tcp --dport 81 -j ACCEPT -A INPUT -j RH-Firewall-1-INPUT
当你使用VMWare的机会是虚拟机networking是不同于你的,例如你的networking掩码可能是不同的等,如果你在Windows机器上做一个IPCONFIG和一个ifconfig在centos框和发布结果,你可能会得到一个更好的答案。