在我的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。但我无法访问互联网。我必须知道确切的问题。请帮帮我。
答案 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