プロキシプロトコルはどれを選ぶ?Shadowsocks / VMess / Trojan / Hysteria2 徹底比較
ノード名の後ろにはよくプロトコル名が付いていますが、自分のサブスクリプションが実際にどのプロトコルを使っているのか、それぞれ何が違うのかを理解していない人は少なくありません。この記事では暗号化方式・検閲耐性・速度という3つの観点から比較を掘り下げ、「同じプロバイダーがなぜ複数のプロトコルのノードを同時に提供しているのか」を理解する手がかりを示します。
なぜこれほど多くのプロトコルが存在するのか
本質的に、すべてのプロキシプロトコルが解決しようとしている問題は同じです:通信を暗号化・偽装してサーバーに送り、そこから転送する——しかもできる限り「プロキシ通信」だと識別されないようにする、というものです。
しかし検閲技術も継続的に進化しており、初期のプロトコルの暗号化特徴は次第に識別されるようになったため、コミュニティは通信パターンの識別に対抗する新しいプロトコルを次々と設計してきました。それがShadowsocksからHysteria2へと続く進化の道筋です。この「軍拡競争」的な背景を理解すれば、なぜどのプロトコルも「永遠に最良」とは言えないのかが分かります。
Shadowsocks (SS):老舗の軽量プロトコル
最も早く広まった暗号化プロキシプロトコルで、シンプル・高速・低実装コストを目標に設計されており、ほぼすべてのクライアント・プラットフォームがネイティブに対応しています。
メリット
- プロトコル自体が非常に軽量で、暗復号のオーバーヘッドが小さく高速
- エコシステムが最も成熟しており、サーバー/クライアントの実装が最も多い
- 設定がシンプルで、
パスワード + 暗号方式 + ポートだけで済む
デメリット
- 通信の特徴が比較的固定的で、検閲が厳しいネットワーク環境では識別されやすい
- それ自体には通信の偽装機能がない(
obfsプラグインと組み合わせて難読化することは可能)
検閲の圧力があまり強くないネットワーク環境で、速度と安定性を重視するなら、Shadowsocksは今でもコストパフォーマンスの高い選択肢です。
VMess:V2Rayエコシステムの中核プロトコル
V2Rayプロジェクトが提唱したプロトコルで、Shadowsocksをベースに身分認証(UUID)とより柔軟なトランスポート層のラッピング機能を追加しています。WebSocketやgRPCなど複数の伝送方式に載せた上でさらにTLS暗号化を重ねることで、正常なHTTPSウェブサイトの通信にさらに偽装できます。
VMess自体は「内側のプロトコル」であり、実際の検閲耐性は外側の伝送方式の選択に大きく依存します——同じVMessでも、素のTCPとWebSocket + TLSを重ねたものでは挙動が大きく異なります。
デメリットは設定項目が比較的多いこと(伝送方式、パス、TLSドメインなどをすべて正しく合わせる必要がある)で、ミスも起きやすくなります。設定を丁寧に調整する時間をかけられ、より強い識別耐性を求める場面に向いています。
Trojan:HTTPSに偽装するプロトコル
Trojanの設計思想はより「攻撃的」です:自身を標準的なHTTPSサービスとして直接偽装し、TLSハンドシェイクや証明書は本物として有効です。通信の特徴は通常のウェブサイトへのアクセスとほとんど区別がつかず、検閲システムが通信パターンだけで普通のウェブサイトアクセスと区別することは非常に困難です。
- 実在するドメインと有効な証明書が必要(Let's Encryptの無料証明書で問題ない)
- プロトコル自体の設計がシンプルで、VMessの複雑な伝送ラッピングよりパフォーマンスオーバーヘッドが小さい
- 「見た目が普通のウェブサイト」であるため、多くの場面で検閲耐性が優れている
利用者側から見ると、Trojanノードの設定は通常VMessより簡単です——複雑さの大部分はサーバー構築の段階にあり、クライアント側はアドレス・パスワード・ドメインの数項目だけで済みます。
Hysteria2:QUICベースの新世代プロトコル
前述のプロトコルの多くはTCPベースですが、Hysteria2はQUIC(UDP)を基盤とする新世代プロトコルで、2つの課題の解決に重点を置いています:不安定/パケットロスの多い環境での耐障害性、そしてより積極的な輻輳制御による速度向上です。
| 特性 | 従来のTCP系プロトコル | Hysteria2 |
|---|---|---|
| トランスポート層 | TCP | QUIC (UDP) |
| 不安定な環境での挙動 | パケットロス時の再送コストが高く、途切れやすい | 輻輳制御の最適化を内蔵し、不安定な環境でもスムーズ |
| よくある制限 | 速度制限を受けにくい | 一部のネットワークではUDPに速度制限がかかる場合があり注意が必要 |
あなたのネットワークがUDPにあまり対応していない(一部の公共Wi-Fiや企業ネットワークではUDPを制限している)場合、Hysteria2の速度の優位性は発揮されにくくなります。そのような場合は、TCP系プロトコルに戻したほうがむしろ安定します。
難読化と二重暗号化:プロトコルにもう一枚の偽装を
プロトコル自体の設計に加え、多くの実装ではさらに外側に難読化や暗号化のレイヤーを重ねることをサポートしており、識別される確率をさらに下げられます:
obfs 難読化プラグイン
- Shadowsocksと組み合わせて使われることが多く、通信を普通のHTTP/TLSハンドシェイクのように見せかける
- 処理のオーバーヘッドが追加されるが、単純な通信識別ルールに引っかかる確率を効果的に下げられる
REALITY / XTLS
- より新しい検閲耐性の方式で、実在するウェブサイトのTLS証明書ハンドシェイクを借りて偽装するため、そのサイトへの正常なアクセスとほぼ区別できない
- サーバー側の設定要件はより高いが、現時点でコミュニティの評価では識別耐性が特に強いとされている
この「プロトコル+難読化」の組み合わせは、通常サブスクリプション事業者がサーバー側で事前に設定しています。一般ユーザーとしては、「REALITYやXTLSのような名前を見かけたら、大体は元のプロトコルに追加の検閲耐性強化が施されている」と理解しておくだけで十分で、自分で設定する必要はありません。
どう選ぶか:3つの実用的な判断基準
- まずサブスクリプションが実際に何を提供しているかを確認する——プロトコルはプロバイダー側が決めるものなので、多くの場合あなたは「プロトコルを選ぶ」のではなく「ノードを選ぶ」だけです。あまり深く悩む必要はありません。
- 速度重視かつネットワークがUDPに友好的な場合:Hysteria2を選ぶ。速度重視だがUDPが制限されている場合:Shadowsocksが最も手間がかからない選択肢。
- 検閲の圧力が強いネットワーク環境:TrojanまたはTLSを重ねたVMessを優先し、多少の速度を犠牲にしてより強い検閲耐性を得る。
Clashの設定では、異なるプロトコルのノードを同じ proxy-groups に混在させることができ、url-testによる自動速度テストと組み合わせれば、クライアント自身が現在最速のものを自動的に選んでくれるので、「どのプロトコルを選ぶべきか」に手動で頭を悩ませる必要はありません。
自分でサーバーを構築できる場合(サブスクリプション事業者に完全に依存しない場合)は、この考え方を逆に活用することもできます:日常使いにはTrojanやREALITYを使った実装を優先的に配置して速度と検閲耐性のバランスを取り、さらに不安定なネットワーク環境向けの予備としてHysteria2ノードを1〜2つ用意しておく——両者を補完的なものとして捉え、無理に唯一の「最適解」を選ぶ必要はありません。