我刚刚开始使用 iptables,偶然发现了一些我不太了解的东西。
仅供参考,我按照Ubuntu wiki 的 IptablesHowTo 的说明进行操作。
nat 和 mangle 表是空的,我现在只使用过滤器表。
如果我添加以下 iptables 规则:
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
Run Code Online (Sandbox Code Playgroud)
...然后我仍然可以通过 ssh 访问我的机器,但是所有 iptables 命令大约需要一两分钟才能运行。这不是DNS问题,-n
不会改变它。
如果我刷新表并添加这三个规则,则一切正常:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
Run Code Online (Sandbox Code Playgroud)
谁能给我解释一下,为什么第一条规则对iptables影响这么大?我知道它允许已建立的会话接收流量,但是如果 ssh 处于打开状态,为什么我需要它?
小智 4
它正在执行 DNS 查找,并且由于响应被阻止,因此需要一段时间才能超时。
尝试执行 iptables -n ... 来阻止 DNS 查找。
conntrack 允许在临时端口上接收连接,该临时端口是为响应计算机发起的请求(在本例中为 DNS 请求)而创建的。如果不允许 ESTABLISHED 或 RELATED 连接,甚至对您的请求的响应也会被阻止。
EG:如果您尝试访问某个网站,即使您能够发送对该网站的请求,该网站的响应也会被阻止。
归档时间: |
|
查看次数: |
14353 次 |
最近记录: |