大家好,
我在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
任何帮助都表示赞赏。
由于
答案 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作为源时,最后两行设置路由。