我如何强制 Squid Proxy 使用特定网关访问互联网?

我如何强制 Squid Proxy 使用特定网关访问互联网?

我终于能够使用 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

相关内容