我终于能够使用 squid 将我的 ubuntu 10.04 服务器设置为透明代理。它完全按照我想要的方式工作,但我遇到了一个严重的问题...
在两张以太网卡上我都有机会上网(两个不同的 ISP),但我希望这台服务器只使用 eth1 来满足所有互联网请求。
因此,最终的方案是使用 eth0 收集所有传入的代理请求,并让 squid 使用 eth1 上的超高速连接从互联网收集信息。
问题是我有一个连接到 eth0 的防火墙:该防火墙允许分支机构使用 wifi 桥接器访问代理。
为了确保分支机构和代理之间的通信,我不得不将防火墙的 eth0 设置为默认网关,不幸的是,防火墙也提供互联网连接(但速度很慢)。Squid 完全使用 eth0 来收集请求并从互联网获取数据。
我无法设置唯一正确的默认网关,因为在这种情况下,我不会使用 WiFi 桥将数据包发送回我们的分支机构。
我希望我已经更清楚一点了,对于我的糟糕阐述,我深感抱歉。
我的实际路线显示:
Kernel IP routing table`
Destination Gateway Genmask Flags Metric Ref Use Iface
193.206.x.x * 255.255.255.0 U 0 0 0 eth1
128.0.x.x * 255.255.0.0 U 0 0 0 eth0
default 128.0.x.x 0.0.0.0 UG 100 0 0 eth0
default 193.206.x.x 0.0.0.0 UG 100 0 0 eth1
有什么提示吗?
如果您需要任何详细信息,我会发布它们。
答案1
原来的
从命令提示符:
sudo route add default gw i.p.add.ress eth1
然后,在中/etc/network/interfaces
添加以下行:
up route add default gw i.p.add.ress eth1
当然,i.p.add.ress
两行都替换为网关的IP。
编辑新问题
如果需要删除某条路线,只需将“add”改为“del”即可。例如:
(command) sudo route del default gw 128.0.x.x eth0
(/etc/network/interfaces) up route del default gw 128.0.x.x eth0
您也可以通过 route 命令为分支机构设置静态路由
route add -net (network_id/prefix) GW (gateway) (interface)
答案2
您有两个问题:首先,您需要让 squid 使用正确的源 IP 地址。其次,您需要确保具有该源 IP 地址的数据包被引导至正确的网关(源路由)。
第一个问题是 Squid 的问题。您可以使用 Squidtcp_outgoing_address
将源 IP 地址设置为正确的地址。
tcp_outgoing_address 128.0.xx
第二个问题是系统配置问题。您不想将带有 128.0.xx 源地址的数据包发送到 193.206.xx 网关,反之亦然。这称为 ,source routing
并使用 完成iptables
。
更复杂的方法是使用两个路由表。一个用于源地址为 128.0.xx 的数据包,并具有到 128.0.xx 网关的默认路由。另一个则相反。 http://wlug.org.nz/SourceBasedRouting