事前準備:プラットフォーム、サブスクリプション、設定の階層
クライアント、カーネル、サーバー設定を区別する
v2rayN、v2rayNG、v2flyNGは、設定と実行のためのクライアントです。サーバー情報の保存、カーネル設定の生成、ログの表示に加え、各プラットフォームに応じてシステムプロキシやVPN接続を提供します。XrayとV2Flyは、接続とルーティングを実行するカーネルの系統です。クライアントをインストールしても、利用可能なサーバーが用意されるわけではありません。サーバーアドレス、ポート、認証情報、通信方式、TLSの設定は、実際のサービス提供元から入手してください。プロトコル名だけから必要な項目を推測したり、別の設定例にある認証情報を手元のアドレスと組み合わせたりしないでください。
接続には、アプリ、本機の接続口、カーネルのルーティング、リモートサーバーなど、複数の段階があります。アプリから本機の接続口にリクエストが届いていなければ、リモート側のプロトコルを変更しても解決しません。カーネルが起動していない場合も、ブラウザーを何度入れ替えても改善しません。準備段階でこの階層を把握し、確認のたびに変更する箇所は一つに絞りましょう。現在のシステムプロキシ設定、ほかのVPNの有無、ネットワークの種類、クライアントの設定保存先を記録しておくと、テスト後に元のネットワーク設定へ戻しやすくなります。
CPUアーキテクチャとインストールパッケージを確認する
クライアントのダウンロードページを開き、OS、CPU、パッケージ形式の順に選びます。WindowsのDesktop版とWPF版は画面の違いであり、プロキシプロトコルの違いではありません。macOSではApple SiliconとIntelを区別します。LinuxではCPUアーキテクチャに加え、ディストリビューションに合ったパッケージ形式を選びます。Androidは通常arm64を選び、互換性を確認できない場合は汎用版を検討してください。拡張子が同じでもアーキテクチャが同じとは限りません。ダウンロードできても、そのファイルを実行できるとは限りません。
| プラットフォーム | クライアント | インストール前の確認事項 |
|---|---|---|
| Windows | v2rayN | システムアーキテクチャ、ランタイムの要件、ディレクトリの書き込み権限 |
| macOS | v2rayN | チップの種類、アプリの入手元に関する警告、ネットワーク権限 |
| Linux | v2rayN | ディストリビューションのパッケージ形式、CPUアーキテクチャ、デスクトップセッション |
| Android | v2rayNG / v2flyNG | アプリのインストール許可、デバイスのアーキテクチャ、VPNの競合 |
認識可能なサブスクリプションと復元用の情報を準備する
サブスクリプションは通常、複数のサーバー設定を取得するためのURLです。管理画面やプラン購入ページのURLではありません。クライアントへのインポート用と提供元が明示しているリンクだけを、サブスクリプショングループに入力してください。手順内の https://example.com/sub?token=xxxx は形式を示す例で、実際のサービスは利用できません。実際のサブスクリプションURLにアクセス情報が含まれている場合があります。画面の共有、ログの送信、サポートの依頼時には、クエリパラメーター全体、ユーザー識別情報、サーバーの認証情報を隠してください。
自分だけがアクセスできる設定バックアップを用意し、デバイスの日付、時刻、タイムゾーンも確認してください。TLS証明書の検証はシステム時刻に依存するため、時刻が大きくずれていると、通常は使える複数の設定が同時に失敗することがあります。初回のテストでは、システムプロキシ、TUN、別のVPNを同時に有効にしないでください。まず接続方法を一つに絞り、成功を確認してから必要に応じて追加します。会社や学校の端末では、ネットワーク設定を変更できるか管理ポリシーを確認してください。権限の付与元を確かめず、何度も許可し直すのは避けましょう。
確認用に、接続できることが分かっているページを一つ用意し、直接接続への影響を見ます。もう一つは、現在のプロキシ設定を通す必要があると分かっている接続先を用意し、プロキシ経路を確認します。結果には対象、時刻、接続方法を記録し、「ネットワークが使えない」だけで済ませないでください。最初の接続だけを済ませたい場合は、クイックスタートを参照してください。このガイドではインストール、権限、復元に関する手順も確認できます。
Windows:v2rayNのインストールとプロキシ接続
Desktop版またはWPF版を選んでインストールする
Windowsのダウンロードページから、v2rayNのDesktop版または従来のWPF版を選びます。Desktop版はクロスプラットフォームのUIを採用し、WPF版は従来のWindows向け操作画面を維持しています。画面が異なっても、サーバー設定が別のプロトコルに変わるわけではありません。初回はどちらか一方を選び、両方を同時に起動してローカルポートを取り合わないようにしてください。画面を比較する場合は、実行中のアプリを終了してから別の版を起動し、それぞれの設定をバックアップしてください。
インストーラーの案内に従ってインストールし、通常のアプリ起動方法で起動します。展開して実行する形式の場合は、書き込み権限のある場所にすべてのファイルを解凍してください。圧縮ファイルのプレビュー内から実行したり、付属ファイルを残して本体だけコピーしたりしないでください。アプリ本体、ユーザー設定、ログの保存場所はインストール方法によって異なる場合があります。クライアントの「フォルダーを開く」機能で確認してください。起動時にランタイム不足の警告が出た場合は、必要な.NETデスクトップランタイム、アーキテクチャ、画面の種類を確認してください。名前が似ているだけの別ランタイムで代用することはできません。
サブスクリプションを追加して使用するサーバーを選ぶ
「サブスクリプショングループ」を開き、新しいグループを作成します。分かりやすい名前を付けて、アドレス欄にサブスクリプションURLを入力し、保存後にそのグループを更新してください。更新が完了しても、設定を取得できたことを示すだけです。メイン画面で使用するサーバーを選び、接続対象として指定してください。複数のグループがある場合は、現在の一覧がどのグループのものか確認し、別のグループを何度も更新しないようにしましょう。共有リンクをインポートする場合は、対応するクリップボードからのインポート機能を使い、完全なプロトコル共有リンクをサーバーアドレス欄に入力しないでください。
初回はローカルの待ち受けアドレスを変更せず、クライアントに表示される実際の受信ポートを確認してください。説明ではローカルポートとして 10808 を使いますが、実際には設定とログに表示された値を使い、どのプロトコルの接続口なのかも確認してください。ポート番号だけを見てHTTP、SOCKS、混合接続のいずれかを推測することはできません。ほかのLAN内デバイスから接続する必要がない限り、待ち受けアドレスをすべてのネットワークインターフェースに変更しないでください。待ち受け範囲を広げると、Windowsファイアウォールやアクセス権限の確認が必要になります。
まずシステムプロキシで確認し、必要に応じてTUNを有効にする
「システムプロキシ」で「システムプロキシを自動設定」を選び、Windowsのシステムプロキシを参照するブラウザーで接続先をテストします。「システムプロキシを解除」は、クライアントが設定したプロキシを元に戻す操作です。「システムプロキシを変更しない」は、起動や切り替え時に現在の設定を書き換えないという意味で、過去のプロキシ設定を解除する操作ではありません。ブラウザーに独自のプロキシ拡張機能がある場合は、ルールの適用を一時停止し、システム設定と拡張機能が互いに上書きしないようにしてください。組織管理のブラウザーでは、プロキシ設定が組織によって固定されていないかも確認します。
システムプロキシを参照しないアプリの通信も取り込みたい場合は、TUNを検討してください。有効にする前に、ほかの仮想ネットワークアダプターを使うツールを終了し、現在のネットワーク状態を記録して、クライアントの案内に従って必要な権限を付与します。TUNは仮想インターフェース、ルーティング、DNSに関わります。接続できない場合は、サーバーを次々と変更せず、確認済みのシステムプロキシ方式に戻してください。昇格した権限が必要かどうかは、実装と実行方法によって異なります。通常のサブスクリプション更新のために、クライアント全体を管理者として常時実行する必要はありません。
このプラットフォームでよくある問題には、ディレクトリへの書き込み不可、ポートの競合、起動後に通知領域にアイコンしか表示されない、ランタイムの不一致などがあります。まずタスクバーの通知領域にすでに起動中のインスタンスがないか確認し、次にログで待ち受けの失敗や権限エラーを調べてください。セキュリティソフトのブロック記録がある場合は、対象ファイルと入手元を確認し、保護機能全体を無効にしないでください。起動時に開かない、またはすぐに終了する場合は、v2rayNが起動しない・起動直後にクラッシュする場合の対処法も参照してください。ネットワークの復旧とクラッシュの対処は別々に確認しましょう。
macOS:チップの選択、インストール許可、ネットワーク設定
チップの種類に合ったv2rayNのパッケージを選ぶ
システムメニューの「このMacについて」を開き、チップまたはプロセッサの項目を確認します。Appleチップと表示される場合はApple Silicon用、Intelプロセッサと表示される場合はIntel用のパッケージを選び、macOSのダウンロードページからv2rayNを入手してください。外観や購入時期からアーキテクチャを推測しないでください。また、別アーキテクチャ版が互換レイヤーで動作する可能性を、標準のインストール方法と見なさないでください。実際のMacに合ったアーキテクチャを選ぶことで、実行環境や権限を調べる際の余計な要因を減らせます。
ディスクイメージを開き、インストール案内に従ってアプリを「アプリケーション」フォルダーに移動し、インストール先から起動します。マウントしたイメージから直接起動し続けないでください。イメージの更新や取り外しでパスが変わる場合があります。アプリの入手元や起動が制限されているという警告が出た場合は、まずダウンロード元とファイルの種類を確認し、「システム設定 → プライバシーとセキュリティ」でそのアプリへの対応方法を確認してください。対象アプリだけに必要な対応を行い、クライアントを起動するためにシステム全体のセキュリティチェックを無効にしないでください。
設定を追加して接続対象を確認する
v2rayNの「サブスクリプショングループ」を開き、名前とサブスクリプションURLを追加して保存し、グループを更新します。サブスクリプションを取得できても接続に失敗する場合は、メイン画面で設定を一つ選択しているか確認し、プロトコルと通信設定が現在のカーネルに対応しているかを確認してください。「サブスクリプション更新成功」は、すべてのサーバーへの接続確認が済んだという意味ではありません。似た名前の項目が複数ある場合は、所属グループとサーバーアドレスを確認して区別し、古い手動インポート項目を更新済みの項目と取り違えないようにしましょう。
初回のテストではTUNを無効にし、システムプロキシだけを使うことをおすすめします。クライアントでシステムプロキシを設定した後、「システム設定 → ネットワーク」で現在の接続を選び、詳細画面のプロキシ項目を確認します。有線、Wi-Fi、その他のネットワークサービスで設定が別々の場合があります。ネットワークを切り替えた後に動作が変わった場合は、クライアントのボタンが有効かどうかだけでなく、どのネットワークサービスが現在使われているかを確認してください。自動プロキシ設定、手動HTTPプロキシ、SOCKSプロキシの設定元が分からないまま重ねて有効にしないでください。
グラフィカルアプリ、ターミナル、TUNの権限を区別する
システムプロキシを参照するグラフィカルアプリもあれば、独自のネットワーク機能やプロキシ設定を使うアプリもあります。ターミナルのプログラムは、グラフィカル環境のシステムプロキシ設定を引き継ぐとは限りません。そのため、ブラウザーでは使えてもターミナルでは使えないことがあります。特定のコマンドにローカルプロキシを使わせる場合は、そのコマンドが対応する接続方式を個別に設定し、実際に待ち受けポートが存在することを先に確認してください。最初から環境変数をシェルの起動ファイルに恒久的に書き込むのは避けましょう。クライアントを終了した後も、新しいターミナルが停止済みのローカル接続口へアクセスし続けるおそれがあります。
TUNに追加の許可や補助コンポーネント、昇格した権限が必要かどうかは、クライアントの実装によって異なります。画面の案内に従って必要な許可を行った後、ログで仮想インターフェースとルーティングが確立されたか確認してください。アプリを起動する権限があっても、ネットワーク経路を変更する権限があるとは限りません。TUNを有効にした後、それまで直接接続できていたページが開かなくなった場合は、まずTUNを無効にし、DNSとネットワークサービスの順序を確認します。別のVPNを同時に動かして解決しようとしないでください。複数の接続制御が競合して通信が本機に戻り、最初の原因が見えなくなる場合があります。
更新する前にアプリを終了し、設定をバックアップして、新旧のアプリが別々の場所に残らないようにします。更新後に設定が消えたように見える場合は、まず「アプリケーション」内のコピーとダウンロードフォルダー内の古いコピーのどちらを起動したか確認し、現在のユーザー設定の保存場所も確認してください。アンインストールまたは使用を終了する前に、クライアントでシステムプロキシを解除し、TUNを無効にして、現在のネットワークサービスのプロキシ設定を確認します。アプリをゴミ箱に移すだけでは、既存のネットワーク設定がすべて確実に解除されるわけではありません。削除する前に復元手順を済ませてください。
Linux:パッケージ形式、デスクトッププロキシ、TUNの権限
ディストリビューション、アーキテクチャ、グラフィカル環境を確認する
Linuxにインストールする際は、パッケージ管理方式とCPUアーキテクチャを確認します。DebianやUbuntuなどでは通常debパッケージ、Fedoraなどでは通常rpmパッケージを使いますが、詳しくは各ディストリビューションのパッケージ管理ドキュメントを確認してください。Linuxのダウンロードページで、x64またはarm64を選びます。圧縮ファイルをシステムが認識できるだけで、インストール可能とは限りません。v2rayNはグラフィカルクライアントのため、ターミナルのみのサーバーやデスクトップセッションのない環境は、このページのGUIインストール手順の対象外です。
インストール前に、次の読み取り専用コマンドでアーキテクチャとシステム情報を確認できます。x86_64は通常ダウンロードページのx64、aarch64は通常arm64に相当します。それ以外のアーキテクチャの場合、これらのパッケージを無理に使わないでください。システム情報はディストリビューションの系統を判断する参考になりますが、すべてのデスクトップ依存関係がインストール済みであることを保証するものではありません。実際にダウンロードしたパッケージは、ディストリビューションのソフトウェアインストーラーまたはパッケージマネージャーで開き、依存関係の表示を確認してください。依存関係を強制的に無視する方法を一般的なインストール手段として使わないでください。
uname -m
cat /etc/os-release
通常ユーザーで起動してサブスクリプションを追加する
インストール後、デスクトップのアプリ一覧からv2rayNを起動します。まずは通常ユーザーで実行し、画面の表示、設定の保存、ログの出力が正常であることを確認してから、権限が必要なネットワーク機能を設定してください。ディレクトリの権限エラーを避けるために、GUIアプリ全体をrootで実行しないでください。設定ファイルの所有者がrootになり、次回の通常起動時に書き込めなくなるおそれがあります。誤って昇格した権限で起動した場合は、設定の保存先と所有者を確認してください。ホームディレクトリ全体に対して再帰的に権限を緩めるのは避けましょう。
「サブスクリプショングループ」にURLを入力して更新し、使用するサーバーを選んだ後、カーネルログでローカル接続口の待ち受けを確認します。Linuxではデスクトップ環境とネットワークマネージャーの組み合わせが多く、クライアントの「システムプロキシを自動設定」がすべてのアプリに反映されるとは限りません。デスクトップ環境のネットワークプロキシ設定でアドレスとポートを確認し、その設定を参照することが分かっているアプリでテストしてください。ブラウザーに独自のプロキシ設定がある場合は、接続口を統一しましょう。デスクトップ側の設定だけ変更され、ブラウザーが別の経路を使い続けるのを防げます。
ポート番号で推測せず、接続方式を確認する
ターミナルのプログラムでは、プロキシを明示的に指定する方法が適しています。次のコマンドは、ローカルポートがSOCKS接続口であると確認できた場合に限り、動作を検証するためのものです。例の 10808 は、画面に表示される実際のポートに置き換えてください。socks5hは接続先ドメインの名前解決をプロキシ側で行います。通常のsocks5では、名前解決の場所が異なる場合があります。コマンドが応答しても、そのリクエストが接続口を通ったことを示すだけです。デスクトップ全体やすべての通信方式が接続を引き継いだ証明にはなりません。
curl --proxy socks5h://127.0.0.1:10808 --head https://example.com
TUNでは仮想デバイス、システムルーティング、権限も関係します。有効にした後、まずログでインターフェースを作成できたか確認し、次にデフォルトルートとDNSが想定どおり変更されたかを確認してください。デバイス作成前にエラーが起きている場合、サブスクリプションを変更しても意味がありません。ディストリビューションによって、システムサービス、権限付与の仕組み、クライアント独自の方式など、権限の取得方法が異なります。使用中のソフトウェアの説明に従ってください。正体の分からないファイルに安易にシステム権限を付与したり、ファイアウォールのルールを無効にしてすべての通信問題を解決しようとしたりしないでください。
スリープ、ネットワーク切り替え、異常終了の後に接続できなくなった場合は、まずTUNを無効にし、デスクトッププロキシ設定を元に戻してから、ネットワークマネージャーが管理する接続とDNSを確認します。更新時は設定をバックアップして古いプロセスを終了し、複数のカーネルがポートを取り合わないようにしてください。手動実行が安定してから自動起動を有効にし、「GUIクライアントの起動」と「システム全体の通信制御」を区別します。ターミナルとブラウザーで結果が異なる場合は、システムプロキシが効かない場合の切り分けも参照してください。
Android:クライアントのインストールとVPN接続
まずv2rayNGを選び、必要に応じてv2flyNGを使う
Androidのダウンロードページで、まずXrayカーネルを使うv2rayNGを確認してください。V2Flyカーネルの環境が必要な場合は、v2flyNGを検討します。どちらも端末に合わせてarm64または汎用版を選びます。近年の一般的な端末では通常arm64ですが、最終的には端末のアーキテクチャとアプリの互換性を確認してください。汎用版はアーキテクチャを選ぶ際の代替候補です。同じサーバー設定に別のプロトコル機能が加わるわけではなく、インストールの失敗が必ず解消するわけでもありません。
ダウンロードしたインストールファイルを開くと、現在のファイル管理アプリやブラウザーにアプリのインストールを許可するよう求められる場合があります。今回のインストールに使うことが確認できた入手元だけに許可を与え、完了後は端末の設定に応じて取り消してください。ファイルの解析失敗、署名の不一致、上書きインストール不可などの警告が出た場合は、ダウンロードが完了しているか、アプリのアーキテクチャと既存アプリの入手元を確認します。すぐに旧アプリをアンインストールせず、まず復元可能な設定をエクスポートし、パッケージの互換性と入手元の違いによる署名の競合を切り分けてください。
サブスクリプションを追加・更新してサーバーを選ぶ
アプリの「サブスクリプショングループ設定」または同等の管理画面を開き、新しいグループを追加して名前とURLを入力します。保存後、メイン画面に戻り、サブスクリプションを更新してください。更新方法が複数ある場合は、まず通常の更新を使います。現在の接続経由でサブスクリプションを取得する必要がある場合は、使用中の接続からURLへアクセスできることを確認してから更新方法を選んでください。リストの更新が終わる前に連続してボタンを押さないでください。直近の操作結果が分かりにくくなります。サーバー項目が表示された後、使用するものを手動で選択してください。
QRコードやクリップボードからのインポートは単独の共有リンク向け、サブスクリプションURLは継続的に更新する設定一覧向けです。両方を登録してもかまいませんが、各設定の入手元を把握し、一度だけ取り込んだ項目を自動更新対象と誤認しないようにしましょう。通信方式、TLS、サーバー名などの情報が不足している場合は、まず提供元から受け取った元の情報を確認してください。似た設定を参考に、内容を推測して補わないでください。Androidではシステムによってクリップボードやファイルへのアクセスが制限される場合があります。インポートに失敗したら、アプリが実際に読み取った内容を確認しましょう。
システムのVPN許可とアプリごとの対象範囲を確認する
接続を開始すると、AndroidにVPN接続の許可画面が表示されます。この許可は、システムのVPNインターフェースを使って指定範囲の通信をアプリに処理させるものです。リモートサーバーへの接続が成功したことを示すものではありません。v2rayNGで一般的なVPNモードは仮想ネットワークインターフェースを使うため、デスクトップの「システムプロキシ」スイッチと同じ基準では判断できません。アプリにプロキシのみのモードもある場合は、現在のモードでVPNが確立されているか確認してください。ローカルの待ち受けを有効にしただけでは、ほかのアプリが自動的にその接続口を使うわけではありません。
一般的な端末では、同時に通信を制御できるVPNは一つだけです。別のVPN、仕事用プロファイルのネットワーク機能、一部のローカルフィルタリングツールが接続に競合する場合があります。まずほかの通信制御を終了してから、接続を許可し直してください。アプリごとのプロキシ設定では、「選択したアプリをプロキシ経由にする」と「選択したアプリをプロキシから除外する」の逆の動作を区別し、保存後に画面の指示に従って接続を再確立します。テスト対象のアプリを一つ指定してください。ステータスバーのアイコンだけを見て、すべてのアプリが対象になったと判断しないでください。
前面では正常でも画面ロック後に繰り返し切断される場合は、システムのバッテリー設定でアプリのバックグラウンド実行制限を確認し、必要なバックグラウンド動作を端末メーカーの設定に従って許可します。「常時接続VPN」や「VPNを使わない接続をブロック」を設定する前に、切断時の動作が想定どおりか確認してください。後者を有効にすると、クライアント停止時にネットワークが遮断される場合があります。使い終わる際は、まずアプリ内の接続を切り、システムのVPN設定に常時接続の指定が残っていないか確認します。モバイルデータ通信とWi-Fiでは、DNS、IPv6、認証条件が異なる場合があるため、それぞれ個別にテストしてください。
サブスクリプション管理、カーネルの選択、設定の移行
サブスクリプションの更新と手動変更を分けて管理する
サブスクリプションは設定一覧の取得元であり、ネットワーク接続そのものではありません。更新時にクライアントがデータを取得してサーバー項目に変換し、接続時にカーネルが選択中の項目の設定を使ってリモートサーバーへ接続します。そのため、サブスクリプションURLにアクセスできない、内容を解析できない、特定のサーバーへの接続がタイムアウトする問題は、別々に切り分けてください。まず更新ログの通信結果と解析結果を確認し、次に項目が表示されているかを確認し、最後に選択中の接続をテストします。サブスクリプションの解析エラーに対してルーティングを変更したり、更新成功を接続確認の代わりにしたりしないでください。
アドレスを名前の曖昧な一つのグループにまとめず、入手元や用途ごとに分けることをおすすめします。自動更新により、サブスクリプションから生成されたサーバー項目が置き換わる場合があります。項目を手動で変更する前に、クライアントがその変更を保持するか確認してください。長期間使う設定は手動項目として別に登録し、元のサブスクリプションと連動しないことを記録します。提供元がURLや認証情報を変更した場合は、取得元の情報を更新し、古い項目で再接続を繰り返さないでください。グループを削除する前に、未バックアップの手動項目が含まれていないか確認します。
例と機密情報を安全に扱う
以下のURLは、よくあるサブスクリプションの形式を示すための例です。実際のURLのパスやクエリパラメーターはサービス提供元が決めるため、例から推測して作らないでください。サブスクリプションからエンコードされた複数の共有リンクが返る場合も、クライアントが認識する別形式のデータが返る場合もあります。ブラウザーで文字を表示できても、現在のインポート機能で使える形式とは限りません。カーネル用のJSONファイル全体を受け取った場合は、クライアントのカスタム設定インポート機能を探してください。JSONをサブスクリプションURL欄に貼り付けないでください。
https://example.com/sub?token=xxxx
問題の画面を共有する場合は、サブスクリプションのクエリパラメーター、認証ID、パスワード、個人用サーバー情報を必ず隠してください。クライアント設定をすべてエクスポートすると、サブスクリプション、手動項目、ローカル待ち受け設定、ルーティングが含まれる場合があります。一般的な診断資料として公開しないでください。相談に必要なのは通常、エラー箇所、プロトコルと通信方式、プラットフォーム、接続モード、再現手順です。サブスクリプションURLが漏えいした可能性がある場合は、提供元の管理画面でアクセス情報を変更してください。ローカルの履歴を削除しても、コピー済みのURLは無効になりません。
機能の互換性を基準にカーネルを選ぶ
v2rayNのカーネル設定は、設定を実行するカーネルを選ぶ項目であり、単純な性能切り替えではありません。XrayとV2Flyには共通するエコシステムがありますが、拡張機能、通信方式の実装、設定項目への対応状況は異なる場合があります。まずサーバー側で必要な機能を確認し、次に対象のカーネル向けにクライアントが設定を生成できるか確認してください。カーネルが認識しない項目は、ルーティングモードを切り替えても対応できません。また、別のカーネルで起動できても、既存のカスタムルールがすべて引き継がれるとは限りません。
切り替える前に、使用中のサーバー、ルーティング、DNS設定を記録します。切り替え後は、設定の生成結果とカーネルの起動ログを確認してから、単一のリクエストで動作をテストしてください。Androidでv2rayNGからv2flyNGへ移る場合は、同じアプリ内でのシームレスな切り替えではなく、アプリの変更として扱います。サブスクリプションの再登録、VPN許可、バックグラウンド設定を改めて確認してください。サーバー名が同じでも、アプリ固有のデータは自動で同期されません。権限の競合とカーネルの違いを混同しないよう、通信制御を行うアプリは一つだけ起動してください。
プラットフォーム間の移行は3段階で行う
移行では、最初にサブスクリプションまたはサーバー設定を移し、次にルーティングとDNSを設定し、最後に端末固有の設定を作り直します。Windowsのシステムプロキシ、Linuxのデスクトップセッション、Androidのアプリごとの対象範囲は、そのまま相互に置き換えられません。ローカルポート、設定ファイルのパス、自動起動、TUNの権限は端末環境に依存するため、バックアップで無条件に上書きしないでください。サーバー一覧の「エクスポート」や「共有」を使う前に、単一の設定を出力するのか、グループ全体を出力するのか確認します。移行先では、エクスポート形式に対応するインポート機能を使ってください。
フルバックアップは、互換性のあるクライアント環境での復元に適しています。プラットフォームをまたぐ移行では、クライアントが明示的に対応する交換形式を優先してください。移行先でまず一つの接続を確認してから、まとめてインポートします。サブスクリプション更新、ルーティング、接続停止後のネットワーク復旧が正常と確認できてから、旧端末の使用を終了してください。移行完了の基準は、一覧の件数が近いことではありません。必要な設定が正しく、接続が使え、通信対象が想定どおりで、変更を取り消せる復旧方法が残っていることを確認します。
システムプロキシ、TUN、ルーティング
通信の取り込みとカーネルの送信先は別の問題
システムプロキシは「アプリがリクエストをローカルプロキシに送るか」を決め、ルーティングルールは「カーネルが受け取ったリクエストをどの経路へ送るか」を決めます。グローバルルーティングを有効にしても、システムプロキシを参照しないアプリが突然クライアントを使うわけではありません。TUNを有効にしても、取り込んだ通信すべてがプロキシサーバーへ送られるとは限りません。まずリクエストがカーネルに届いていることを確認し、その後で直接接続、プロキシ、ブロックのどれに振り分けられるかを調べます。この違いを理解しておくと、アプリの入口に問題があるのにドメインルールを何度も変更し、原因の範囲を広げてしまうのを防げます。
v2rayNでよく見られる「中国本土を回避」「グローバル」「直接接続」は、あらかじめ用意されたルーティング方針です。実際の動作は、現在のルール、出力タグ、データベースによって異なります。グローバル設定はプロキシ経路を短時間確認するのに役立ちますが、日常的な振り分けでは用途に合った設定に戻してください。「直接接続」でもクライアントが終了するわけではありません。通信がローカルの接続口を経由し、カーネルから接続先へ直接送られる場合があります。テスト時はシステムプロキシまたはTUNの状態と、ルーティングモードの両方を記録してください。「有効」の表示だけでは、リクエストの経路を判断できません。
ルールの項目と評価順を確認する
次は、互換性のあるカーネル設定に組み込める routing の一部であり、単独で起動できる設定ファイルではありません。最初のルールはドメインの分類に、二つ目のルールはプライベートIPの分類に基づき、どちらも direct という名前の出力先を指定します。メイン設定にこのタグを持つ出力先を定義し、ルールが参照するデータファイルも用意してください。出力先やデータベースがなければ、この一部をコピーしただけでは接続できません。クライアントのルーティング編集画面では別の形式で保存される場合があります。設定ファイル全体を直接置き換えず、画面で指定された項目を使ってください。
{
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
}
]
}
}
ルーティングは通常、ルールの順番に沿って評価されます。前方にある範囲の広い条件が、後方の個別例外に先に一致する場合があります。特定のドメインやLAN内サービスなどの例外は、それらをまとめてしまうワイルドカードより前に置くのが一般的ですが、最終的な順序は設計目的によって異なります。一つのルールにドメイン条件とIP条件を書いても、どちらか一方に一致すれば成立すると単純に解釈できません。条件の組み合わせがカーネルでどう評価されるか確認してください。ルールに一致しなかった場合の既定の出力先は設定全体で確認し、抜粋の最後のルールだけから推測しないでください。
DNSとルール用データベースを合わせて確認する
geosite:cnはデータベース上のドメイン分類、geoip:privateはプライベートアドレスの集合を表します。インターネットから自動でリアルタイム検索されるタグではなく、ドメイン分類が常に変わらないという意味でもありません。ルーティングデータを更新した後は、カーネルが新しいファイルを読み込んでいるか確認してください。別のディレクトリにある古いコピーを使い続けている場合があります。データの更新場所と参照方法はGeoIP・GeoSiteルールファイルの更新方法を参照してください。項目の評価順を確認する場合は、ルーティングルールの実践ガイドもご覧ください。
DNSはドメイン名の解決先を決め、ルールのIP条件が評価に使われるかどうかにも影響します。例のAsIsは、ルーティング判定のためにすべてのドメインを自動的にIPアドレスへ解決しません。アプリがドメイン名しか渡さず、ルールがIPアドレスに依存する場合は、適切な処理方式を明示し、追加の名前解決にかかる負荷も理解してください。ブラウザーの暗号化DNS、独自のリゾルバー、TUNによるDNS処理も、名前解決の場所を変える場合があります。まずドメインルールで接続先を検証し、その後にIPによる判定を追加してください。DNSの経路を一度にすべて変更しないようにしましょう。
ルーティングを変更する前に、設定をエクスポートするか復元可能なコピーを保存します。ルールは一度に一つのグループだけ追加し、再読み込み後、ログに表示された接続先と出力先を確認してください。クライアント実行中に生成された一時設定を直接編集するのは避けましょう。次回サーバーを切り替えると上書きされる可能性があります。検証後はテスト用のグローバル上書きルールを削除し、ルールの用途を記録してください。安定した振り分けには、接続口、名前解決、出力先の関係を明確にすることが大切です。出所の分からないルールを増やしても解決にはなりません。
設定のよくある問題と段階的な復旧
失敗した段階から順に確認する
トラブル時は、最後に正常だった操作を記録してください。アプリは起動するか、サブスクリプションを更新できるか、カーネルは待ち受けを開始できるか、ローカル接続口にリクエストが届くか、リモートとのハンドシェイクができるか、接続先が応答するかを順に確認します。この順序で調べると、問題を隣り合う段階の間に絞り込めます。ログにローカルポートのバインド失敗が記録されている場合は、まずポートの競合を解消してください。リクエストの記録がまったくない場合は、アプリ側のプロキシ設定を確認します。「接続できない」を一つのエラーとして扱わず、クライアント、カーネル、DNS、ルーティングを一度に変更して原因を推測するのは避けましょう。
| 症状 | まず確認する項目 | 後回しにする変更 |
|---|---|---|
| アプリの画面が開かない | 実行環境、ファイルの場所、ディレクトリの権限 | サブスクリプション、ドメインの振り分け |
| ローカル接続口にリクエストが届かない | アプリのプロキシ設定、VPNの対象範囲、ポートの接続方式 | リモート側の認証情報 |
| 認証またはハンドシェイクのエラーが出る | プロトコルの設定項目、システム時刻、サービスの状態 | デスクトップの外観設定 |
| クライアント終了後にネットワークへ接続できない | 残ったシステムプロキシ、TUN、常時接続VPNの設定 | サブスクリプションの再登録 |
サブスクリプションが空、カーネル起動に失敗、一部アプリだけ使える
更新後の一覧が空の場合は、ネットワークから取得できていないのか、取得した内容を解析できないのかを切り分けます。URLが管理画面のものになっていないか、末尾に空白が入っていないか、グループや表示が絞り込まれていないか確認してください。返された内容がWebページの案内や有効期限切れの通知なら、空の一覧から接続しようとせず、実際のサービス提供元に問い合わせます。現在使える接続を通さなければサブスクリプションを取得できない場合は、まず既存の設定で接続し、その後に適切な方法で更新してください。「設定がないのに、その設定を使ってダウンロードする」という状態を避けられます。
カーネルの起動に失敗した場合は、最後に表示される「プロセス終了」ではなく、最初に出た具体的なエラーを確認してください。待ち受けアドレスの競合、未対応の設定項目、ルールデータの不足、ディレクトリの権限不足では、対処方法が異なります。ポートを変更する前に、別のクライアントが起動していないか確認します。カーネルを切り替える前に、サーバー側の機能要件を確認してください。カスタムJSONを含む場合は、まずクライアントが正常に生成できる基本設定に戻し、その後変更を一つずつ追加します。起動ボタンを繰り返し押しても設定は修正されず、時刻の近いログが増えるだけです。
ブラウザーだけ使えてターミナルでは使えない場合は、プロキシを明示するオプションでターミナルの接続口を確認します。ターミナルでは使えてブラウザーでは使えない場合は、ブラウザー拡張機能、独自プロキシ設定、組織による管理ポリシーを調べてください。特定のアプリだけ使えない場合は、Androidのアプリごとの対象範囲に含まれているか、独自のネットワーク機能を使っているかを確認します。TUNモードでも、そのリクエストがカーネルに届いているか確認してください。理論上取り込めるはずというだけで、確認を省略しないでください。違いの詳しい調べ方はブラウザーとターミナルを別々に調べる手順をご覧ください。
ハンドシェイク、名前解決、断続的な切断を分けて対処する
TLSハンドシェイクに失敗する場合は、システム時刻、サーバー名、通信方式、提供元が指定する設定項目を確認してください。証明書検証の無効化は、サーバーの身元を確認する保護を迂回するため、通常の修復方法として使わないでください。名前解決に失敗する場合は、サーバーのドメイン名と最終的な接続先のドメイン名のどちらで失敗しているか確認します。異なる名前解決経路を使う場合があります。大きなリクエストや特定のネットワークだけで失敗する場合は、ネットワークの種類と再現条件を記録してから、通信方式、パスMTU、UDPへの対応を調べてください。小さなページが開けても、すべての通信が正常とは限りません。
断続的な切断では、画面ロック、スリープ、ネットワーク切り替え、サブスクリプションの更新、サーバー切り替えなど、発生時の条件を確認します。Androidではバックグラウンドプロセスが動作しているか、デスクトップではネットワーク復旧後に仮想インターフェースとDNSが再構築されたかを調べてください。再起動で復旧しても、原因が分かったとは限りません。中断前後のログを必要な範囲だけ保存し、個人情報を伏せてください。ログの詳細度を上げるのは必要な期間だけにし、調査が済んだら通常の設定に戻しましょう。大量のログが出続けるのを防ぎ、アクセス先が長期間保存されるリスクも減らせます。
サポートを依頼する際は、プラットフォームとアーキテクチャ、クライアント名、現在のカーネル、接続方法、エラーの原文、確認済みの手順を伝えてください。サブスクリプションURL、パスワード、認証情報は不要です。原因が特定の設定に絞られた場合は、ヘルプセンターで該当する質問を探してください。最小構成から設定し直す場合は、使い方ガイドに戻ってください。最終確認では、正常に接続できること、ルーティングが想定どおりであること、無効化後にネットワークが復旧することの3点を確認します。一度ページが開いただけでは十分ではありません。