应用需要 SOCKS。你获准使用的上游服务接受 HTTP CONNECT。把 HTTP 端点填进应用的 SOCKS 字段,并不会在两种协议之间做转换。

网关可以从应用接收 SOCKS,读出请求的目标,再向 HTTP 父级请求一条到该目标的 CONNECT 隧道。随后它把应用的流转发穿过这条隧道。

SOCKS application → SOCKS-facing gateway → HTTP CONNECT parent → destination

把每个接口讲清楚

对支持这种安排的网关而言,父级的类型很重要。3proxy 的文档区分 connect 父级和用作普通 HTTP 转发代理的父级。

在已有 3proxy 用户和认证设置的情况下,仅本地的路由片段可以是这样:

auth strong
allow alex
parent 1000 connect parent.example.net 8080
socks -i127.0.0.1 -p1080

这个片段假定账号已经定义。它不会添加 HTTP 父级自身所需的任何凭据,也不会取代现有的访问策略。对于允许使用未认证公共 HTTP 父级的线路上的公共目标,HTTP 代理列表提供主机和端口候选。该分支下不要配置父级凭据,并确认对实际目标的授权;网关自身的账号仍留在本地。按 3proxy 文档所述的配置模型,parent 规则与前面的 allow 规则相关联。

应用使用本地 SOCKS 端点。网关对父级使用 HTTP CONNECT。请求的目标主机和端口是否被允许,仍由父级决定。

这里的有效范围是普通 TCP 流的隧道化。前端监听器接受 SOCKS5,并不意味着就支持 SOCKS5 的 UDP 关联。HTTP CONNECT 父级不会自动提供所需的 UDP 中继。

HTTPS 可以在这条路径中保持端到端;代理接口之间的转换并不需要冒充目标网站。到网关的认证、到父级的认证和网站的认证仍然是不同的凭据与交换。

相关文章