【问题标题】:iptables block INPUT port 80iptables 阻止输入端口 80
【发布时间】:2017-09-24 15:45:15
【问题描述】:

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

我设法运行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 阻止吗?

【问题讨论】:

    标签: iptables


    【解决方案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 访问它。

    【讨论】:

    • 那么为什么当我在端口 22 上为 ssh 创建 TCP 连接时,传出和传入的数据包在同一个端口 (22) 上传输,而不是在随机端口上传输?
    • 不,相同,数据包被传输到端口 22,但在您计算机上的客户端端口上接收,这是您创建连接的原因。
    猜你喜欢
    • 2017-12-22
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2013-09-07
    • 2015-01-01
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    相关资源
    最近更新 更多