鱿鱼指定传出网络接口

use*_*702 6 networking debian proxy squid

我有一台 Linux Debian 机器,有许多运行 Squid 的网络接口(venet0:1 到 venet0:5)。如果我连接到接口 venet0:2,squid 使用 venet0:0 进行传出流量,但我希望 Squid 使用相同的网络接口进行连接。因此,如果我连接到 venet0:1 的 IP 地址,代理也应该使用相同的接口进行传出流量。

目前我使用以下配置:

http_port 200
forwarded_for off
uri_whitespace encode
visible_hostname localhost
via off
collapsed_forwarding on
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/users
auth_param basic children 5
auth_param basic realm Proxy
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl ncsa_users proxy_auth REQUIRED
access_log none
cache_store_log none
cache_log /dev/null
acl all src all
http_access allow ncsa_users
header_access From deny all
header_access Referer deny all
header_access Server deny all
header_access User-Agent allow all
header_access WWW-Authenticate deny all
header_access Link deny all
header_access Accept-Charset deny all
header_access Accept-Encoding deny all
header_access Accept-Language deny all
header_access Content-Language deny all
header_access Mime-Version deny all
Run Code Online (Sandbox Code Playgroud)

我已经尝试过http://www.tastyplacement.com/squid-proxy-multiple-outgoing-ip-addresses 中的教程,但我认为我不能使用它,因为我使用 ncsa 而不是源 ip 验证用户地址。

有没有可能让鱿鱼使用正确的网络接口?如果我能避免 acl 规则就好了,因为每次更改一个 IP 地址都需要更改配置。

小智 8

最好的解决方案是为每个接口创建一个 acl,使进入该接口的所有请求都属于该组,并将该组重定向到特定的传出接口。

示例:
服务器 X 具有以下 IP:

  • 10.0.0.1
  • 10.0.0.2
  • 10.0.0.3

因此,squid.conf 文件应该类似于:

acl 10_0_0_1 localip 10.0.0.1
tcp_outgoing_address 10.0.0.1 10_0_0_1 

acl 10_0_0_2 localip 10.0.0.2
tcp_outgoing_address 10.0.0.2 10_0_0_2 

acl 10_0_0_3 localip 10.0.0.3
tcp_outgoing_address 10.0.0.3 10_0_0_3
Run Code Online (Sandbox Code Playgroud)

然后向“10.0.0.1”发出的任何请求将使用“10.0.0.1”接口,向“10.0.0.2”发出的任何请求将使用“10.0.0.2”接口,依此类推。

我知道这是一个老问题,但由于它仍然是第一个谷歌搜索结果,发布正确答案仍然有效。

  • 如果是动态IP怎么办? (5认同)

Roy*_*ips 2

它是在 acl 中配置的,因此在该行之后:

acl youracl src IP.Ad.Res.Of venet:0:2

添加以下内容:

tcp_outgoing_address 192.168.1.1 你的acl