为什么这些 iptable 规则阻止我浏览互联网?(允许 80,443,53)

为什么这些 iptable 规则阻止我浏览互联网?(允许 80,443,53)

这是我的家用机器。规则如下:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        7   484 ACCEPT     all  --  lo     any     anywhere             anywhere            
2        0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http
3        0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:domain
4        0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https
5       99  7040 DROP       all  --  any    any     anywhere             anywhere            

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 70 packets, 5461 bytes)
num   pkts bytes target     prot opt in     out     source               destination 

但是,一旦我添加了规则 5,我就无法连接到任何网页,除非我将其删除。我还尝试过不设置规则 5,并为 INPUT 链设置 DROP 默认策略(带 -P),这应该是相同的,对吧?那也没用。

谢谢

答案1

因为沟通是双向的,而且你的规则是无国籍的。

当您请求网页时,响应需要返回到您的计算机,这将通过 INPUT 链进行。

您创建的规则基本上允许您的计算机充当 http/https/dns 的服务器,而不能充当其他任何服务器。

添加这些状态规则基本上会允许任何出站连接。

/sbin/iptables -t filter -I OUTPUT -m state --state NEW\,ESTABLISHED -j ACCEPT 
/sbin/iptables -t filter -I INPUT -m state --state ESTABLISHED\,RELATED -j ACCEPT 

答案2

它无法正常工作,因为您错误地过滤了 DNS。DNS 的使用方式与您配置的方式不同。当您添加udp规则时,它会触发您的 DNS 数据包并丢弃它们。在规则 3 中更改为tcpDROP-p tcp-p udp

相关内容