代理协议 · Clash文档

SOCKS5 出站代理

Clash 生态 SOCKS5 出站配置参考,以当前 Mihomo 字段为准,涵盖 TCP CONNECT、UDP Associate、认证与 TLS 包装。

  • CONNECT
  • UDP Associate
  • TLS
  • 证书校验
  • ip-version
代理协议

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 出站不会自动协商第三方认证插件。
YAML
proxies:
  - name: socks-upstream
    type: socks5
    server: proxy.example.com
    port: 1080
    username: user
    password: pass
    udp: true