我改变了 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