Squid将请求转发出多个面向Internet的网络接口

时间:2018-10-26 13:02:08

标签: networking proxy http-proxy squid

我想使用Squid从连接到Internet的多个网络接口中代理请求。我的意图是掩盖源IP,因为每个NIC都有一个唯一的外部IP。理想情况下,请求将根据传入端口进行代理,例如

  • 本地主机上的端口3128到192.168.1.100
  • 本地主机上的端口3129到192.168.2.100

不幸的是,即使我的鱿鱼配置似乎有效,对第二个NIC的请求也会失败:

http_port 3128
http_port 3129

acl ip1 myportname 3128
acl ip2 myportname 3129

tcp_outgoing_address 192.168.1.100 ip1
tcp_outgoing_address 192.168.2.100 ip2

http_access allow ip1
http_access allow ip2
http_access allow localhost
http_access deny all

#...

我的IP路由如下:

$ ip route
default via 192.168.1.1 dev eth1 src 192.168.1.100 metric 211 
default via 192.168.2.1 dev eth2 src 192.168.2.100 metric 212 
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.100 metric 211 
192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.100 metric 212

我写了一个脚本来查看我对端口3129的请求是否通过:

eth1=`sudo curl --interface eth1 ipv4.canhazip.com -s`
eth2=`sudo curl --interface eth2 ipv4.canhazip.com -s`
proxy1=`curl -x localhost:3128 ipv4.canhazip.com -s`
proxy2=`curl -x localhost:3129 ipv4.canhazip.com -s`

echo "port 3128: $proxy1, expected: $eth1"
echo "port 3129: $proxy2, expected: $eth2"

请注意,我的curl请求直接到达每个接口,按预期方式工作,但是我从Squid收到第二个接口的错误:

port 3128: 77.136.201.254, expected: 77.136.201.254
port 3129: [error]       , expected: 77.136.19.52

其中[错误]是乌贼输出的一堆html,标题为“错误:无法检索到所请求的URL”,正文包含错误:“与2606:4700:7 :: a29f:8605的连接失败”。和sysmsg:“系统返回:(101)网络无法访问”。

我的网络技能有点薄弱:我尝试设置自定义IP规则/路由没有帮助。我想知道是否由于互联网提供商使用电信级NAT而无法路由请求?

我试图简化配置以指定一个端口和一个tcp_outgoing_address的尝试也失败了:(

0 个答案:

没有答案