我想使用Squid从连接到Internet的多个网络接口中代理请求。我的意图是掩盖源IP,因为每个NIC都有一个唯一的外部IP。理想情况下,请求将根据传入端口进行代理,例如
不幸的是,即使我的鱿鱼配置似乎有效,对第二个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的尝试也失败了:(