我们在云端有一个 squid 代理,IP 地址为 50.xyz,监听 tcp 端口 3128 并以透明模式运行。此代理服务器运行 Debian 6.0,位于数据中心。
在我们的办公室,我们有一个 Cisco 路由器,其公共 IP 为 203.xyz/29,私有 IP 为 192.168.1.1/24。本地 LAN 网络是 192.168.1.0/24。我在 squid.conf 文件中允许了公共 IP 203.xyz/29,因此 LAN 用户可以使用此 squid 代理浏览互联网。我想知道是否可以将所有网络流量透明地重定向到数据中心运行的 squid 服务器?
请注意,我完全清楚如果我在本地局域网中有一个代理服务器,那么可以使用路由图或 WCCP 来完成此操作,并且我可以使用 WPAD 进行自动代理检测,但我想要透明重定向。
答案1
我唯一能想到的就是某种形式的隧道。您只需将具有随机全局目标 IP 地址的端口 80 流量路由到您的云代理即可。如果没有路由基础设施中的某种支持,这是不可能做到的。
无论如何,您可能希望在网络和云实例之间建立 IPsec 隧道以确保安全。如果您当前的路由器不支持此类功能,我建议您尝试Vyatta 核心,将一些测试工作站指向 Vyatta 路由器作为其默认网关。然后,Vyatta 将配置为通过 IPsec 隧道(如果您不关心安全性,甚至可以是 GRE 或 IP-in-IP)重定向所有公共绑定的 TCP 端口 80 流量,该隧道终止于云实例。
请注意,只要涉及隧道,您就会遇到 MTU 问题,因此您应确保没有在任何防火墙(甚至是工作站本地的防火墙)中阻止 ICMP 数据包过大的消息,并且您可以重写 Vyatta 看到的 TCP 握手数据包中的 TCP 最大段大小。
说实话,proxy-auto-config 处理起来要容易得多。如果您有 Active Directory 域,您甚至可以通过组策略强制执行 IE 和 Google Chrome 的代理配置,并为访问者/Macs/Linux/Firefox 用户使用代理自动配置。
答案2
唯一真正可以在本地无需额外硬件的情况下实现此目的的方法是使用 WCCP。您应该能够通过外部公共地址创建通往云系统的 WCCP GRE 隧道。
如果您的 ISP 也运行数据中心,那么他们可能能够通过您拥有的 squid 服务器路由您的流量。否则,我会考虑在本地放置一个小型 squid 盒,执行流量的透明拦截,然后将其发送到云系统,或者用一体化代理/缓存/过滤器/防火墙替换思科盒,无论是自产的 FOSS 还是商业产品。