Squid Web Cache Wiki

Squid Web Cache 文档

🔗 透明代理选择性绕过

🔗 摘要

是否可以有选择地绕过透明拦截代理 squid?如果可以,如何实现?

🔗 解释

是的,可以绕过作为拦截代理运行的 Squid。但要注意的是,这不是由 Squid 来完成的,而是底层拦截技术负责的任务。

一旦 Squid 参与处理请求,它就无法声明退出,只能选择服务该请求或失败它。

此要求也决定了可以进行哪种类型的过滤;一般而言,这仅限于使用网络层检查:通常是目标 IP 地址和 TCP 端口。

🔗 示例

在 Linux 主机上运行时,拦截通常会通过 `iptables` 的 `REDIRECT` 或 `DNAT` 规则来处理,具体细节请参见 配置示例:Linux Redirect配置示例:Linux DNAT

要添加一个允许直接访问 www.example.com 的例外,该页中的 iptables 配置示例应如下修改:

iptables -t nat -N BYPASS
iptables -t nat -A PREROUTING -s SQUIDIP -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j BYPASS
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129
iptables -t nat -A POSTROUTING -j MASQUERADE

iptables -t nat -A BYPASS -d www.example.com -j ACCEPT

**BYPASS** 链负责执行透明拦截绕过。您可以根据需要扩展它,每添加一行(就像示例那样),即可指定一个您不希望拦截的目标主机(或网络)。

有关设置 iptables 和各种标志及选项含义的详细信息,请参阅 iptables 文档。

🔗 此解决方案的问题

作为副作用,所有与 www.example.com 共享相同 IP 地址的网站也将可以直接访问。目前,这是使用通用技术时无法避免的副作用。

类别: 知识库

导航: 站点搜索站点页面类别🔼 向上