我在我的 Ubuntu PC 中添加了 iptables 规则,并将一些网站列入白名单,其余网站均被阻止。当我尝试浏览白名单网站时,内容加载时间非常长,并且无法加载图像和视频。您能告诉我问题出在哪里吗?
#!/bin/sh
# Allow loopback
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
## client: ==
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#facebook
iptables -A OUTPUT -d facebook.com -j ACCEPT
iptables -A INPUT -d facebook.com -j ACCEPT
#youtube
iptables -A OUTPUT -d youtube.com -j ACCEPT
iptables -A INPUT -d youtube.com -j ACCEPT
#stackoverflow
iptables -A OUTPUT -d stackoverflow.com -j ACCEPT
iptables -A INPUT -d stackoverflow.com -j ACCEPT
答案1
这些网站的所有媒体内容并不托管在同一个顶级域名上,而是托管在许多子域名、二级域名和 CDN 上。例如,您需要加入白名单graph.facebook.com
(与 不同facebook.com
!)才能真正看到 Facebook 动态消息中的内容。Youtube 加载来自 的视频*.googlevideo.com
、来自 的图片*.ytimg.com
等等。还有更多内容,但简单地说,iptables 不是完成这项工作的合适工具。
简而言之,您实际上阻止的内容远比您想象的要多,并且通过 iptables 将网站列入白名单对于一般的网络使用来说过于简单 - 特别是在处理像 Youtube、Facebook 和许多其他大型网站时。
为了更好地了解后台发生的所有连接,我建议您尝试使用浏览器的 uMatrix 扩展:它可以让您很好地了解网站正在尝试建立的所有连接,甚至允许您控制允许哪些连接、阻止哪些连接等等。
或者,您可能想设置自己的Pi-Hole DNS 服务器然后从那里开始。这可能是您最好的方法。