我的问题是一般的理解,而不是解决我的问题。
我设法运行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阻止?
答案 0 :(得分:1)
创建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上将无法再访问它。