我有一个 DNS 服务器,可以解析到我的 Squid 服务器的所有流量,该服务器将透明地代理所有 HTTP 流量(它必须是透明的,否则会丢弃无效的 url 错误),效果很好。
问题出在 HTTPS 上。我的目标是让 HTTPS 在我的拦截下完全正常工作(我不想使用假证书并收到“是否继续”错误消息),我尝试了很多方法来实现这一点,但都失败了。我甚至不想触碰 HTTPS 数据,但我不得不这样做,因为所有域都会解析到我的服务器。
- 我尝试使用 IPTables 将 HTTPS 流量直接重定向到他们的服务器,这是完全不可能的,因为您无法使用 IPtables 读取主机名,也无法动态重定向它们。
- 我曾尝试使用 Haproxy 来传递数据,效果很好,但它要求我单独放入每个服务器,所以除非我制作一个包含数百万行网站域/子域的配置文件,否则我无法使用它。
答案1
我可以理解不想执行 HTTPS 流量拦截,既是出于用户体验的原因,也是为了减少对解密通信内容的责任承担。
不要让 DNS 解析到您的 Web 代理,而是让它正常解析到真实地址(将您的 DNS 服务器设置为缓存、递归解析器)。在用户社区边缘的路由器上使用 WCCP 或 DNAT(可能是一个或多个 ABR,假设您有一个单独的客户端设备区域)。
规则可能是:
- 目标端口是 TCP80 或 TCP8080
- 源不是代理服务器,目标不是代理服务器,DNAT 到代理服务器:3128,日志
- 源是代理服务器,传递不变(登录代理服务器)
- 目标端口是 TCP443 或 TCP 8443
- 不变地传递,记录
希望有帮助