v2rayNGでVLESS Realityを利用する場合、単に「VLESS」を選ぶだけでは接続できません。サーバーアドレスやポートに加えて、UUID、SNI、公開鍵、Short ID、フィンガープリント、必要に応じてxtls-rprx-visionの設定まで、サーバー側と一致させる必要があります。本記事では、Android版v2rayNGでノードを手動追加する流れを中心に、各入力項目の意味、Xrayコアの選択、接続できない場合の確認順序を説明します。
v2rayNGでVLESS Realityを設定する人向けに、サーバー提供者から受け取るべき値を整理し、ノード追加からVPN接続、ログ確認までを順番に解説します。特に、REALITYの公開鍵とShort IDをTLSの証明書情報と混同しないための確認方法が分かります。
VLESS Realityの基本構成を先に理解する
VLESSはユーザー識別子を使って認証する軽量なプロトコルです。VLESS単体が通信全体を暗号化するのではなく、TLSやREALITYなどの外側のセキュリティ層と組み合わせて利用します。したがって、設定画面に表示されるencryption=noneは、通信全体が平文になるという意味ではありません。VLESSプロトコル内部で追加の暗号化を行わない、という意味です。実際の保護は、ここで指定するREALITYの設定とサーバー側のXray構成に依存します。
REALITYは、通常の公開TLS証明書をクライアントへ配布する方式とは異なり、接続時の認証に公開鍵、Short ID、SNIなどを利用します。Android側では、サーバーのIPアドレスまたはドメイン、待受ポート、UUID、接続先として見せるSNI、公開鍵、Short ID、TLSフィンガープリントを正確に入力します。1文字でも違うと、ノードの保存や選択はできても、実際の接続は失敗します。
判断のポイント:項目を省略しない
VLESS Realityは「VLESSのノードにTLSを追加するだけ」の設定ではありません。公開鍵、Short ID、SNI、フィンガープリントは相互に置き換えられないため、配布されたリンクをそのままインポートするのが最も安全です。
サーバー側から受け取るべき値
手動設定を始める前に、サービス提供者またはサーバー管理者から次の情報を受け取ってください。UUIDは通常、ハイフンを含む36文字の形式です。公開鍵は長い英数字、Short IDは短い16進数文字列として提供されることがあります。SNIは実際の接続先IPやVPSのホスト名ではなく、サーバー側のREALITY設定にあるserverNamesの値を指定します。
- サーバーアドレス:IPアドレスまたは接続用ドメイン。
- ポート:多くの構成では
443ですが、必ず配布情報を優先します。 - UUID:VLESSユーザーを識別する値。
- フロー:指定がある場合だけ
xtls-rprx-visionなどを入力。 - ネットワーク:一般的なReality TCP構成では
tcp。 - SNI:REALITYのサーバー名検証に使う名前。
- 公開鍵:サーバーのReality公開鍵。
- Short ID:サーバー側で許可された短い識別子。
- フィンガープリント:通常は
chromeなど、サーバー案内に従う値。
v2rayNGの入力項目と対応する値
v2rayNGの画面名は、アプリのバージョンや翻訳によって少し異なる場合があります。ここでは「設定を追加」または「手動設定」からVLESSを選び、VLESSの基本項目とTLS・REALITY項目を順番に入力する前提で説明します。まずプロトコルをVLESSにし、次にサーバーアドレス、ポート、UUIDを入力します。その後、詳細設定で暗号化方式、ネットワーク、セキュリティを指定します。
VLESS基本設定
- アドレス
- サーバーIPまたはドメイン
- ポート
- 例:443
- UUID
- 配布されたユーザーID
- 暗号化
- none
- Flow
- 指定時のみVision
UUIDとポートは、リンクの内容を手動で書き換えず、そのまま転記します。
Reality設定
- セキュリティ
- reality
- SNI
- サーバー指定の名前
- 公開鍵
- Reality public key
- Short ID
- サーバー指定の値
- 指紋
- 例:chrome
SNIはサーバーアドレスと同じとは限りません。案内に記載された値を優先します。
encryptionは、VLESSでは通常noneを指定します。ここを適当にautoや別の暗号方式へ変更すると、サーバーのVLESS設定と一致しなくなる可能性があります。flowはすべてのノードに必要な項目ではありません。サーバー側がVisionを使用し、リンクにも値が含まれている場合だけ入力してください。
ネットワークは、Reality TCPとして配布されたノードなら通常tcpを使います。WebSocketやgRPCの値を独自に選んではいけません。RealityとWebSocketを組み合わせた構成も技術的には存在しますが、その場合はパスやサービス名など別の項目が必要になります。サーバーからTCPと指定されているのに、伝送方式をWebSocketへ変更しても接続は成立しません。
セキュリティ欄のrealityを選択すると、SNI、公開鍵、Short ID、フィンガープリントなどの入力欄が表示されます。SNIは接続時のサーバー名として送られる値で、公開鍵はサーバーのREALITY公開鍵です。Short IDはサーバー側の許可リストと照合されるため、空欄にしたり、別ノードの値を使ったりしないでください。
v2rayNGでノードを追加して接続する手順
手動入力は可能ですが、VLESS Realityの情報を含む完全な共有リンクがあるなら、リンクまたはサブスクリプションをインポートする方法を優先してください。インポート後に各項目を開いて確認すれば、URLエンコードされた公開鍵やShort IDの転記ミスを減らせます。QRコードを使う場合も、読み込み後に保存前の画面で全項目を確認しましょう。
コアを確認
v2rayNGのメニューから「設定」または「基本設定」を開き、「コアタイプ」を確認します。VLESS RealityとVisionを使う場合は、対応するXrayコアを選択し、古いV2Rayコアのままにしないでください。
ノードを追加
メイン画面の追加ボタン「+」をタップし、「手動設定」からVLESSを選びます。共有リンクがある場合は、リンクのインポートまたはクリップボードからの追加を使います。
基本値を入力
アドレス、ポート、UUIDを入力し、暗号化を
noneにします。Flowは配布情報にある場合だけ入力し、指定がなければ空欄のままにします。Realityを設定
ネットワークをサーバー指定どおりにし、セキュリティで
realityを選びます。SNI、公開鍵、Short ID、フィンガープリントを配布情報と照合して入力します。保存して接続
保存後、作成したノードを選択してメイン画面の接続ボタンをタップします。AndroidのVPN接続許可が表示されたら内容を確認し、許可後にブラウザーで通信を確認します。
接続前には、入力欄の前後に空白が入っていないか確認します。特に公開鍵やUUIDをメッセージアプリからコピーすると、行末の改行や不可視文字が付くことがあります。公開鍵の先頭・末尾を勝手に引用符で囲まず、Short IDを大文字へ変換しないことも重要です。16進数はサーバーが指定した表記のまま入力してください。
接続後に確認するポイント
ノードを選択して接続状態になっただけでは、外部通信が正常とは限りません。v2rayNGのログ画面でコアが起動していることを確認し、ブラウザーで複数のページを開きます。最初の接続だけが成功して後続通信が止まる場合は、ルーティング、DNS、アプリ別プロキシの範囲も確認してください。AndroidのVPNアイコンが表示されているか、通信量が増えているかも判断材料になります。
- ログにコア起動エラーがないか確認する。
- 接続先ポートへのタイムアウトが発生していないか見る。
- ブラウザーで名前解決とページ読み込みを試す。
- アプリ別プロキシを使っている場合、ブラウザーが対象に含まれるか確認する。
- Wi-Fiとモバイル通信を切り替え、同じノードが再接続できるか確認する。
接続できない場合の切り分け
接続失敗の原因を一度に複数変更すると、どの値が問題だったのか分からなくなります。まずXrayコアが起動しているか、次にアドレスとポートへ到達できるか、その後にUUID、Reality項目、Flowの順番で確認してください。ノードを保存できない場合は入力形式や必須項目の問題、保存できるがタイムアウトする場合はアドレス・ポート・サーバー状態の問題であることが多いです。
| 症状 | 優先して確認する項目 | 対処 |
|---|---|---|
| ノード保存後すぐ切断 | コアタイプ、Flow、セキュリティ | Xrayコアを選び、サーバー指定の値だけを残す |
| 接続がタイムアウト | アドレス、ポート、ネットワーク | ポート番号とTCP指定を再確認し、別回線でも試す |
| TLSやRealityで失敗 | SNI、公開鍵、Short ID | 別ノードの値が混ざっていないか照合する |
| 接続表示だが通信不可 | VPN許可、ルーティング、DNS | AndroidのVPN状態と対象アプリのプロキシ範囲を確認する |
ログにhandshake failed、REALITY、invalid public keyに近い内容が出る場合は、SNI、公開鍵、Short ID、フィンガープリントの組み合わせを確認します。公開鍵が正しくてもSNIがサーバー側のserverNamesにない場合、認証は成立しません。逆に、SNIだけを正しくしても公開鍵が違えば接続できません。
connection refusedが表示される場合は、対象ポートでサーバーの待受サービスが動作していない、ファイアウォールで遮断されている、またはポート番号が古い可能性があります。timeoutなら、ネットワークからサーバーまでの到達性、IPアドレスの誤り、回線側の制限などを疑います。サーバー側を管理していない場合は、ログの時刻とエラー文を添えて提供者へ問い合わせるのが早道です。
最終確認:リンクと手動入力を混在させない
共有リンクをインポートした後に、速度改善を目的としてSNIやFlowだけを変更するのは避けてください。Realityの各値はサーバー側の一組の設定として発行されているため、まず配布直後の状態で接続し、必要な変更だけを一項目ずつ検証します。