我已经使用 squidguard 配置了 squid,在浏览器中使用代理时,它工作正常。但我想在所有浏览器中强制使用代理(可能在 iptables 中)。现在用户可以在浏览器设置中禁用它。
我的设置是:一台独立的 PC,装有 ubuntu,运行 squid 和 squidguard,我想在这台设备上以某种方式强制使用代理。Squid conf 文件已设置:
http_port 3128 transparent
谢谢
答案1
您正在寻找的是透明代理。上次我检查时发现使用 Squid 有两种方法可以做到这一点:
- 杠杆作用世界气候变化规划委员会,Squid 支持该功能。
- 通过 Squid 盒路由所有互联网流量,并通过 IPTables 拦截流量。Squid 称其为拦截缓存。
第一个选项需要您的路由基础设施的支持。由于这是 Cisco 协议,因此 Cisco 之外的支持并不强。如果您有基础设施,这个方法有效,我已经尝试过了。
第二种选择更可行。为了实现这一点,您需要设置路由基础设施,以便通过 Squid 框发送所有 Internet 流量。Squid 可以编译为支持拦截,并且可能通过 Apt repos 提供。
答案2
按照 iptables 配方将 eth1(路由器上的内部网络设备)上的所有 HTTP 流量透明地路由到 Squid(和 vv)。
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.110.0.1:3128
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
如果你碰巧使用联邦快递(正如我们所做的),您可以将该行添加到/etc/ufw/after.rules
:
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.110.0.1:3128
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
COMMIT
您可以从以下位置找到更多示例和详细信息本文。