代理協定 · 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