以下是我在 Ubuntu 中的 iptables 规则。
╰─$ sudo iptables -S
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -j DROP
仅对于 INPUT,我已指定规则,并且所有传出流量均采用 ACCEPT 策略。但我无法浏览互联网或 ping 任何互联网域。
但是,如果我删除 INPUT 链中的最后一条规则,-A INPUT -j DROP
那么我就可以浏览和 ping。
浏览互联网到底需要打开什么链?为什么 INPUT 链策略会干扰传出流量。我很困惑。请解释一下。
答案1
否定-A INPUT -j DROP
你的-P INPUT ACCEPT
。-j
是跳转选项,据我所知,这意味着如果数据包与此规则匹配,防火墙将忽略有关该数据包的所有其他规则,并按照此行所述对数据包进行操作,在本例中为DROP
。
这允许您发送 ICMP 信号或发出 HTTP 请求,但它会丢弃您收到的所有响应。如果您尝试过滤某些输入,则需要为规则添加更多具体性,否则它将继续丢弃您收到的所有传出请求。
这是我最喜欢的 IPTables 教程。它有几个过滤某些类型输入的示例,还解释了NEW
和ESTABLISHED
流量之间的区别。
http://www.thegeekstuff.com/2011/06/iptables-rules-examples/
希望这可以帮助。