iptables 阻止 INPUT 端口 80
iptables block INPUT port 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 请求时,响应 return 不是在同一端口 (80) 上,应该被端口 80 的 INPUT REJECT 阻止?
当您创建 TCP 连接时,客户端端口是随机的并且不同于目标端口(此处为 80)。您可以在终端中通过 运行: netstat -pant
查看:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.1.41:39878 201.15.39.91:80 ESTABLISHED 2270/firefox
这就是为什么阻止以端口 80 为目标的传入数据包并不禁止您访问 HTTP 服务器。但是,如果您有一个 HTTP 服务器,它将无法再通过端口 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 请求时,响应 return 不是在同一端口 (80) 上,应该被端口 80 的 INPUT REJECT 阻止?
当您创建 TCP 连接时,客户端端口是随机的并且不同于目标端口(此处为 80)。您可以在终端中通过 运行: netstat -pant
查看:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.1.41:39878 201.15.39.91:80 ESTABLISHED 2270/firefox
这就是为什么阻止以端口 80 为目标的传入数据包并不禁止您访问 HTTP 服务器。但是,如果您有一个 HTTP 服务器,它将无法再通过端口 80 访问。