🔗 透明代理选择性绕过
🔗 摘要
是否可以有选择地绕过透明拦截代理 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 地址的网站也将可以直接访问。目前,这是使用通用技术时无法避免的副作用。
类别: 知识库
导航: 站点搜索、站点页面、类别、🔼 向上