プロキシプロトコルを選ぶとき、多くの人は「使えるか?」しか問いません。しかしステルス性能・スループット・設定の複雑さには大きな差があります。この記事ではClash/Mihomoがサポートする主要プロトコルを基本原理から比較し、ネットワーク環境に合った最良の選択ができるよう解説します。
VMess:V2Rayのフラッグシッププロトコル
VMess はV2Rayプロジェクトが設計した暗号化トランスポートプロトコルで、Clashで最も早くから広く使われてきたプロトコルの一つです。VMess は認証情報としてUUIDを使用し、タイムスタンプチェック(サーバーとクライアントの時刻差が90秒以内)を組み込むことでリプレイ攻撃を効果的に防ぎます。
VMess はパケットヘッダーを難読化するため、プロトコル単体でもある程度のトラフィックフィンガープリント耐性があります。ws + TLS(WebSocket over TLS)やgrpc + TLSトランスポートと組み合わせると、通常のHTTPSとほぼ見分けがつかなくなります。主な欠点は、高レイテンシ環境ではQUICベースのプロトコルと比較してヘッダー暗号化オーバーヘッドがやや高いことと、時刻同期要件がサーバー側のオペレーション負担を若干増加させることです。
proxies: - name: vmess-ws type: vmess server: example.com port: 443 uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx alterId: 0 # 0でAEAD暗号化を有効化(推奨) cipher: auto tls: true network: ws ws-opts: path: /api/v1/ws headers: Host: example.com
VLESS:軽量な後継プロトコル
VLESSはVMessの軽量化された後継です。VMessの対称暗号化レイヤーを削除し、すべての暗号化責任を外側のTLSに委ねることで、CPUオーバーヘッドの削減とスループットの向上を実現します。XTLS Visionフロー制御と組み合わせると、VLESSは内部TLSデータをそのまま通過させることができ、二重TLSのパフォーマンスコストを回避できます。高帯域幅シナリオで最強の選択肢です。
注意:VLESSはTLSなしで使用すべきではありません。セキュリティは完全に外側のTLSレイヤーに依存しています。またalterIdはサポートしておらず、認証はUUIDのみで行われます。
Trojan:TLS自体を偽装に使う
TrojanはVMess/VLESSとはまったく異なる設計思想を持ちます。トラフィックを「HTTPSに見せかける」のではなく、本物のTLS上で直接動作します。TLSハンドシェイク後、クライアントは認証のためにパスワードを送信します。パスワードが正しくないリクエストは実際のWebサーバー(例:Nginx)に転送されるため、ファイアウォールやDPIシステムのアクティブプローブには正規のHTTPS応答が返されます。
Trojanのアクティブプローブ耐性は際立った特徴です。たとえ検査者がTrojanサーバーに直接接続しようとしても、正しいパスワードがなければプローブトラフィックは実際のWebバックエンドに転送され、検査者はそれがプロキシであることを判別できません。トレードオフとして、セットアップがより複雑(実際のドメイン名と有効な証明書が必要)で、VLESS+XTLSと比較して単一接続のスループットがやや低くなります。
proxies: - name: trojan-node type: trojan server: example.com port: 443 password: your-password sni: example.com skip-cert-verify: false # 本番環境では絶対にtrueにしない udp: true
Hysteria2:QUIC时代のスピードチャンピオン
Hysteria2はQUIC(UDP上の多重化・信頼性のあるトランスポート)上に構築され、BBR輻輳制御と積極的な帯域幅利用戦略を採用しています。高パケットロス・高レイテンシのリンクでは、Hysteria2はすべてのTCPベースプロトコルを大幅に上回るパフォーマンスを発揮します。テストでは、30%パケットロス環境でHysteria2はほぼフル帯域幅を維持できる一方、TCPベースプロトコルは10%以下に落ちることが確認されています。
トレードオフ:Hysteria2のUDPトラフィックはより特徴的なフィンガープリントを持ち、UDPを積極的に制限するネットワーク(一部のキャンパスや企業ネットワーク)ではスロットリングまたはブロックされる可能性があります。また輻輳アルゴリズムが大量のアップストリーム帯域幅を消費するため、アップリンク容量が限られたVPSインスタンスには適さない場合があります。
upとdownフィールドには実際の帯域幅(Mbps)を設定してください。高すぎる値を設定すると輻輳アルゴリズムが過剰に積極的になり、かえってパフォーマンスが低下します。まず実際の帯域幅を計測してください。proxies: - name: hy2-node type: hysteria2 server: example.com port: 443 password: your-password up: 50 Mbps down: 200 Mbps sni: example.com skip-cert-verify: false
プロトコル選択早見表
| プロトコル | トランスポート | ステルス性 | 高レイテンシ性能 | 設定複雑さ | 適したシナリオ |
|---|---|---|---|---|---|
| VMess+WS+TLS | TCP | ★★★★☆ | 中程度 | 中程度 | 汎用・幅広い互換性 |
| VLESS+XTLS | TCP | ★★★★★ | 中程度 | やや高 | 高帯域幅・パフォーマンス優先 |
| Trojan | TCP | ★★★★★ | 中程度 | 中程度 | アクティブプローブ耐性・自己ホスト |
| Hysteria2 | UDP/QUIC | ★★★☆☆ | 最強 | 低 | 高パケットロス・高レイテンシ環境 |
一つの設定に複数プロトコルを混在させる
Clashでは異なるプロトコルのノードを同じプロキシグループに混在させることができます。実践的なアプローチ:Hysteria2ノードとTCPプロトコルノードをurl-testグループに追加します。Clashが自動的にベンチマークして最速を選択します。ネットワーク環境がQUICに有利な場合はHysteria2が選ばれ、UDPが制限されているときは自動的にTrojanやVMessにフォールバックします。