假设我想要打开四个端口来接收任何传入的数据包,因此我制定了以下规则集:
#> iptables -L -v
Chain INPUT (policy ACCEPT 20 packets, 1190 bytes)
pkts bytes target prot opt in out source destination
1041 103K ACCEPT tcp -- any any anywhere anywhere tcp dpt:111
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:222
208 12056 ACCEPT tcp -- any any anywhere anywhere tcp dpt:333
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:443
(前向链和输出链为空)
现在假设有一个 SSH 服务器在端口 111 上运行,为了连接到这台机器,我需要
ssh [email protected] -p 111
然后我登录并且一切正常。
但其他端口也保持打开状态,因为默认策略是 ACCEPT,而我还没有添加 DROP 规则。现在我想添加它并输入
#> iptables -A INPUT -j DROP
这是第五条规则。
现在我想再次连接到我打开的 SSH 端口。我收到了类似的响应,username's password:
但它来了比如 20 秒后,而不是几乎立即没有第五条规则。
所以我删除了这条规则
#> iptables -D INPUT 5
并且我再次能够毫无延迟地连接到我的 SSH。
为什么是这样?
我屏蔽了哪些不该屏蔽的东西?
附言:有一个 Web 服务器在端口 443 上运行,当我尝试从浏览器连接时,页面会无限期加载,但服务器处于活动状态。
答案1
您可能希望向 DNS 服务器开放端口 53。SSH 会对传入的 IP 地址进行反向查找——它将要如果没有反向解析,则可以连接,但会引入延迟。