squid tcp_outgoing_address失败并显示“(22)无效参数”

时间:2012-03-26 12:40:24

标签: linux squid

大家好,

我在Squid-Proxy中设置两个输出互联网。下面是“图表” 我想得到的最终结果:

SERVER1: SQUID SERVER
SERVER2: Internet2

 :: Client :: ----- SERVER1 ---> INTERNET (MODEM)
                        v
                        |
                        | -----> SERVER2 ----> INTERNET (MODEM 2)

我在squid.conf中配置了以下几行:

acl route_alt dstdomain .whatismyip.com
tcp_outgoing_address <IP_SERVER2> route_alt

重新启动Squid并尝试访问该站点,返回以下错误: “(99) Can not assign requested address

所以谷歌搜索,我发现并做了以下事情: echo 1&gt; / proc / sys / net / ipv4 / ip_nonlocal_bind

现在尝试访问该网站,返回以下错误: “(22) Invalid argument

这些错误,仅“(99)无法分配请求的地址”显示我 /var/log/squid/cache.log。另一个人没有找到它。

Strace'ing我发现了以下内容:

connect(267, {sa_family=AF_INET, sin_port=htons(80),
sin_addr=inet_addr("72.233.89.199")}, 16) = -1 EINVAL (Invalid
argument)

Squid版本是3.1.19 Linux版本:Fedora 15 64位 内核版本:2.6.38.6-26.rc1

任何帮助都表示赞赏。

由于

1 个答案:

答案 0 :(得分:2)

tcp_outgoing_address必须用于指定传出连接的本地IP,不能在那里使用外部IP。如果你想用Squid控制路由,你应该这样做:

首先,您需要在SERVER1中使用额外的IP地址来通过SERVER2进行通信。然后添加squid.conf:

tcp_outgoing_address IP2_SERVER1 ACL

之后你必须配置路由:

ip rule add table 100 from IP2_SERVER1
ip route add table 100 default via IP_SERVER2

当数据包具有IP2_SERVER1作为源时,最后两行设置路由。

相关问题