编辑开始
为了澄清我需要的答案:
- Squid v3.1 和 v3.0 有何不同?
- 为什么上述差异对于 ProxyChains 不起作用?
- 我需要对 Squid 3.1 进行哪些更改才能使其与 ProxyChains 一起工作(编译选项、配置选项等)?
编辑停止
主机:Fedora 11 x86_64
由于需要功能,我从 Squid 3.0 升级到了 Squid 3.1,现在代理链似乎不再与 Squid 配合使用。proxychains 仍可与任何其他应用程序配合使用。
使用 3.0 我像这样启动 Squid:
# 代理链 squid -X -N
并且所有 Squid 的流量都通过 proxychains 预定义的代理列表发送出去。
对于 Squid 3.1,这不起作用,所有流量都按正常方式路由(好像没有调用 proxychains)。正常的 proxychains 连接日志也没有显示,表明 proxychains 似乎没有收到来自 Squid 的任何转发流量的请求。
经历发行说明在 3.1 中,我没有看到任何具体的东西可以阻止代理链与其一起工作。
答案1
作为一种可能的 Rube Goldberg 解决方法,squid 不能配置为使用代理吗?如果是这样,并且您想要使用 proxychains 的各种智能功能,您可以运行在 proxychains 下工作的其他无操作代理。甚至可以在备用路径中安装早期版本的 squid,并将其配置为不执行任何操作:
squid-3.1 --> squid-3.0-noop --> proxychains
即调用proxychains /path/to/squid-3.0/bin/squid
(将 squid-3.0 配置为未修改的代理请求并监听端口 12345),然后正常调用 squid-3.1,但将其配置为通过 路由所有请求localhost:12345
。
它很复杂,但它可以为您提供 3.1 功能加上代理链功能,至少直到/除非一些更聪明的人弄清楚如何让它直接工作。
答案2
Squid 日志或调试输出中有什么内容?如果这没有发现任何内容,请获取strace
以下内容的副本并将其开头部分粘贴到某处:
strace -t -c -o strace.log proxychains squid -X -N
鉴于信息有限,它应该有助于我们更深入地了解正在发生的事情。
答案3
有一种方法可以让 squid 5.7 正确地通过代理链工作,至少对于 IPv4 来说是这样。不过你必须自己构建 squid。第一次运行
./confugure && make
它将创建文件“/src/cf_parser.cci”。您必须将字符串 48(对于我的系统)替换为以下内容:
default_line("acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1/128 ::/128");
到:
default_line("acl to_localhost dst 127.0.0.0/8 0.0.0.0/32");
然后make install
。如果重新编译不是一个选项,那么 squid 可执行文件的二进制修补也可以。只需在 /usr/sbin/squid 中的十六进制编辑器中找到相应的字符串“acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1/128 ::/128”,然后将所有部分“ ::1/128 ::/128”替换为零字节即可。
之后在 Debian 上可以使用如下命令:
sudo proxychains /usr/sbin/squid -f "/etc/squid/squid.conf" -s -Y -C -N -ff proxy_instance1
仅当你运行具有不同配置的多个 squid 实例时才需要 -ff 参数