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