Iptables 不允许来自开放端口的网络流量

Iptables 不允许来自开放端口的网络流量

我改变了 INPUT 链的策略,添加了以下命令。

iptables -P INPUT DROP

我插入了下一个规则以允许来自网络端口 80 和 443 的输入数据包,但端口仍然关闭(例如我无法使用 Web 浏览器)。

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

输出自iptables -L

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

我如何允许来自 HTTP 和 HTTPS 端口的网络流量?

答案1

在我看来,问题在于虽然允许流量流出您的网络,但不允许流量返回。通常有一条规则允许与缺少的出站流量相关联的入站流量。尝试添加以下行来解决您的问题 -

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

根据您的网络工作方式,也可能因为您不允许解析 DNS 而发生故障(为此,您应该允许 UDP 和 TCP 在端口 53 上访问您的名称服务器)。

另外(这有点争议),我建议允许 ICMP 通过你的网络 -

iptables -I INPUT -p icmp -j ACCEPT

这可以使调试变得容易得多,并且不允许某些类型的 ICMP 中断流量。

答案2

您的规则有误。您的规则规定输入(即输入到计算机或服务器的内容)并附带目标端口。这意味着客户端尝试连接到托管在您的计算机/服务器上的网站。但是,您说您无法连接到 Web 服务器,则规则有误。

应该是 sport 而不是 dport

iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 443 -j ACCEPT

相关内容