VMess と VLESS の違い:一般ユーザーが知っておくべき 4 つのポイント
VMess と VLESS の違いを、認証方式、転送層への依存、暗号化方式、クライアント互換性の 4 つの対比で整理し、日常使いでどこに注意すべきかを解説します。
全文を読む →v2rayN · v2rayNG · v2flyNG
v2rayN、v2rayNG、v2flyNG の 3 つの GUI クライアントのダウンロード先と設定方法を当サイトに集約。Windows、macOS、Android、Linux の 4 プラットフォームを網羅し、それぞれに サブスクリプション登録の手順と JSON 設定ファイルのリファレンスを用意しているので、インストールからルーティング分割まで対応する書き方を確認できます。
設定テーマ
サブスクリプション、ルーティング、コア、システムプロキシは日常的に調整する機会が多い 4 つの設定です。各テーマについて、そのまま参照できる設定の書き方と、それが何を解決するのか、エラー時にどこを先に確認すべきかをまとめました。項目の一覧とサンプルは設定リファレンスページに集約しています。
{
"remarks": "メイン購読",
"url": "https://example.com/sub?token=xxxx",
"autoUpdateInterval": 360, // 単位:分
"enabled": true
}
サブスクリプションはノード情報とクライアントをつなぐ中間層です。1 つのサブスクリプション URL がサーバー側で管理された設定の集合を指し、クライアントは設定した間隔で再取得するため、ノードの増減に手動で設定を書き換える必要はありません。v2rayN ではサブスクリプションのグループごとに自動更新の間隔を個別に設定でき、よく使われるのは 6 時間から 24 時間です。短すぎるとリクエストが頻発し、長すぎるとノードの変更が反映されるまで時間がかかります。更新に失敗したときは、まずサブスクリプション URL が欠けていないかを確認し、次に端末の時刻とネットワーク状態を確認し、最後にログページの応答内容を見てください。Android 版はサブスクリプショングループのページを下に引っ張るだけで手動更新できます。
サブスクリプションの項目と更新の仕組み →{
"domainStrategy": "IPIfNonMatch",
"rules": [
{ "type": "field", "outboundTag": "direct", "domain": ["geosite:cn"] },
{ "type": "field", "outboundTag": "proxy", "domain": ["geosite:geolocation-!cn"] },
{ "type": "field", "outboundTag": "direct", "ip": ["geoip:private"] }
]
}
ルーティングはどの通信をプロキシ経由にし、どれを直接接続にするかを決めます。上の書き方では、中国本土のサイトと LAN のアドレスを direct アウトバウンドへ、それ以外のドメインを proxy アウトバウンドへ振り分け、domainStrategy がドメイン解決のタイミングを制御します。日常的に調整する機会が多いのは geosite と geoip の 2 つのルールセットで、前者はサイト単位、後者は IP レンジ単位で分類され、どちらもコアに内蔵されたルールファイルから提供されます。ルールを書き間違えると、ローカルサービスが開けない、一部のサイトが明らかに遅くなるといった症状が出ます。切り分けでは、まずログページでヒットしたルールの行を確認し、そのうえでルールセットを 1 行ずつ照合してください。
routing の全項目とルールの優先順位 →{
"outbounds": [{
"tag": "proxy",
"protocol": "vless",
"settings": { "vnext": [{
"address": "example.com",
"port": 443,
"users": [{ "id": "b831381d-6324-4d53-ad4f-8cda48b30811", "flow": "xtls-rprx-vision" }]
}]},
"streamSettings": { "network": "tcp", "security": "reality" }
}]
}
アウトバウンドプロトコルと転送方式は、クライアントとサーバーがどうハンドシェイクするかを決めます。VMess と VLESS は代表的なアウトバウンドプロトコルで、前者は認証用フィールドを自身に持ち、後者は認証を転送層に任せるため構造がより軽量です。転送層には tcp、ws、grpc など、セキュリティ層には tls や REALITY を選べ、3 層の組み合わせを 1 つのアウトバウンド設定に書きます。v2rayN と v2rayNG は既定で Xray コアを使用し、V2Fly コア版も用意されています。設定を読み込んだときにフィールドが認識されないと表示された場合は、多くの場合コアとプロトコルの不一致が原因なので、そのプロトコルに対応したコアに切り替えてください。
プロトコルの項目とコアの対応関係 →{
"inbounds": [{
"tag": "socks",
"listen": "127.0.0.1",
"port": 10808,
"protocol": "socks",
"settings": { "udp": true }
}]
}
システムプロキシモードでは、クライアントがローカルで 1 つのポートを待ち受け、OS やブラウザがそのポートへ通信を渡します。上はローカルインバウンドの典型的な書き方で、ループバックアドレスのみを待ち受け、LAN や外部には公開しません。v2rayN のシステムプロキシスイッチは OS のプロキシ設定を自動で書き換え、オフにすれば元に戻ります。TUN モードはすべての通信を引き受け、アプリ側のプロキシ設定に依存しません。Android 版は VpnService が仮想ネットワークインターフェースを作成し、動作は TUN モードに近くなります。設定でアプリごとにプロキシ経由か直接接続かを選べます。
inbounds とローカル待ち受けポート →Windows · macOS · Android · Linux
デスクトップは v2rayN に統一し、Android は v2rayNG と v2flyNG のどちらかを選びます。各プラットフォームのインストーラの入手先、動作要件、インストール手順はダウンロードページにプラットフォーム別にまとめてあり、下のプラットフォームカードをクリックすると該当のセクションへ移動できます。
v2rayN にはデスクトップ版とクラシック WPF 版の 2 つの入手先があります。デスクトップ版は新しい世代のクロスプラットフォーム UI で、クラシック WPF 版は機能が安定し更新ペースも緩やかです。どちらも同じ設定ファイル形式を共有します。
ダウンロードへ → macOSv2rayN は Apple Silicon と Intel の 2 種類のチップ向けインストーラを提供しています。M シリーズは arm64、旧型の Intel 機は x64 を選び、初回起動時はシステム設定で開くことを許可する必要があります。
ダウンロードへ → AndroidAndroid は v2rayNG が第一候補で、Xray コアを使用します。V2Fly コアが必要な場合は v2flyNG を選んでください。どちらも arm64 版とユニバーサル版の 2 つのインストーラがあり、2015 年以降の主要機種は arm64 を選びます。
ダウンロードへ → Linuxv2rayN は deb と rpm の 2 つのパッケージ形式を提供し、x64 と arm64 アーキテクチャに対応します。Debian、Ubuntu 系は deb、Fedora、openSUSE 系は rpm を選び、インストール後はアプリケーションメニューから起動します。
ダウンロードへ →3 ステップ
詳しい手順はチュートリアルページでプラットフォーム別に展開しています。ここでは要点だけを示します。3 つのステップに飛ばしはききません。サブスクリプションの登録が成功して初めてノードを選べるようになり、ノードに接続できて初めて振り分け設定の話になります。
お使いの OS に合わせてダウンロードページでインストーラを選びます。デスクトップと Android でそれぞれ 1 つ入れれば十分で、複数のクライアントを同時にインストールする必要はありません。設定ファイルは両プラットフォームで共通して使えます。
サーバー側から提供されたサブスクリプション URL をコピーし、クライアントのサブスクリプショングループで新規作成して貼り付け、保存後に一度手動更新すると、ノード一覧がサーバーページに表示されます。
デスクトップでは先にシステムプロキシまたは TUN モードを有効にしてから、ノードを選んで接続します。Android では接続前に VpnService の権限が許可されていることを確認してください。接続後は通知バーに常駐の通知が表示されます。
Project V · V2Fly · Xray
3 つのクライアントはいずれも独立したプロジェクトではなく、Project V エコシステムの GUI 層です。クライアント、コア、設定ファイルの 3 者の役割分担を理解しておくと、フィールドが認識されない、接続がおかしいといったときに原因を特定しやすくなります。
Project V は V2Ray を中核とするプロキシツール群で、当初はコミュニティの開発者によって始められ、後に V2Fly と Xray という 2 つの主要なコアブランチに分かれました。コアはプロトコル実装、暗号化、転送を担当し、GUI は提供しません。一般ユーザーが直接触れる v2rayN、v2rayNG、v2flyNG はいずれもコアの上に成り立っており、設定ファイル、サブスクリプション管理、システム連携をクリックできる UI に包んだものです。この階層化の直接的な利点は、同じ設定ファイルを別のクライアントへ移行できることです。クライアントを変えてもノードを設定し直す必要はありませんし、トラブルシューティングでも UI とコアを切り分けて判断できます。
V2Fly と Xray は現在の 2 大コア系統です。V2Fly は Project V のオリジナル実装を引き継ぎ、対応プロトコルの範囲は保守的です。Xray は V2Fly をベースに VLESS、XTLS、REALITY といった比較的新しいプロトコルと転送機能を拡張し、更新ペースも速くなっています。v2rayN と v2rayNG は既定で Xray コアを使用しつつ、旧プロトコルとの互換性が必要な場面向けに V2Fly コア版も用意しています。v2flyNG は Android 側で V2Fly コアに対応するクライアントです。2 つのコアは同じ JSON 設定構造を共有し、フィールド名もほぼ一致しますが、一部の新しいプロトコルのフィールドは Xray でのみ利用できます。設定を読み込んでフィールドが認識されないと表示されたら、まず現在使っているコアを確認してください。
3 つのクライアントはいずれもオープンソースライセンスで公開され、ソースコードは誰でも確認でき、コミュニティが独自にビルドして配布することもできます。オープンソースである直接の利点は、設定形式、フィールドの意味、プロトコル実装について公開の議論が残っていることです。見慣れないフィールドがあれば、コアのドキュメントと照らし合わせて確認できます。クライアント自体はノード情報を含まず、中央サーバーにも依存しません。ノードはユーザー自身のサーバーまたはサブスクリプションが提供し、クライアントは設定ファイルに従って接続を開始するだけです。サブスクリプション URL とノード情報はすべて端末内に保存されます。
更新の仕組みは 2 つの層に分かれます。クライアントのバージョンは UI 機能とコアのバージョンに追随し、サブスクリプションの中身はサーバー側が管理してクライアントが一定間隔で取得するため、両者は互いに影響しません。日常使いでクライアントを頻繁に乗り換える必要はありません。むしろ多いのは、コアのバージョンアップに伴って設定フィールドが変わるケースです。アップグレード後にフィールドが認識されない場合は、まず設定リファレンスの該当章の書き方と照合してください。当サイトのリファレンスは現行の主要バージョンの設定構造に合わせて整理しており、フィールドの例は汎用的な書き方のみを掲載しています。具体的な値はサーバー側から配布される設定に従ってください。
最近の記事
サブスクリプションの更新、ノードの選び方、プロトコルの違いなどよく聞かれる話題を独立した記事にまとめました。1 記事につき 1 テーマで、対応する設定の書き方も添えています。
VMess と VLESS の違いを、認証方式、転送層への依存、暗号化方式、クライアント互換性の 4 つの対比で整理し、日常使いでどこに注意すべきかを解説します。
全文を読む →base64 サブスクリプション、ネイティブ JSON 設定、vmess・vless 共有リンクという 3 つの形式の違いを比較し、どの場面でどれを使うべきか、変換時にもっとも情報が欠落しやすい箇所を説明します。
全文を読む →v2rayNG のシステムレベルの設定を 3 点解説します。VpnService の権限と常駐通知、バックグラウンドで停止されないよう v2rayNG を省電力ホワイトリストに追加する方法、そしてアプリごとにプロキシ経由か直接接続かを選ぶ設定です。
全文を読む →よくある質問
結論を先に示し、詳しい説明は用語集と設定リファレンスページに、操作手順はチュートリアルページにあります。
VMess と VLESS はどちらを選ぶべき?
一般的な用途ではどちらでも問題ありません。VLESS は構造がより軽量で、REALITY と組み合わせる書き方がよく使われます。すでに接続できている設定があるなら乗り換える必要はありません。プロトコルを変える場合はサーバー側も合わせて調整する必要があります。
用語集 →サブスクリプションを登録したのにノード一覧が空のときは?
まずサブスクリプション URL が欠けていないか、端末の時刻が正確かを確認し、そのうえで手動更新を一度実行してください。失敗の多くは URL が途中で切れている、ネットワークにつながっていないの 2 パターンで、更新ログに応答ステータスが記録されます。
チュートリアルページ →ルーティングルールの geosite と geoip とは?
ドメインと IP レンジで分類された 2 つのルールセットです。geosite はサイト単位、geoip は地域の IP レンジ単位で分類され、振り分けルールはこれらを使って通信をマッチングします。コアに内蔵されたルールファイルから提供されます。
用語集 →デスクトップと Android で同じサブスクリプションを使えますか?
使えます。サブスクリプションの中身と設定ファイルの形式は両プラットフォームで共通で、クライアント側の解釈が違うだけです。同じサブスクリプションをそれぞれ登録すれば、ノードの増減も同期して反映されます。
設定リファレンス →