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 アウトバウンドがサードパーティー製の認証プラグインを自動的にネゴシエートすることはありません。
proxies:
- name: socks-upstream
type: socks5
server: proxy.example.com
port: 1080
username: user
password: pass
udp: true