vmess:// または vless:// のテキストを初めて受け取ったものの、どこに貼り付ければよいか分からない方に向けた記事です。2種類のリンクの項目、HTTPサブスクリプションURLとの違い、v2rayN・v2rayNGでのクリップボードとQRコードからの取り込み手順、失敗時の確認順を解説します。
共有リンクとサブスクリプションは別の入口
vmess:// と vless:// は、いずれも単一ノードの共有リンクです。クライアントがリンクを解析すると、通常はアドレス、ポート、ユーザー識別子、トランスポート方式、安全設定を含む1件のサーバー設定が追加されます。共有リンクを3本コピーして一括で取り込めば、3つの独立した設定になります。元のテキストが後から変更されても、これらの設定は自動更新されません。
サブスクリプションリンクは通常、https:// で始まるネットワークアドレスです。クライアントがそのアドレスへアクセスすると、サーバーから複数のノード情報が返されます。内容はBase64でまとめられたテキストの場合も、クライアントが認識できる構造化データの場合もあります。サブスクリプショングループが保存するのは「一覧を取得するアドレス」なので、手動または定期的に更新でき、追加・削除・パラメータ変更も次回取得時に反映されます。
単一共有リンク
取り込み後にローカルノードが1件作成されます。一時的なテスト、個別の移行、特定プロトコル設定の確認に適しています。後からパラメータが変わった場合は、再取り込みまたは手動編集が必要です。
適しているケース:vmess:// または vless:// のアドレスを1つだけ受け取った場合
サブスクリプションリンク
おすすめ一度に複数のノードを取得し、サブスクリプショングループで更新関係を管理します。デスクトップとAndroidで同じサブスクリプションアドレスを個別に保存できます。
適しているケース:複数ノードと複数端末の一覧を継続的に管理する場合
| 比較項目 | 共有リンク | サブスクリプションリンク |
|---|---|---|
| よくある先頭部分 | vmess://、vless:// |
https:// |
| 1回の取り込み結果 | 1ノードにつき1リンク | 1つのサブスクリプショングループに複数ノード |
| 更新方法 | 再取り込みまたは設定を編集 | 手動更新、またはクライアント設定に従った自動更新 |
| 主な入口 | クリップボードから取り込み、QRコードをスキャン | サブスクリプショングループ設定、サブスクリプション設定 |
vmess:// と vless:// に保存されている情報
VMessの共有形式では、JSONをエンコードした文字列を vmess:// の後ろに置くのが一般的です。デコード後の v は通常 2、add はサーバーアドレス、port はリモートポート、id はUUIDです。net と type はトランスポート設定、tls や sni などはセキュリティ層を示します。生成元によって空の項目が省略されることはありますが、アドレス、ポート、ユーザー識別子が有効な接続設定を構成できる必要があります。
以下は項目を説明するためのVMess JSONです。例では予約済みドメインを使用しているため、実際の接続には使えません。取り込み後にクライアントへどの設定項目が生成されるかを示すものです。
{
"v": "2",
"ps": "VMess WS サンプル",
"add": "node.example.com",
"port": "443",
"id": "8f4c756b-3d92-4f9a-9f52-3e4b1d6a7280",
"aid": "0",
"scy": "auto",
"net": "ws",
"type": "none",
"host": "node.example.com",
"path": "/gateway",
"tls": "tls",
"sni": "node.example.com"
}
VLESSの共有形式は標準URIに近く、ユーザー識別子は @ の前、サーバーとポートはその後ろに置かれます。トランスポートとセキュリティ設定はクエリパラメータに記述し、# の後ろが表示名です。項目を読みやすいため、トラブルシューティングでは security、type、flow、sni、pbk、sid の欠落を直接確認できます。
vless://[email protected]:443?encryption=none&security=reality&sni=www.example.com&fp=chrome&pbk=Yfg3cV9mR7wP2nK6aB4dL8sQ1xT5uH0jE9zN2pM6rA0&sid=6ba85179&type=tcp&flow=xtls-rprx-vision#VLESS%20REALITY%20サンプル
結論:プロトコル名だけでは判断できない
取り込みに成功しても接続できない場合、VMessまたはVLESSだけを確認してはいけません。ポート、トランスポート形式、TLSまたはREALITY、安全用ドメイン、パス、flowを順に比較してください。どれか1つでもサーバー側と一致しなければ、ハンドシェイクに失敗する可能性があります。
v2rayNでクリップボードから共有リンクを取り込む
以下では、v2rayN 7.15.4の日本語画面を確認用の例として説明します。7.xの各バージョンではメニュー名が変更される場合がありますが、処理の順序は同じです。まず共有テキスト全体をコピーし、クライアントにクリップボード内の対応URIを読み取らせます。コピー時に引用符を追加したり、チャットアプリに表示された説明文まで選択したりしないでください。
複数のリンクを受け取った場合は、各URIを1行ずつ配置します。v2rayNの一括取り込みでは、対応プロトコルを行単位で認識します。通常の説明文、空行、解析できないテキストから設定が生成されることはありません。取り込み後は、すぐに追加件数を確認してからシステムプロキシを有効にしてください。
- v2rayNを起動し、メインウィンドウが表示され、コアコンポーネントが正常に読み込まれたことを確認します。
- 完全な
vmess://またはvless://テキストをコピーします。一括取り込みでは、1行に1本のリンクを置きます。 - 「サーバー」メニューを開き、「クリップボードから一括URLを取り込む」を選択します。7.xの一部の画面では、サーバー一覧にフォーカスを置いて Ctrl + V を使うこともできます。
- サーバー一覧から追加されたレコードを見つけ、ダブルクリックで編集画面を開きます。アドレス、ポート、UUID、トランスポート方式、セキュリティ形式を確認してください。
- 対象ノードを右クリックしてアクティブサーバーに設定し、用途に応じて「システムプロキシ」またはTUNモードを選択します。
- 「設定」→「パラメータ設定」でローカルのリスニングポートを確認します。この記事のテスト設定ではSOCKSを
10808、HTTPを10809としています。ポートが他のプログラムに使用されている場合は、空いているポートへ変更してコアを再起動してください。
取り込み後は項目を確認してから接続テストを行う
WebSocket経由のVMess設定では、HostとPathを特に確認してください。たとえばサーバー側のパスが /gateway なのに、クライアント側が / になっていると、アドレス、ポート、UUIDが正しくても想定どおりに通信できません。VLESS REALITYでは、security=reality、Server Name、Public Key、Short ID、Fingerprint、flow=xtls-rprx-vision を同時に確認します。
ノードを選択したら、v2rayNのログを開き、失敗した段階がドメイン解決、TCP接続、ハンドシェイクのどこかを確認できます。ポート競合なら先にローカルのリスニング設定を修正し、接続タイムアウトならリモートアドレスとネットワークを確認します。ハンドシェイクエラーならノード編集画面に戻り、安全設定を照合してください。この順序のほうが、何度も削除と再取り込みを繰り返すより問題を特定しやすくなります。
v2rayNGでクリップボードまたはQRコードから取り込む
以下では、v2rayNG 1.10.31の一般的な画面を例に説明します。v2rayNGはXrayコアを使用し、VMess、VLESS、VLESS REALITYなどの設定を認識できます。Androidではバックグラウンド動作が制限される場合があります。取り込み成功は設定が一覧に保存されたことを示すだけで、接続が維持されるかどうかはアプリの動作状態とシステムのネットワーク設定にも左右されます。
同じ端末でテキストを受け取った場合はクリップボードからの取り込みが最も簡単です。QRコードが別の画面に表示されている場合は、スキャンのほうが便利です。QRコードは共有URIを画像化したものにすぎず、読み取り後の項目は同じテキストを貼り付けた場合と完全に同じです。単一ノードのリンクがサブスクリプションに変わるわけではありません。
- 共有リンク全体をコピーし、v2rayNGのメイン画面を開きます。
- 右上の追加ボタンをタップし、「クリップボードからインポート」を選択します。成功すると、ノード名が設定一覧に表示されます。
- リンクがQRコードで表示されている場合は、「QRコードをスキャン」を選択し、カメラの権限を許可してQRコード全体をフレーム内に収めます。
- 新しい設定をタップして現在の選択項目にし、編集画面でアドレス、ポート、ユーザーID、トランスポートプロトコル、安全オプションを確認します。
- メイン画面の接続ボタンをタップし、システムがローカルプロキシ接続を確立したことを確認します。対象アプリを限定する場合は、「設定」のアプリ別プロキシ項目で範囲を設定します。
- ローカルポートを確認するには、サイドメニューの「設定」を開き、ローカルSOCKSリスニングポートを確認します。この記事の例では
10808に設定しています。他のアプリを手動設定する場合は、同じポートを入力する必要があります。
取り込み方法:リンクの場所に応じて入口を選ぶ
リンクが現在の端末にある場合
- 長押ししてURI全体をコピー
- 「クリップボードからインポート」を選択
- 取り込み後にノード名とポートを確認
QRコードが別の画面にある場合
- 「QRコードをスキャン」を選択
- 画像を欠けさせず、鮮明な状態に保つ
- スキャン後にREALITYまたはTLSの項目を確認
同じURIをクリップボードとQRコードから取り込んだ場合、得られるノード項目は一致するはずです。一致しない場合は、QRコードの有効期限やテキストの欠落を確認してください。
取り込みに失敗する、または取り込めても接続できない場合の確認方法
まず「解析失敗」と「接続失敗」を分けて考えます。解析失敗では、取り込み後も一覧に新しいレコードが追加されません。原因はリンクのテキスト、エンコード、クライアントの対応範囲にあることが多いです。接続失敗では設定は生成されますが、実行ログにタイムアウト、接続拒否、ハンドシェイク異常などが表示されます。2種類の問題には、それぞれ異なる確認手順があります。
貼り付け後に有効なリンクが見つからないと表示される場合
テキストが vmess:// または vless:// から末尾まで連続してコピーされていることを確認します。先頭の箇条書き記号、日本語の引用符、末尾の句点を削除してください。一括テキストは1行1URIにしてから、もう一度取り込みます。
VMessでノードは作成されるが、名前とアドレスが空の場合
Base64の内容が不完全か、デコード後のJSON構造が壊れている可能性があります。元のリンクを再コピーし、チャットツールが途中に改行を挿入していないか確認してください。不明な add、port、id を手動で補わないでください。
VLESS REALITYを取り込んだ後、ハンドシェイクに失敗し続ける場合
セキュリティ形式REALITY、Server Name、Public Key、Short ID、Fingerprint、flowを順に確認します。サーバー側がVisionを使用している場合、クライアントのflowも通常は一致させる必要があります。
ノードは接続済みなのに、ブラウザーでWebページを開けない場合
デスクトップではv2rayNのシステムプロキシ状態を確認し、ブラウザーが別のプロキシポートを固定使用していないか確認します。Androidではv2rayNGの接続状態が維持されていることを確認してください。その後、ログにDNSエラーやローカルポート競合がないか確認します。
再取り込み後に同名ノードが複数表示される場合
共有リンクにはサブスクリプショングループの更新関係がないため、クライアントは通常、再取り込みを新しい設定として扱います。まずアドレス、ポート、UUIDを比較し、重複を確認してから古いレコードを削除してください。複数ノードを長期利用する場合は、サブスクリプショングループで管理します。
| 症状 | 優先して確認する項目 | 次の手順 |
|---|---|---|
| 取り込み件数が0 | プロトコルヘッダー、改行、テキストの完全性 | 元のURIを再コピー |
| 設定はあるが接続がタイムアウトする | リモートアドレス、ポート、現在のネットワーク | コアの接続ログを確認 |
| TLSハンドシェイク異常 | SNI、Host、システム時刻 | 設定の提供元と項目ごとに照合 |
| REALITYハンドシェイク異常 | pbk、sid、fp、flow | 完全なリンクを再取り込み |
| ブラウザーがプロキシを使用していない | システムプロキシの状態、10808、10809 | アプリとクライアントのポートを統一 |
端末の時刻も確認してください。TLSとREALITYのハンドシェイクには正しい時刻環境が必要です。システムの日付が大きくずれていると、証明書やハンドシェイクのエラーが発生することがあります。日付とタイムゾーンを自動設定にしてクライアントを再起動し、もう一度接続テストを行えば、端末時刻の影響を切り分けられます。
単一ノードをサブスクリプション管理に切り替えるタイミング
1つのノードだけをテストするなら、共有リンクが最も手軽です。ノード数が増えると、1本ずつコピーすることで重複レコードや古いパラメータの問題が起こります。特にアドレス、ポート、トランスポートパス、REALITYパラメータが変更されても、ローカルの古いリンクは自動では変わりません。その場合は、設定提供元から明確なサブスクリプションアドレスを取得し、クライアントに更新関係を保存してください。
v2rayNでは、サブスクリプションの入口は通常「サブスクリプショングループ」→「サブスクリプショングループ設定」にあります。グループを追加して別名とサブスクリプションアドレスを入力・保存し、「すべてのサブスクリプションを更新」を実行します。v2rayNGでは「サブスクリプション設定」を開き、アドレスを追加してメイン画面に戻り、サブスクリプションを更新します。取り込み済みの数十件の単一ノード設定を、更新可能なグループと勘違いしないでください。
- VMessまたはVLESSのノードを1つだけ一時確認する:クリップボードから取り込む。
- デスクトップからAndroidへノードを1つ移行する:同じURIまたはQRコードで取り込み、項目を再確認する。
- 頻繁に変わる十数件のノードを管理する:サブスクリプショングループを使い、1件ずつ上書きしない。
- サブスクリプション内の特定ノードだけに問題がある:まずそのノードのパラメータを確認し、サブスクリプション全体をすぐ削除しない。
- 手動変更した設定を残したい:独立したノードとして複製して名前を変更し、次回のサブスクリプション更新でグループ内容が上書きされないようにする。
結論:更新関係が必要かどうかで選ぶ
単一ノードの共有は「この設定を取り込む」ためのもの、サブスクリプションは「この設定群を今後も更新する」ためのものです。ノード数だけでなく、継続的な同期が必要かどうかを基準にすると、より安定して判断できます。
共有前に全パラメータを保ち、共有範囲を管理する
共有URIには通常、接続に使うUUID、サーバーアドレス、トランスポートパラメータが含まれるため、接続用の認証情報として扱ってください。コピー時は内容を完全に保ち、転送時は受信者と利用範囲を確認します。現在使用中のリンクを公開しないでください。リンクの提供元が接続識別子を更新した場合は、古い設定を削除して新しい内容を取り込みます。
確認が終わったら、ノード名にプロトコル、地域、用途などを追加できます。たとえば「VLESS REALITY 日常用」や「VMess WS テスト」です。名前はローカルで識別するためだけのもので、接続には影響しません。接続結果を左右するのは、アドレス、ポート、ユーザー識別子、トランスポート層、安全パラメータです。