この記事は、古い端末でShadowrocketを使っていて、新しいiPhoneやiPadへの機種変更を予定している方向けです。移行時はHomeのサーバーとサブスクリプション、Configのルールファイル、Settingsの動作設定をそれぞれ確認します。iCloud同期で再入力を減らしつつ、独立した設定ファイルも書き出しておきましょう。復元後は、現在の設定、Global Routing、システムのVPN許可も改めて確認してください。リストに項目が表示されただけでは、移行が完了したとは限りません。
1. サーバー、設定ファイル、動作設定を区別する
Shadowrocketの設定バックアップは、ファイルを1つ保存すれば完了というものではありません。Homeのサーバーは接続先を決め、Configの設定ファイルはリクエストに適用するルールを決めます。Settingsの項目はサブスクリプションの更新やOn Demand接続などの動作に関わります。それぞれ連携しますが、同じ方法ですべて保存・復元できるとは限りません。
| データの場所 | 移行前に保存するもの | 新しい端末で確認すること |
|---|---|---|
| Home | サーバー設定、サブスクリプションURL、グループ名 | サーバー項目がそろっているか、サブスクリプションを更新できるか |
| Config | 現在選択中の設定ファイル、ローカルで変更したルール | ファイルの内容と現在の選択状態 |
| Settings | 現在の使い方に関係する設定の記録 | On Demand、サブスクリプションの更新などの設定 |
| システムのVPN | 古い端末での設定状態を記録 | 新しい端末で改めて許可する |
ルール設定ファイルだけを書き出しても、Homeのサーバーリスト全体のバックアップにはなりません。ファイルにはルール、DNS、Hostの情報が含まれる場合や、外部リソースを参照している場合があります。接続情報が含まれているかは、拡張子だけで判断せず実際のファイルを確認してください。サブスクリプションURLは別途安全に保存します。サブスクリプションはご利用のサービス提供元から入手してください。
移行前の確認:バックアップ対象を把握する
古い端末を整理する前に、サーバー、サブスクリプション、ルールファイル、動作設定を1つずつ確認してください。新しい端末で確認できていないデータがあれば、古い端末の元データを残しておきましょう。
2. iCloud同期を有効にしてデータの反映を確認する
iCloud同期には、端末でiCloudアカウントとiCloud Driveが利用できる必要があります。App Storeでの購入復元とは別の機能です。前者はデータの同期、後者はアプリの入手資格に関わります。新しい端末でアプリを再ダウンロードできても、以前の設定が同期済みとは限りません。
- 古いiPhoneまたはiPadのシステム「設定」で、Appleアカウント → iCloud → iCloud Driveの順に開き、同期が利用できることを確認します。システムメニューの名称は、OSの変更により異なる場合があります。
- iCloudのアプリ一覧でShadowrocketを探し、iCloudの使用が許可されていることを確認します。一覧が折りたたまれている場合は、すべてのアプリを表示してください。
- Shadowrocketを開き、Settings → iCloudに進んで同期関連の項目を確認します。同期できるデータは現在の画面に表示されている内容を基準にしてください。この項目を端末全体のバックアップ機能と捉えないようにしましょう。
- 古い端末をインターネットに接続したままにし、同じiCloudアカウントを使う新しい端末でも該当する項目を有効にします。HomeとConfigをそれぞれ開き、スイッチがオンかだけでなく、データが実際に表示されているか確認してください。
初回の同期には時間がかかる場合があります。通信状態、iCloudの空き容量、アカウントの認証状態も結果に影響します。Homeにサーバーが表示されてもConfigに目的のファイルがない場合は、設定ファイルの同期状況を確認し、独立した書き出しファイルでの復元も準備してください。同期を促そうとして、両方の端末で項目を削除・改名したり、一度に大量に変更したりしないでください。
3. Configから設定ファイルを書き出し、独立したバックアップを保存する
書き出す前に、Configで現在使用中のファイルを確認します。似た名前の設定が複数ある場合は内容を開き、ローカルで追加したルールを照合してください。以前ダウンロードしただけで、現在使っていないファイルをバックアップしないよう注意しましょう。リモート設定のURLとローカルでの変更内容も別々に記録します。リモートファイルを再ダウンロードしても、ローカルでの編集が保持されるとは限りません。
- Configを開き、使用中の設定ファイルを探します。ファイルの操作メニューまたは詳細画面から、共有または書き出しを選択します。具体的な操作場所は現在の画面に従ってください。
- システムの共有シートで「ファイルに保存」を選び、独立したコピーを保存します。
shadowrocket-before-migration.confのように用途が分かる名前を付けると、普段使うファイルと区別しやすくなります。 - システムの「ファイル」でファイルが実際に保存されており、開いてテキストを確認できることを確かめます。iCloud Driveに保存した場合はアップロード完了を待ち、別の端末から読み込めることも確認してください。
- 自分で変更した他の設定ファイルも、それぞれ保存します。サブスクリプションURLと手動入力したサーバー設定は別途安全に保存してください。ルールファイルで代用することはできません。
以下は確認ポイントを示す例であり、既存の設定ファイルと置き換えて使える完全なファイルではありません。書き出した後、[Rule]内のルールが元の順序で残っているか、特に追加したドメインと最終ポリシーを確認します。ここでは説明用ドメインと予約済みアドレスを使用しており、実際の接続先を示すものではありません。
[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
FINAL,DIRECT
DOMAIN-SUFFIXは指定したドメインとそのサブドメインに一致し、IP-CIDRはアドレス範囲を指定します。FINALは、それまでのルールに一致しなかったリクエストを処理します。移行時は元の構文と順序を保ち、新しい端末に合わせるためだけにルールを変更する必要はありません。元のファイルが外部ルールリソースを参照している場合は、新しい端末からそのURLにアクセスできることも確認してください。
4. 新しいiPhone、iPadで順番に復元する
ShadowrocketはAppleプラットフォーム向けのクローズドソースの有料アプリです。主にiPhone、iPadで利用でき、入手先はApp Storeのみです。機種変更の前に正規版の確認方法で、開発者のShadow Launch Technology Limited、公式アイコン、アプリID 932747118を確認できます。システム要件と購入の適用範囲はApp Storeの掲載内容をご確認ください。アプリの買い切り購入に回線プランは含まれません。
- アプリと同期環境を復元します。新しい端末でShadowrocketを入手し、iCloudアカウントと前述の同期設定を確認します。まず既存のデータが表示されるか確認し、同じサブスクリプションをすぐに重複追加しないでください。
- Homeの項目を復元します。サーバーリストが同期されていない場合は、保存しておいたサブスクリプションURLを使って再追加し、更新します。手動で設定したサーバーは元のパラメータに従って復元し、プロトコル、サーバーアドレス、ポート、認証項目を確認してください。表示名だけを入力しても復元できません。
- ルールファイルを読み込みます。システムの「ファイル」で書き出した設定を探し、共有シートからShadowrocketに渡します。読み込み後はConfigで内容を確認し、使用する設定を選択してください。リストにファイルが表示されただけでは、有効になったとは限りません。
- 動作モードを確認します。HomeのGlobal Routingを確認してください。ルールに基づいて通信を振り分ける場合はConfigを選択します。ProxyとDirectではリクエストの処理先が異なるため、ルールが復元されたかどうかの判断には使わないでください。
- システムの許可を確認します。初めて接続スイッチをオンにするときは、システムの案内に従ってVPN構成の追加を許可し、端末の認証を完了します。古い端末で許可済みでも、新しい端末での確認に代わるものではありません。
5. スイッチだけでなく、接続・ルール・On Demandを確認する
復元後は3つの観点で確認します。サーバーに接続できるか、現在の設定が選択されているか、リクエストが想定どおり処理されるかです。遅延テストで数値が表示されても、確認できるのはそのテストが応答したことだけです。Webリクエスト、DNS、すべてのルールが正常とは限りません。問題を特定しやすくするため、確認時は一度に変更する条件を1つに絞りましょう。
- サーバーを確認:Homeで対象のサーバー項目を明示的に選択し、利用可能な接続テストを実行します。失敗した場合は、まずアドレス、ポート、認証情報、サービスの稼働状況を確認してください。
- ルールを確認:Global RoutingをConfigにした状態で、直接接続またはプロキシ経由になることが分かっている宛先にアクセスし、接続ログと実際に適用されたポリシーを照合します。理解できていないルールをテストのために追加しないでください。
- 更新を確認:登録済みのサブスクリプションを1回更新し、認証失敗や解析エラーがないか確認します。更新後は、現在選択している項目が引き続き存在することも確認してください。
- On Demandを確認:Settings → On Demandを開き、スイッチと登録済みの条件を確認します。まず手動接続をテストし、その後必要な自動接続条件を戻してください。自動再接続がトラブルシューティングの妨げになるのを防げます。
復元後、手動で切断しても自動接続される場合は、すべての設定を削除するのではなく、まずOn Demandを確認してください。一部のドメインだけに問題がある場合は、現在のConfig、ルールの順序、DNS設定を確認します。サーバーへの接続問題とルールのマッチング問題を切り分けることで、原因が分からないまま何度も読み込み直す事態を避けられます。
6. 機種変更時によくある質問
2台の端末で同じアカウントを使っているのに、リストが空なのはなぜですか?
まず、App Storeの購入用アカウントだけでなく、システムで使っているiCloudアカウントが同じか確認します。次にシステムのiCloud Drive、ShadowrocketのiCloud使用許可、Settings → iCloudを確認してください。その後、HomeとConfigを個別に確認します。まだ同期されていないデータは独立したバックアップから復元できます。古い端末のデータはすぐに消去しないでください。
confファイルを読み込んだのに、選択できるサーバーがないのはなぜですか?
Configを開いて、ファイルの実際の内容を確認してください。ルールファイルには通信の振り分けルールだけが保存され、Homeのサーバー情報が含まれていない場合があります。Homeに戻り、手元にあるサブスクリプションを使って項目を復元するか、古い端末の設定をもとに追加します。サブスクリプションはご利用のサービス提供元から入手してください。その後、サーバーと現在使う設定を選択します。
サーバーは復元できたのに、アクセス結果が古い端末と異なるのはなぜですか?
まず両方の端末でGlobal Routingの設定を比較し、Configで同じ設定ファイルが選択されているか確認してください。まだ差がある場合は、ローカルでの変更、外部ルールリソース、DNS設定を比較します。ファイル名が同じだからといって、内容まで完全に一致するとは限りません。
新しい端末でサブスクリプションの更新時に認証エラーが出ました。アプリを買い直す必要がありますか?
アプリの購入とサブスクリプションの認証は別々に管理されています。サブスクリプションURLが完全か、認証情報が有効かを確認し、最新の利用可能なURLはご利用のサービス提供元から入手してください。サブスクリプションの認証エラーを解決するためにアプリを再購入する必要はありません。また、tokenを含むURLを公開ページに貼り付けないでください。
7. 移行完了後に古い端末と機密情報を含むファイルを整理する
設定ファイルやサブスクリプションURLには、機密情報が含まれる場合があります。ファイルを共有する前に、パスワード、鍵、認証情報、token付きURLが含まれていないか確認してください。サーバーの表示名を隠すだけでは、これらの情報を保護できません。バックアップは自分で管理できる保存先に置き、複数人がアクセスできる共有フォルダは避けてください。
- 新しい端末からバックアップファイルを読み取れること、Homeの項目がそろっていること、Configの内容と選択状態が正しいことを確認します。
- 手動接続、サブスクリプションの更新、普段使う宛先へのアクセスをそれぞれ確認してから、On Demandを再設定します。
- 移行の確認が終わるまでは古い端末の元データを残してください。「アカウントからサインアウトする」「項目を削除する」といった操作を同期テストに使わないでください。
- 確認後は一時的な共有ファイルを整理します。認証情報を誤って公開してしまった場合は、ご利用のサービス提供元から新しい認証情報を入手し、関連する端末も更新してください。
今後ルールを大幅に変更する前にも、独立したコピーを書き出してください。これにより、日常の変更にはiCloud同期を使いながら、誤編集や同期トラブルの際には確実な復元元を確保できます。2つの方法は役割が異なるため、互いに置き換えるものではありません。