【问题标题】:Can't Access Port number 80 and 443 after adding Iptables rules添加 iptables 规则后无法访问端口号 80 和 443
【发布时间】:2015-08-22 17:29:09
【问题描述】:

在我的 CentOS 6 中,我添加了一个 IPtables 规则,例如 DROP all policy like

iptables -P 输入删除

然后我用这个命令允许端口号 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。但我无法访问互联网。我必须知道这个的确切问题。?请帮帮我。

【问题讨论】:

  • 到目前为止,规则看起来还不错。您提供的信息很少,我们不能说更多。 http服务器是否正在运行?如果你再次彻底清除规则,它会起作用吗?
  • 只有这些规则?没有 ESTABLISHED 或 DNS 接受?
  • 离题。尝试 serverfault 或超级用户。

标签: linux tcp centos iptables


【解决方案1】:

当然你不能访问互联网。您刚刚添加了一个规则,该规则会丢弃所有传入流量(进入端口 22、80 和 443 的流量除外)。

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

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

当远程服务器响应您时,它将响应您发送请求的同一端口 1(不会是 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 2014-04-01
    • 2013-06-28
    • 2011-10-24
    • 2013-09-04
    相关资源
    最近更新 更多