複数デバイスでノードを長期的に揃えるなら、同じサブスクリプションURLを使うのが基本です。一時的にVMess、VLESS、Trojan、Shadowsocksの単一ノードをAndroidへ渡す場合は、QRコードが便利です。ルーティングや画面設定まで含めて同じクライアントを移行するときだけ、完全な設定エクスポートを検討します。本記事では、3つの方法の手順、同期できる範囲、移行後の確認方法を説明します。
同期するのはノードか、クライアント設定全体か
「V2Ray設定の同期」には、通常3つの異なる目的が含まれます。1つ目は、パソコンとスマホで同じサーバー一覧を表示すること。2つ目は、現在使っている単一ノードを別のデバイスへ渡すこと。3つ目は、クライアントのデータベース、ルーティング規則、DNS、サブスクリプショングループ、画面設定まで移行することです。必要なツールは目的ごとに異なります。共有用QRコードを完全なバックアップと考えたり、デスクトップ版の設定フォルダーをそのままAndroid版で読み込ませたりすることはできません。
サブスクリプションは、サーバー一覧を継続的に更新したい場合に最適です。サーバー側でアドレス、ポート、UUID、通信方式、TLSパラメータが変更されても、各デバイスで一度ずつ更新すれば最新情報を取得できます。QRコードや共有リンクは、その時点のノード情報を切り取ったスナップショットにすぎず、元のノードが後から変わっても受信側には自動反映されません。設定エクスポートは移行用の機能に近く、リアルタイム同期ではなく、ローカルの規則やクライアント状態を保持することが目的です。
共通のサブスクリプションURL
おすすめ各デバイスが同じノード一覧を個別に取得するため、アドレス、ポート、プロトコルパラメータの更新を継続的に受け取れます。デバイス間でファイルを直接送る必要もありません。
適した用途:長期利用、複数デバイスでのノード一覧の統一
QRコードまたは共有リンク
単一ノードの接続情報をまとめて渡せます。手順は短い一方、サブスクリプショングループ、ルーティング規則、後からの変更は含まれません。
適した用途:一時的な単一ノードの共有、パソコンからAndroidへの転送
設定のエクスポートとインポート
同じ種類のクライアントの移行に使え、より多くのローカルデータを保持できます。クライアントやコアをまたぐ場合は、項目ごとに互換性を確認する必要があります。
適した用途:パソコンの買い替え、OSの再インストール、複雑なルーティング設定の保存
方法1:同じサブスクリプションURLでノード一覧を揃える
共通のサブスクリプションを使う方法は、Windows、macOS、Android、Linuxの複数デバイスで最も管理の手間が少ない選択肢です。デスクトップではv2rayN、Androidではコアの要件に応じてv2rayNGまたはv2flyNGを利用できます。各デバイスに保存するのはサブスクリプションURLとグループ名だけで、サーバー一覧はサブスクリプションの内容から生成されます。更新はクライアントごとに実行します。パソコンで更新してもスマホへ自動的に送信されるわけではないため、スマホ側でもクライアントから一度更新する必要があります。
始める前に、サブスクリプションURLを自分の複数デバイスで利用できるか確認し、サービス提供元の同時接続数制限にも注意してください。サブスクリプションURLにはアカウントを識別できるトークンが含まれることが多いため、アカウントの認証情報と同じように扱い、公開チャット、スクリーンショット、公開ドキュメントに貼り付けないでください。コピー時はURLの前後に空白や改行が入らないようにします。
-
グループを作成する
v2rayNのメイン画面で「サブスクリプショングループ」→「サブスクリプショングループ設定」→「追加」と進み、識別しやすい名前を入力して、サブスクリプションURL全体を貼り付けます。
-
サブスクリプションを更新する
保存後、「サブスクリプショングループ」→「すべてのサブスクリプションを更新」を開き、サーバー一覧が更新されるまで待ちます。1つの配信元だけ更新したい場合は、対象グループから個別に更新します。
-
Android側に追加する
v2rayNGまたはv2flyNGで左上のメニューを開き、「サブスクリプショングループ設定」へ進みます。右上の追加ボタンをタップし、同じURLを入力して保存します。
-
一覧を更新する
Android側のメイン画面に戻り、メニューから「サブスクリプションを更新」を実行します。完了後、ノード名、プロトコル、件数がサブスクリプションの内容と一致するか確認します。
-
選択してテストする
各デバイスでノードを1つずつ選択し、接続を開始します。一覧に表示されたかだけで判断せず、ログを開いてコアが設定を正常に読み込んだことを確認してください。
デスクトップ版のサブスクリプショングループ
- クライアント
- v2rayN 7.x
- メニューの場所
- サブスクリプショングループ → サブスクリプショングループ設定
- 更新方法
- すべてのサブスクリプションを更新
- 推奨する名前の付け方
- 配信元または用途で区別する
グループ名はローカル表示用のラベルなので、各デバイスで完全に同じにする必要はありません。
Android版のサブスクリプショングループ
- クライアント
- v2rayNGまたはv2flyNG
- 入口
- メニュー → サブスクリプショングループ設定
- 更新操作
- サブスクリプションを更新する
- コアによる違い
- Xrayまたはv2fly
同じサブスクリプションに含まれる新しいプロトコルを利用できるかどうかは、選択したコアの対応範囲によって決まります。
ノード数が異なっていても、必ずしも同期に失敗したとは限りません。サブスクリプションサービスがクライアントの能力に応じて異なる内容を返したり、ローカルのキーワードフィルターが項目を非表示にしたりすることがあります。確認時はまずグループフィルターを無効にし、総数だけでなくプロトコル、アドレス、ポート、ノード名を比較してください。サブスクリプション更新がタイムアウトする場合は、現在のネットワークからURLへアクセスできるか確認します。利用可能なノードがある場合は、クライアントの「プロキシ経由で更新」オプションも試せます。
方法2:QRコードで単一ノードを共有する
QRコードは「この1つだけ必要」という場合に適しています。たとえば、パソコンに一時的に追加したVLESSノードをすぐAndroidへ渡したい場合や、サブスクリプションに多数のノードがあるものの、スマホでは1つだけ使いたい場合です。QRコードには通常、vmess://、vless://、trojan://、ss://などの共有URIが含まれます。アドレス、ポート、ユーザー識別子、トランスポート、TLSなどの項目は渡せますが、システムプロキシの状態、TUN設定、分割ルール、DNSポリシー、サブスクリプション更新URLは含まれません。
VMessの共有情報はエンコードされた構造になっている場合があります。VLESS、Trojan、ShadowsocksはURIパラメータ形式が一般的です。これらの文字列を手動で分解する必要はなく、受信側で認識させるだけで構いません。スキャン後に「パラメータが不足しています」と表示されたり、インポート後に起動できなかったりする場合は、QRコードが欠けていないか、共有ノードが受信側のコアで未対応のトランスポートパラメータを使っていないかを確認してください。Realityの公開鍵、短いID、SNI、フィンガープリントなどの項目が完全かどうかも確認します。
-
ノードを選択する
v2rayNのサーバー一覧で対象項目を選択し、テスト用、無効化済み、またはローカルネットワーク専用の設定ではないことを確認します。
-
QRコードを表示する
対象サーバーを右クリックし、「サーバーを共有」からQRコードを選択します。7.xの一部のマイナーバージョンでは、メインメニューの共有操作内に配置されています。
-
Androidでスキャンする
v2rayNGまたはv2flyNGのメイン画面で右上の追加ボタンをタップし、「QRコードをスキャン」を選択します。カメラを許可したら、パソコンの画面にかざしてください。
-
項目を確認する
インポート後の編集画面を開き、アドレス、ポート、プロトコル、トランスポート、TLS、SNI、メモ名を確認してから保存・起動します。
スキャンによるインポートが成功すると、両方のノードは独立した状態になります。後からパソコン側でポート、UUID、WebSocketパス、Realityパラメータを変更しても、Android側のコピーは変わりません。再度スキャンするか、サブスクリプションに切り替える必要があります。反対に、スマホ側でメモ名を変更してもパソコンには影響しません。静的なコピーであるため、QRコードは長期的な同期には向いていません。
方法3:設定をエクスポートして同じ種類のクライアントを移行する
設定エクスポートは、パソコンの買い替え、OSの再インストール、複雑なローカル設定の保持に適しています。QRコードよりも、サーバー一覧、サブスクリプショングループ、ルーティング規則、DNS、コアの選択、画面設定まで含められる可能性があります。ただし、すべてのクライアントが相互に読み込めるとは限りません。v2rayN、v2rayNG、v2flyNGではデータ構造と実行環境が異なるため、完全なフォルダー移行は通常、同じクライアント体系内に限って行います。
より安全なのは、移行を2層に分ける方法です。ノード層にはサブスクリプションまたは標準共有リンクを使い、クライアント層にはそのソフトウェア自身のバックアップ・復元機能を使います。こうすれば、大型バージョンの変更で画面データベース形式が変わっても、まず必要なノードを復元し、その後に少数のルーティングやDNS設定だけを手動で作り直せます。Xrayの完全な実行設定をクライアントのバックアップと同一視しないでください。前者はコアの動作を定義するもので、後者にはグループ、更新履歴、画面状態などが含まれる場合があります。
同じクライアント間の移行
- 移行元
- v2rayN 7.x
- 移行先
- 別のデバイスのv2rayN 7.x
- 優先する内容
- サブスクリプション、サーバー、ルーティング
- 移行前
- クライアントを完全に終了する
まず移行元の正確なバージョンを記録し、移行先では同じメジャーバージョンで復元します。
異なるクライアント間の移行
- 移行元
- v2rayN
- 移行先
- v2rayNGまたはv2flyNG
- 推奨する移行データ
- サブスクリプションまたは共有URI
- 再構築が必要な項目
- ルーティング、DNS、TUNパラメータ
標準ノード項目だけを移行し、デスクトップ版のデータベースは直接コピーしません。
コアの実行設定
- 形式
- JSON
- 主な内容
- inbounds、outbounds、routing
- ローカルポート
- 移行先デバイスで再確認する
- 用途
- 診断と高度な移行
コアのJSONには、クライアント画面の状態全体は含まれません。
ローカル実行パラメータ
- システムプロキシ
- デバイスごとに有効化
- TUNモード
- デバイスごとに権限を許可
- ログレベル
- デバイスごとに個別設定
- 起動時の動作
- ノードと一緒には自動移行されない
これらのパラメータはOS環境に依存するため、項目単位で無理に一致させる必要はありません。
-
バージョンを記録する
移行元デバイスで「ヘルプ」→「バージョン情報」を開き、v2rayNの7.xの正確なバージョンを記録します。同時に「設定」→「パラメータ設定」→「コアの種類」で現在選択されている項目も控えてください。
-
必要な項目をエクスポートする
まずサブスクリプションURL、標準共有リンク、自分で作成したルーティング規則を保存します。完全な移行が必要な場合は、クライアントが提供するバックアップ機能を使うか、設定データをコピーします。
-
動作を停止する
完全な設定を移行する前にシステムプロキシとTUNを無効にし、トレイメニューからクライアントを終了します。データベースや設定ファイルへの書き込みが続いている状態を避けるためです。
-
移行先で復元する
同じメジャーバージョンのクライアントでデータを復元します。初回起動時はすぐにシステム通信を引き継がず、まずサーバー、サブスクリプション、ルーティング項目を確認してください。
-
再設定する
移行先のシステムに合わせてローカル待受ポート、システムプロキシ、TUN権限を設定し直します。その後、ノードを1つ選んでテストし、コアのログを確認します。
macOS、Linux、Windowsで同じv2rayNを動かしていても、すべてのパス項目を機械的にコピーすべきではありません。ログの保存先、コアの配置場所、自動起動方法、システムプロキシの実装は異なる場合があります。本当に揃えるべきなのは、サブスクリプションの配信元、ノードパラメータ、通信の振り分け方です。OSに依存するパス、権限、ネットワークの引き継ぎ方法は、移行先で改めて設定してください。
移行後は4層で確認し、「ノードは同じなのに結果が違う」問題を防ぐ
複数デバイスに同名のノードが表示されても、実際の実行設定が完全に同じとは限りません。よくある違いとして、デスクトップ側はXrayコア、もう一方はv2flyコアを選択しているケースがあります。また、パソコンではTUNを有効にし、AndroidではシステムVPNインターフェースが通信を引き継いでいる場合もあります。ノードパラメータが一致しているのは、接続先が同じだという意味にすぎず、ローカルの受け入れ設定、DNS、ルーティングポリシーまで一致することは保証しません。
「ノード項目、コアの機能、ローカルの入口、振り分け結果」の4層で確認することをおすすめします。まず接続先のアドレス、ポート、プロトコルを確認し、次にコアがそのトランスポート構成に対応しているかを確認します。その後、ローカルポートと通信の引き継ぎ状態を確認し、最後に実際のドメイン名で直通接続とプロキシ規則を検証します。ノードを何度も削除して再インポートするより、問題を特定しやすくなります。
| 確認レイヤー | 確認する項目 | 実施する確認 | よくある違い |
|---|---|---|---|
| ノード項目 | アドレス、ポート、UUID、トランスポート、TLS | 編集画面を開いて項目ごとに比較し、メモ名だけで判断しない | 古いQRコードに変更前のポートが残っている |
| コアの機能 | Xrayまたはv2fly | 「設定」→「パラメータ設定」→「コアの種類」で確認する | 新しいトランスポートパラメータが別のコアでは利用できない |
| ローカルの入口 | SOCKS、HTTP、混合ポート | 本体の画面に表示される値を基準にする。一般的なテスト値は10808 | 別のプログラムがポートを使用しており、コアの起動に失敗する |
| 通信の引き継ぎ | システムプロキシまたはTUN | 起動後にステータスバーとコアのログを確認する | ノードは接続済みだが、アプリの通信がクライアントに入っていない |
| ルーティング結果 | 直通、プロキシ、ブロックの規則 | 直通用ドメインとプロキシ用ドメインを1つずつテストする | デバイスごとにルールセットのバージョンや規則の順序が異なる |
- まずログの時刻を確認:ノード起動直後に、コアの読み込みと接続の記録が表示されるはずです。新しいログがまったくない場合は、まずコアが起動しているか確認します。
- 次にポートの使用状況を確認:ローカルの混合ポートを
10808に設定している場合、別のクライアントが同じポートを同時に待ち受けていないか確認します。 - 続いてシステムプロキシを確認:デスクトップクライアントが動作していることと、システムプロキシが有効であることは別の状態です。前者が成功しても、ブラウザーの通信が引き継がれたとは限りません。
- 最後にルーティングを確認:一時的にグローバルプロキシへ切り替えてテストします。グローバルでは使えるのに規則モードで使えない場合、問題は通常ノードではなくルーティングまたはDNSにあります。
複数デバイス同期でよくある問題
実際の利用で多いのは、「インポートボタンが動かない」ことではなく、同期する範囲を混同するケースです。以下の状況では、まず該当する手順で対処し、そのうえで再インポートするか判断してください。
パソコンでサブスクリプションを更新したのに、スマホには古いノードが表示されるのはなぜ?
サブスクリプションの更新は、デバイス間で自動的にプッシュされません。v2rayNGまたはv2flyNGのメニューを開き、「サブスクリプションを更新」を実行してください。完了後は現在選択されている項目も確認します。古いノードが削除されても、クライアントが新しいノードへ自動的に切り替えるとは限らないためです。
スキャンは成功したのに、起動すると設定が無効だと表示されるのはなぜ?
ノードの編集画面を開き、トランスポートの種類、TLS、SNI、フィンガープリント、Realityの公開鍵、短いIDを重点的に確認します。さらに、Androidクライアントで使用しているコアがその組み合わせに対応しているか確認してください。必要であれば、デスクトップ側と同じXrayの対応範囲に合わせます。
2台のデバイスでノード数が違うのはなぜ?
まずクライアントのキーワードフィルターとグループフィルターを無効にし、それぞれで完全なサブスクリプション更新を実行します。それでも異なる場合は、サブスクリプションの更新時刻とプロトコルの種類を比較してください。サービス側がクライアントの能力に応じて異なる項目を返すことがあります。
v2rayNの設定をそのままv2rayNGへインポートできる?
完全な設定フォルダーのコピーはおすすめしません。クライアントをまたぐ場合は、サブスクリプション、QRコード、標準共有URIでノードを移行し、Android側でルーティング、DNS、接続モードを個別に設定してください。
ノードには接続できるのに、パソコンとスマホでアクセス結果が違うのはなぜ?
両方が同じルーティングモードとDNSポリシーを使っているか確認します。デスクトップ側では、「設定」→「パラメータ設定」にあるローカルポートと、システムプロキシまたはTUNが実際に有効かどうかも確認してください。ノード名だけを比較してはいけません。
長期運用では、サブスクリプションを主なデータソース、QRコードを一時的な共有手段、設定エクスポートを移行用バックアップとして使い分けると管理しやすくなります。3つの方法にそれぞれ役割を持たせれば、設定の重複編集を減らし、OS依存のパラメータを別のデバイスへ誤って持ち込むことも防げます。移行のたびにノード、コア、ポート、ルーティングを一度確認しておくと、通常はログから差異をすぐに見つけられます。