我的目标是安装一个外部 DansGuardian + Squid 设置,仅供我家的某些机器(尤其是孩子们)使用。我已成功在廉价 VPS 上安装了这两个设置,并获得了一些我想要的结果。
我家的路由器运行的是 DD-WRT,所以里面有 iptables。最初,我使用这个命令:
iptables -A PREROUTING -p tcp -m tcp --dport 80 -m mac --mac-source 00:19:B9:3E:BA:DF -j DNAT --to-destination <vps-address>:3182
本质上,此命令是获取来自指定 mac 地址的出站端口 80 流量,并将其推送到 vps-address:3182。在相关机器上打开浏览器时,它起作用了——但我得到的 Squid 网页上显示“拒绝访问”。显然,通过使用端口 3182,我将其直接指向 Squid,而 Squid 被配置为仅允许来自本地主机的流量。
所以我把它改成了这个(端口 8080 而不是 3182)
iptables -A PREROUTING -p tcp -m tcp --dport 80 -m mac --mac-source 00:19:B9:3E:BA:DF -j DNAT --to-destination <vps-address>:8080
当我使用第二种方法时,它根本不起作用。但奇怪的是,我可以更改浏览器上的代理设置并指向 vps-address:8080,它就可以正常工作。
因此,squid 在网络层面透明地工作——但我如何让 dansguardian 做同样的事情?我更喜欢透明的解决方案——我不想依赖浏览器中明确输入的代理设置。
答案1
也可以采用不同的方法 - 使用与 Squid 在同一 VPS 机上运行的 ICAP 服务器,并监听 Squid 将用于引导所有流量的 127.0.0.1 本地唯一地址。此类 ICAP 服务器的一个例子是 qlproxy。因此,如果您设法让 Squid 透明地工作,那么您已经具备了所需的设置。只需将 qlproxy 添加到汤中即可。