Squid Web Cache Wiki

Squid Web Cache 文档

🔗 特性:SOCKS 支持

🔗 详细信息

Squid 处理许多与 HTTP 相关的协议。但目前无法原生通过 SOCKS 接受或发送 HTTP 连接。

本项目旨在让 http_port 接受 SOCKS 连接,并建立到 SOCKS cache_peer 的出站连接,以便 Squid 可以轻松地通过 SOCKS 网关发送请求,或者自身充当 HTTP SOCKS 网关。

🔗 Squid 的现有状态

一些研究表明,SOCKSv5 应该像一个新的 bind() 调用和库链接一样简单。 https://squid.org.cn/mail-archive/squid-users/199901/0033.html

export CFLAGS=" -Dbind=SOCKSbind "
export CXXFLAGS=" -Dbind=SOCKSbind "
export LDADD=" -lsocks "

了解上游对等连接的工作原理后,可以推断 Squid 的 connect() 调用也可能需要 SOCKS 化,以便使用 cache_peer 连接 SOCKS 代理。这将是

export CFLAGS=" -Dbind=SOCKSbind -Dconnect=SOCKSconnect "
export CXXFLAGS=" -Dbind=SOCKSbind -Dconnect=SOCKSconnect "

这样做似乎可行,可以将 Squid 变成一个 SOCKS 代理。有几个用户报告称他们目前以这种方式使用 Squid。

:warning: 它有一个缺点,即所有入站和出站连接都是 SOCKS 连接。没有混合 SOCKS/非 SOCKS 连接的折衷方案。

🔗 升级计划

监听器绑定需要为 comm 层调用添加一个新的 COMM_SOCKSBIND 标志,出站连接可能需要为 acting on the bind() choice directly 的 cache_peer 设置一个配置项。

我有一些时间,但不足以做太多事情,我创建了一个分支,据说可以处理监听端口和 SOCKS 对等连接。据我目前所知,它构建并监听一个 http_port。squidclient 也已改编为使用 SOCKS 套接字操作。

待解决的问题

所以目前工作受阻。使用 API 通过 -D= 编译器选项似乎仍然有效,但编写使用 if() 语句的代码却失败了。有什么想法吗?

情况

额外补充:似乎还有一个系统配置设置和配置文件用于设置一个父 SOCKSv5 代理。将其作为可能的自动 cache_peer 条目引入可能很有用。

分类: WantedFeature

导航:站点搜索站点页面类别🔼 向上