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

HTTP / HTTPS アウトバウンドプロキシ

現在の Mihomo フィールドに基づく Clash 系 HTTP アウトバウンド設定です。CONNECT トンネル、プロキシ認証、HTTPS アップストリーム、証明書検証を解説します。

  • CONNECT
  • TLS
  • SNI
  • 証明書の検証
  • mTLS
プロキシプロトコル

HTTP アウトバウンド接続の確立方法

クライアントはまず server:port で指定したアップストリームプロキシへ接続し、続いて HTTP CONNECT リクエストを送信して対象ホストへの TCP トンネルを確立します。対象サイトが HTTP と HTTPS のどちらを使っていても、ここでのノード種別は変わりません。

type: http デフォルトではアップストリームプロキシへ平文で接続します。次を設定した場合に限り tls: true、クライアントからアップストリームプロキシまでの区間で TLS が使われます。HTTP アウトバウンド自体は UDP 転送に対応していません。

必須の最小フィールド

以下の四項目で、認証を必要としない最小構成の HTTP アウトバウンドになります。ノード名はポリシーグループやルールから参照されるため、ほかのノードと重複させないでください。

name必須
ノード名。後続の proxy-groups またはルールで使用します。
type必須
固定値 http
server必須
アップストリーム HTTP プロキシのドメインまたは IP アドレスです。
port必須
アップストリームプロキシの待受ポートです。ポート番号だけでは TLS の有効・無効は決まりません。

認証と CONNECT リクエストヘッダー

アップストリームで Basic プロキシ認証が必要な場合は、ユーザー名とパスワードを両方指定します。headers CONNECT リクエストに追加されます。ゲートウェイの要件に応じて、デフォルトの Host、User-Agent、Proxy-Connection などのリクエストヘッダーを上書きできます。

username必要に応じて指定
アップストリームプロキシ認証のユーザー名です。現在の実装では、ユーザー名とパスワードがどちらも空でない場合にだけ Basic 認証を送信します。
password必要に応じて指定
username に対応するプロキシ認証パスワードです。
headers必要に応じて指定
キーと値で指定する CONNECT リクエストヘッダーです。対象サイトへの通常のリクエストヘッダーは、ここに設定しないでください。

HTTPS アップストリームと証明書の検証

TLS を有効にした場合、SNI、証明書名、証明書チェーンはいずれもアップストリームプロキシに対するもので、最終的な接続先サイトに対するものではありません。通常は証明書の検証を有効なままにしてください。

tls必要に応じて指定
次の値に設定すると true 、TLS でアップストリーム HTTP プロキシへ接続します。
sni必要に応じて指定
TLS ハンドシェイクで使うサーバー名です。省略時は server
name-cert-verify必要に応じて指定
証明書の DNSName 検証対象だけを個別に指定します。SNI は変更されません。
skip-cert-verify慎重に使用
証明書の検証を省略します。リスクを十分理解したうえで、一時的なトラブルシューティングに限って使用してください。
fingerprint必要に応じて指定
証明書全体の SHA-256 フィンガープリントです。ブラウザのクライアントフィンガープリントではありません。
certificate / private-key必要に応じて指定
ペアで指定すると mTLS が有効になります。PEM の内容または対応するファイルパスを指定できます。

認証付き HTTPS ノードの例

この例では、アップストリーム TLS と Basic 認証を同時に有効にしています。アップストリームで認証が不要な場合は、次を削除します: usernamepasswordアップストリームが平文の HTTP プロキシである場合は、次を削除します: tlssni

  • TLS ハンドシェイクエラーが発生した場合は、まずアップストリームが実際に HTTPS プロキシサービスを提供しているか確認してください。
  • 407 Proxy Authentication Required が発生した場合は、アカウント、パスワード、アップストリームで許可されている認証方式を確認してください。
  • CONNECT method not allowed が発生した場合、アップストリームがフォワードプロキシではないか、CONNECT メソッドが許可されていない可能性があります。
YAML
proxies:
  - name: http-upstream
    type: http
    server: proxy.example.com
    port: 443
    username: user
    password: pass
    tls: true
    sni: proxy.example.com