SOCKS5 的 TCP 与 UDP 工作方式
TCP 请求通过 SOCKS5 CONNECT 命令交给上游代理。开启 udp 后,客户端会通过 UDP ASSOCIATE 建立 UDP 转发,并保持对应的 TCP 控制连接。
SOCKS5 协议本身不加密客户端到上游的连接。tls: true 会在 SOCKS5 握手外增加 TLS 包装,前提是上游服务也按这种方式监听。
最小配置与认证字段
无需认证时只要填写节点名称、类型、服务器与端口。上游要求用户名密码认证时,再加入认证字段。
name必填- 节点名称,必须在当前配置中保持唯一。
type必填- 固定填写
socks5。 server必填- 上游 SOCKS5 服务的域名或 IP 地址。
port必填- 上游 SOCKS5 服务端口。
username按需- 上游启用用户名密码认证时填写。
password按需- 与用户名对应的认证密码。
TLS 与证书校验
TLS 字段校验的是上游 SOCKS5 服务器证书。当前 SOCKS5 出站没有独立的 sni 字段,TLS ServerName 默认采用 server。
tls按需- 上游提供 TLS 包装的 SOCKS5 服务时设为
true。 skip-cert-verify谨慎- 跳过证书校验,仅建议用于短时定位证书问题。
name-cert-verify按需- 修改证书 DNSName 校验目标,不改变连接地址。
fingerprint按需- 完整证书的 SHA-256 指纹,不是 uTLS 浏览器指纹。
certificate / private-key按需- 成对填写时为上游 TLS 连接启用客户端证书认证。
UDP 与 IP 版本
UDP Associate 由上游返回 UDP 中继地址。若返回未指定地址,客户端会使用上游服务器地址补全;上游仍需允许对应的 UDP 端口和来源。
udp按需- 允许该节点处理 UDP,默认关闭。
ip-version按需- 当
server是域名时,控制使用 IPv4、IPv6、双栈或偏好顺序。 dialer-proxy按需- 让当前 SOCKS5 节点通过另一个节点或策略组建立上游连接。
带认证的 SOCKS5 示例
示例使用用户名密码认证并申请 UDP 转发。若上游不支持 UDP,删除 udp;若上游使用 TLS 包装,再加入 tls: true 和相应证书校验字段。
- TCP 可用而 UDP 不可用时,优先检查上游是否实现 UDP Associate。
- TLS 握手失败时,确认端口上运行的是 TLS 包装的 SOCKS5 服务,而不是普通 SOCKS5。
- 认证失败时,以服务端实际支持的认证方式为准,SOCKS5 出站不会自动协商第三方认证插件。
proxies:
- name: socks-upstream
type: socks5
server: proxy.example.com
port: 1080
username: user
password: pass
udp: true