带有 tcp_outgoing_address 的 squid3 无法连接到任何地方

带有 tcp_outgoing_address 的 squid3 无法连接到任何地方

我有一台带有 3 个接口(3 个物理 LAN 卡)的服务器,它们连接到 3 个不同的路由器。每个路由器都有不同的子网,即服务器的 3 个接口属于 3 个不同的子域:

eth0    192.168.1.42 #default interface
eth1    192.168.11.42
eth2    192.168.12.42

我在服务器上以最低配置安装了一个 squid 服务器,它确实可以在 Web 浏览器上正常工作。以下是 squid.conf:

acl all src all
acl lan src 192.168.0.0/16
http_port 3128
access_log /var/log/squid3/access.log squid
hosts_file /etc/hosts
http_access allow lan
http_access deny all

现在,我希望 squid 服务器使用一个特定接口 (eth1) 而不是 eth0 来发送数据包(因为该路由器内部有 openvpn)。经过一番研究,我尝试了以下方法:

tcp_outgoing_address 192.168.11.42

但是,添加此行后,我无法使用 squid 代理从浏览器访问任何地方。经过一番谷歌搜索,有人提到了 iptables 和 ip 路由的 SNAT,但这似乎真的很复杂,我真的不确定在这种情况下我应该设置什么。

我尝试过squid3 -k debug,但在 cache.log 中只得到类似这样的内容,不确定是否有帮助:

2014/06/26 17:16:42.843| comm_calliocallback: 0
2014/06/26 17:16:42.843| event.cc(225) checkEvents
2014/06/26 17:16:42.853| EventDispatcher::dispatch: Running 'MaintainSwapSpace'
2014/06/26 17:16:42.853| storeMaintainSwapSpace: f=1.00, max_scan=500, max_remove=80
2014/06/26 17:16:42.853| UFSSwapDir::maintain: /var/spool/squid3 removed 0/80 f=1.0000 max_scan=500
2014/06/26 17:16:42.853| event.cc(315) schedule: Adding 'MaintainSwapSpace', in 1.00 seconds
2014/06/26 17:16:42.853| comm_iocallbackpending: 0
2014/06/26 17:16:42.853| comm_calliocallback: 0
2014/06/26 17:16:42.853| comm_calliocallback: 0
2014/06/26 17:16:42.863| comm_iocallbackpending: 0
2014/06/26 17:16:42.863| comm_calliocallback: 0

任何帮助都将非常感激。

答案1

好的,经过进一步研究,我认为答案是source plicy routing

我按照以下步骤操作:

无法在非默认接口上 ping 多宿主 Linux 计算机

而且效果非常好!

相关内容