複数デバイスでV2Ray設定を同期する方法:サブスクリプションURL・エクスポートファイル・QRコード

Windows、macOS、Android、Linux間でノード設定を同期する3つの方法を比較。共通サブスクリプション、設定ファイルのエクスポート・インポート、デスクトップでのQRコード生成を解説。

この記事の概要

複数のデバイスを長期的に管理するなら、まず共通のサブスクリプションソースを使います。固定ノードを少数だけ移行する場合は共有リンクやQRコード、クライアント全体をバックアップする場合は同じクライアント間での移行が適しています。この記事ではノードデータ、ルーティング設定、クライアント設定を分け、v2rayN、v2rayNG、v2flyNGでの具体的な操作手順と確認方法を紹介します。

まず同期する設定の範囲を決める

同期のポイント

「V2Ray設定の同期」は単一の操作ではありません。一般的なクライアントには、ノード情報、サブスクリプショングループ、ルーティングルール、システムプロキシ設定、ローカルポートが保存されています。ノード情報にはアドレス、ポート、ユーザー識別子、トランスポート、TLS、Reality、WebSocketパス、サーバー名などの接続先情報が含まれます。一方、ローカル設定はアプリの通信を受け取り、ドメインに応じてルールを適用し、どの出力先を選ぶかを決めます。

同期のポイント

サブスクリプションURLは通常ノード一覧を配布するためのもので、各デバイスのローカルポリシーまで完全に同期するものではありません。Windowsのv2rayNではシステムプロキシやローカルSOCKSポートを使えますが、Androidのv2rayNGやv2flyNGではアプリごとのプロキシを有効にする場合があります。両方に同じノードをインポートしても、ローカルルーティング、バイパスルール、起動方法はそれぞれ設定する必要があります。

同期のポイント

そのため、同期前に目的を3つに分けて考えます。ノード一覧を一致させるのか、ルーティングルールも再利用するのか、クライアントの画面設定やローカル待受パラメータも移行するのかを確認してください。最初にこの3層を整理すれば、1つのコアJSONを汎用バックアップと誤解したり、サブスクリプション更新でローカルルールまで自動的に変わると思い込んだりするのを防げます。

リモートノードデータ

プロトコル
VLESS または VMess
サーバーポート
443、8443などの実際の値
トランスポートパラメータ
TCP、WebSocket、gRPC
認証フィールド
ユーザー識別子とフロー制御パラメータ

サブスクリプション、共有リンク、QRコードで異なるクライアント間に転送できます。

デバイス側のローカル設定

ローカルポート
SOCKS 10808
プロキシモード
自動設定またはグローバル
ルーティングポリシー
ダイレクト接続、プロキシ、ブロック
適用範囲
すべてのアプリまたは指定したアプリ

通常はデバイスごとに確認が必要で、ノードサブスクリプションの復元だけに頼ることはできません。

3種類
主な同期方法
10808
よく使われるローカルSOCKSポート
2層
ノードデータとローカルポリシー
4プラットフォーム
Windows、macOS、Android、Linux

方法1:共通サブスクリプションURLでノード一覧を管理

同期のポイント

ノードの追加、無効化、パラメータ変更が発生する場合、共通のサブスクリプションURLが最も管理しやすい方法です。各デバイスに同じ購読URLを保存し、それぞれのタイミングで更新すれば、ノードの変更はサブスクリプション側で一度処理するだけで済みます。Windows、macOS、Android、Linuxでノードを長期的に共有する環境や、v2rayN、v2rayNG、v2flyNGを併用する環境に適しています。

同期のポイント

サブスクリプションで同期される主な対象はサーバー項目です。インポート後も、クライアントで選択されているアクティブノード、ルーティングモード、ローカルプロキシの状態を確認してください。更新によって現在のノードが強制的に切り替わるとは限りません。古いノードが削除された場合の扱いもバージョンによって異なるため、更新後に選択中の項目が残っているか確認する必要があります。

  1. サブスクリプションを保存

    同期のポイント

    v2rayNのメイン画面で「サブスクリプショングループ」→「サブスクリプショングループ設定」→「追加」を開き、グループ名を入力して完全なサブスクリプションURLを貼り付けます。

  2. コアを選択

    同期のポイント

    「設定」→「パラメータ設定」→「Core タイプ」を開き、ノードのプロトコルを解析できるコアを選択します。VLESSとRealityのノードでは通常、Xrayコアを使用します。

  3. グループを更新

    同期のポイント

    メインウィンドウに戻り、「サブスクリプショングループ」→「すべてのサブスクリプションを更新」を開きます。ノード一覧が更新されたら、追加、削除、名前の変更を確認します。

  4. モバイル端末を追加

    同期のポイント

    v2rayNGまたはv2flyNGで右上の「+」をタップし、「クリップボードからサブスクリプションをインポート」または該当するサブスクリプション管理画面を選び、更新を実行します。

  5. 個別に確認

    同期のポイント

    各デバイスで同じノードを選び、実接続による遅延テストを行います。接続後に目的のサイトへアクセスし、ローカルのルーティングとプロキシの適用範囲が想定どおりか確認してください。

推奨構成:ノードソースは共通化し、ローカルポリシーは個別に管理

デスクトップ(v2rayN)
  • 共通サブスクリプションURLを保存
  • 必要に応じてサブスクリプショングループを更新
  • システムプロキシモードを個別に設定
  • ローカルポートとルーティングルールを確認
Android端末
  • v2rayNGまたはv2flyNGに同じサブスクリプションをインポート
  • 更新後にアクティブノードを再確認
  • 端末ごとにアプリ単位のプロキシを設定
  • モバイルネットワークとWi-Fiでのテスト結果を保存

ノード一覧は1つのソースで管理し、ローカルの待受、ルーティング、アプリの適用範囲は各デバイスで設定するため、役割分担が明確です。

方法2:ファイルのエクスポートまたは共有リンクで固定ノードを移行

同期のポイント

長期的に使う固定ノードが1〜3個だけで、サブスクリプションを継続的に更新する必要がない場合は、デスクトップから共有リンクをエクスポートし、別のデバイスにインポートできます。VLESSとVMessの共有リンクは、単一ノードの主要な接続パラメータを伝えるのに適しています。テキストサイズが小さく、ノードアドレスだけを含む一時ファイルとして保存しやすい点もメリットです。

同期のポイント

注意すべきなのは、「ノードの共有」と「クライアントバックアップのエクスポート」は別物だということです。共有リンクはクライアントをまたいでサーバー設定を渡すためのものです。一方、クライアントバックアップにはグループ、画面設定、ルーティングルール、ローカルデータベースのフィールドまで含まれることがあり、通常は同じクライアント、または互換性のあるバージョン間での復元に限って適しています。v2rayNのデータディレクトリ全体をそのままv2rayNGやv2flyNGに渡しても、確実な変換にはなりません。

同期のポイント

コアの実行設定も、交換形式として最初に選ぶ方法には向きません。クライアントが生成するJSONには、インバウンド、アウトバウンド、DNS、ルーティングの各オブジェクトが展開されていることが多く、ローカルの待受アドレスやポートも含まれます。たとえばデスクトップ側の設定にある 127.0.0.1:10808 はローカル入口であり、リモートサーバーのポートと誤解しないでください。

サブスクリプションURL

おすすめ

同期のポイント

一度追加すれば繰り返し更新でき、ノードの追加、削除、パラメータ変更を一元管理できます。

適しているケース:2台以上のデバイス、ノードを頻繁に変更、長期的な同期

共有リンクまたはテキストファイル

同期のポイント

VLESSやVMessなどの共有URIで単一ノードを渡せます。クライアントをまたいだインポートが簡単ですが、変更後は再送信が必要です。

適しているケース:少数の固定ノード、一時的な移行、オフライン保存

クライアント全体のバックアップ

同期のポイント

より多くのクライアント状態を保持できますが、ディレクトリ構成やフィールドはクライアントの種類とバージョンに左右されます。

適しているケース:同じクライアント、同種のデスクトップ環境、端末全体の移行

テキストをインポートするときに確認するフィールド

vless://ユーザー識別子@ノードアドレス:443?type=tcp&security=reality&flow=xtls-rprx-vision#デスクトップのメインノード

同期のポイント

上記の構造は、共有URIに含まれる各要素を説明するためのものです。実際のインポートでは、サーバーが提供した完全な内容、または元のクライアントからエクスポートした完全な内容を使用してください。例をもとに認証フィールドを手作業で組み立てないでください。インポート後にノードは表示されるのに接続できない場合は、ローカルプロキシポートを何度も変更するのではなく、トランスポート、TLS設定、サーバー名、フロー制御を優先して照合します。

方法3:QRコードでデスクトップとAndroid間を転送

同期のポイント

QRコードは共有テキストを画像化したものです。単一ノードをデスクトップ画面からAndroid端末へ渡すのに適しています。長いリンクを手入力する必要がなく、クエリパラメータの多いVLESS RealityやVMessノードで特に便利です。ただし、QRコードで継続的な同期関係が作られるわけではありません。ノードパラメータが変わったら、再生成して読み取る必要があります。

同期のポイント

v2rayNで対象ノードを選択し、「サーバー」→「サーバー設定を共有」、またはノードの右クリックメニューにある共有項目を使ってQRコードを表示します。画面のバージョンによって最後のメニュー名は多少異なる場合がありますが、操作対象は必ず現在選択している単一サーバーであり、サブスクリプショングループ全体ではありません。

  1. ノードを選択

    同期のポイント

    v2rayNのサーバー一覧でプロトコル、別名、ポートを確認し、対象項目を右クリックして「サーバー設定を共有」を開きます。

  2. QRコードを表示

    同期のポイント

    QRコードの表示方法を選び、ウィンドウを見える状態に保ちます。ノードの認証情報を含む画面を公開場所に保存しないでください。

  3. モバイル端末で読み取る

    同期のポイント

    v2rayNGまたはv2flyNGで「+」→「QRコードをスキャン」をタップし、認識されたノードをローカル一覧に追加します。

  4. パラメータを確認

    同期のポイント

    新しいノードの詳細を開き、アドレス、リモートポート、トランスポート、TLS、サーバー名、備考を照合して、読み取り漏れがないことを確認します。

  5. 接続を確認

    同期のポイント

    まず実接続による遅延テストを行ってから接続を開始します。遅延テストがタイムアウトする場合は、ログにあるハンドシェイク、DNS、証明書関連の情報を確認してください。

同期後に設定が本当に一致しているか確認する方法

同期のポイント

一覧に同名のノードが表示されても、インポートが完了したことしか分からず、両方のデバイスが同じパラメータを使っている証明にはなりません。確認時は、まずプロトコル、アドレス、リモートポート、トランスポート層を比較し、その後にプロキシのハンドシェイク全体をテストします。通常のpingは基本的なネットワーク到達性しか示さず、VLESS、VMess、TLS、Realityのハンドシェイクは実行しないため、同期成功の判断材料には単独で使えません。

同期のポイント

再現性のある確認方法は、2台のデバイスで同じノードを選び、実接続による遅延と接続時間を記録してから同じ宛先へアクセスすることです。たとえばWindows側の実接続遅延が186ms、Android側が214msの場合、この程度の数十msの差はWi-Fi、モバイルネットワーク、ローカル処理の違いによる可能性があります。一方が安定して数値を返し、もう一方が継続的にタイムアウトするなら、ノード詳細とログを比較してください。

同期のポイント

「ノードの一致」と「振り分け結果の一致」も区別する必要があります。デスクトップ側では中国本土のドメインを直接接続し、それ以外をプロキシ経由にしていても、Android側では指定したアプリだけをプロキシ対象にしている場合があります。このとき同じサイトでもデバイスごとに出口が異なることがありますが、必ずしもノード同期の失敗とは限らず、ローカルルーティングの条件やアプリの適用範囲が異なる可能性があります。

ノードの一致確認

プロトコル
両端ともVLESS
リモートポート
443
トランスポート
TCP
フロー制御
xtls-rprx-vision
サーバー名
元の設定と一致

重要なフィールドが1つでも異なると、ハンドシェイク段階で失敗する可能性があります。

ローカルポリシーの確認

ローカルポート
10808
システムプロキシ
デバイスごとに個別に有効化
DNS
ローカルルーティング設計に従う
ルールの順序
具体的なルールを優先
適用範囲
すべてのアプリまたは指定したアプリ

これらのフィールドが異なっていてもノード自体が異なるとは限りませんが、最終的な通信経路は変わります。

同期時に残しておきたい記録

よくある失敗と選び方

同期のポイント

サブスクリプション更新後にノード数が0になった場合は、正しいグループを更新しているかを確認し、サブスクリプションURLが完全か、ネットワークリクエストが成功したか、クライアントが返却形式を解析できるかを確認します。すぐに元のグループを削除しないでください。既存ノードを残したまま一時グループを新しく作ってテストすれば、操作ミスによる設定消失を抑えられます。

同期のポイント

共有リンクのインポート後にRealityやgRPCのパラメータが欠落する場合、エクスポート形式、クライアントのバージョン、コアの対応状況に原因があることが多いです。元のデバイスに戻って完全なノード詳細を比較し、v2rayNの「設定」→「パラメータ設定」→「Core タイプ」でコアの選択を確認してください。Android側でも、そのプロトコルとトランスポートの組み合わせを認識できるクライアントバージョンを使用します。

同期のポイント

QRコードを認識できない場合は、デスクトップの画面を明るくし、QRコードを拡大して、画面への反射を減らしてください。QRコードは認識できてもインポートに失敗するなら、問題はカメラの読み取りではなくテキスト解析にあると考えます。その場合は「共有リンクをコピー」を使い、クリップボードからインポートして、2つの入口の結果を比較できます。

同期のポイント

最終的な選択は次の1ルールにまとめられます。継続的に変わるノードにはサブスクリプション、少数の固定ノードには共有リンクまたはQRコード、同じクライアントで端末全体を移行するときだけ完全バックアップを使います。どの方法でも、ローカルルーティング、システムプロキシ、アプリの適用範囲はデバイスごとに確認してください。

複数デバイスを長期利用

おすすめ

同期のポイント

すべてのデバイスを同じサブスクリプショングループに追加し、定期的にノードを更新したうえで、ローカルルーティングとプロキシモードを個別に管理します。

適しているケース:Windows、macOS、Android、Linuxでの日常的な共有

少数ノードの移行

同期のポイント

VLESSまたはVMessの共有リンクをエクスポートし、テキストとして保存して1つずつインポートします。変更後は再配布してください。

適しているケース:1〜3個の固定ノード、変更頻度が低い場合

デスクトップからAndroidへの一時転送

同期のポイント

v2rayNで単一ノードのQRコードを表示し、v2rayNGまたはv2flyNGで読み取ってパラメータを確認します。

適しているケース:その場での追加、長いリンクの入力が難しい場合

V2Rayクライアントを入手 Windows、macOS、Android、Linuxから選択