プロキシプロトコル · Clash ドキュメント

SOCKS5 アウトバウンドプロキシ

現在の Mihomo フィールドに基づく Clash 系 SOCKS5 アウトバウンド設定です。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 ハンドシェイクに失敗する場合は、そのポートで動作しているのが通常の SOCKS5 ではなく、TLS でラップされた SOCKS5 サービスであることを確認してください。
  • 認証に失敗する場合は、サーバーが実際に対応している認証方式を確認してください。SOCKS5 アウトバウンドがサードパーティー製の認証プラグインを自動的にネゴシエートすることはありません。
YAML
proxies:
  - name: socks-upstream
    type: socks5
    server: proxy.example.com
    port: 1080
    username: user
    password: pass
    udp: true