添加Iptables规则后无法访问端口号80和443

时间:2015-08-21 07:49:43

标签: linux tcp centos iptables

在我的CentOS 6中,我添加了一个像DROP一样的IPtables规则,如

  

iptables -P INPUT DROP

然后我使用此命令允许端口号为22,80,443,

  

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

     

iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

     

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

现在可以使用putty访问SSH。但我无法访问互联网。我必须知道确切的问题。请帮帮我。

1 个答案:

答案 0 :(得分:2)

Ofcourse 您无法访问互联网。您刚添加了一条规则,可以丢弃所有传入的流量(流入端口22,80和443的流量除外)。

当您尝试访问互联网时(如果您使用的是浏览器),您的计算机会建立连接

<local IP>:<port1>  <---->  <remote IP>:80

当远程服务器响应你时,它将回复你发送请求的同一个port1(不会是22,或80或443.这将是一个通常高于32768的数字),所以它会被iptables丢掉。

请尝试以下规则:

iptables -P INPUT DROP
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

第二条规则告诉IP表接受来自我们的流量,如果它来到我们用来发送传出流量的端口。这将允许您查看您正在删除的服务器的响应。

然而,DNS流量仍然存在问题,因为它使用UDP而不是TCP。您可以通过将第一个规则更改为:

来解决此问题
iptables -P INPUT -p tcp DROP

因此它只会丢弃TCP流量,但不会丢弃UDP流量。可能还有其他方法可以解决DNS问题,具体取决于您想要做什么。

所以你的最终规则集应如下所示:

iptables -P INPUT -p tcp DROP
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT