iptables 阻止 INPUT 端口 80

iptables 阻止 INPUT 端口 80

我的问题是为了一般理解,而不是为了解决我遇到的问题。

我设法运行iptables -A OUTPUT -p tcp --dport 80 -j REJECT并阻止 http 请求。当我跑的时候curl http://b.scorecardresearch.com/beacon.js我有curl: (7) Failed to connect to b.scorecardresearch.com port 80: Connection refused

然后我删除了 OUTPUT 规则并创建了 INPUT 规则iptables -A INPUT -p tcp --dport 80 -j REJECT。然后我就可以curl http://b.scorecardresearch.com/beacon.js毫无问题地访问了。

我明白为什么传出请求没有被阻止,但是当我发出 http 请求时,响应不是在同一端口 (80) 上返回,并且应该被端口 80 的 INPUT REJECT 阻止吗?

答案1

当您向服务器发送 HTTP 请求时,除非 URL 中另有指定,否则您将使用 HTTP 的默认端口 80(命名为http,符号形式通常更容易记住)。这就是为什么此规则正确禁止尝试连接远程 HTTP 端口的原因:

iptables -A OUTPUT -p tcp --dport http -j REJECT

当服务器回复时,它会从该端口 (http/80) 向您的计算机发送数据。这意味着该iptables规则应提及 80 作为源端口:

iptables -A INPUT -p tcp --sport http -j REJECT

答案2

不,在客户端将使用不同的端口进行通信,因此这不是端口 80 到端口 80 的连接。

您可以使用以下命令获得概述。在那里您可以看到您的本地 IP 地址和端口以及相关的外部 IP 地址和端口。

netstat -tn 

相关内容