![iptables 规则强制所有浏览器使用代理](https://linux22.com/image/1033583/iptables%20%E8%A7%84%E5%88%99%E5%BC%BA%E5%88%B6%E6%89%80%E6%9C%89%E6%B5%8F%E8%A7%88%E5%99%A8%E4%BD%BF%E7%94%A8%E4%BB%A3%E7%90%86.png)
我已经安装了 squid 作为我的代理服务器Ubuntu 10.04 单机系统它有一个网卡。我之所以在独立系统中安装 Squid,是因为我的朋友使用我的系统浏览网站和下载文件。所以我安装了 Squid 来阻止色情网站和下载。但他们只是通过在浏览器中禁用代理设置来绕过代理设置。我知道有某种方法可以强制所有浏览器使用 iptables 通过代理。但怎么做呢?我到处寻找答案,但还没有找到正确的答案。有人能帮我吗?
答案1
首先阻止除 root 和 squid 之外的所有用户直接访问端口 80。(root 需要它来获取系统更新)。(我假设 squid 作为用户代理运行 - 根据需要进行编辑)。
iptables -A OUTPUT -m owner --uid-owner root -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner proxy -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j DROP
然后,您可以像往常一样设置 Firefox 使用 squid 作为代理。如果您的朋友更改了设置,他们将被阻止。
请注意,squid 无法代理 https 流量,因此我没有将这些详细信息放入这些规则中。如果您只想进行过滤而不进行代理或缓存,那么您可以使用 DansGuardian。这是使用 dansguardian 的指南一些用户被排除在过滤之外。该指南意味着 https (端口 443) 将被 DansGuardian 过滤,http (端口 80) 也是如此。
答案2
或者,你可以将代理链的 LD_PRELOAD 选项放入 .profile 中 - 如果你想要代理 https,你可以使用 3proxy