まずアプリと設定形式を確認し、App Storeの国・地域を確認する
iPhoneでは、まずアプリが対応する設定形式を確認し、App Storeで入手できるかを調べます。次に設定を読み込み、VPNを許可して接続を確認します。アプリをインストールしても、接続先ノードが自動で使えるようになるわけではありません。サブスクリプションURLは通常、サービス提供元から別途発行されます。アプリの購入費用と接続サービスの利用料金も別です。
デスクトップ向けClashクライアント、mihomoコア、iOS向けプロキシアプリは、それぞれ別のものです。iOSアプリは通常、システムのNetwork Extensionを使って通信を処理します。対応プロトコルやルール構文、設定管理の方法はアプリごとに異なります。アプリ名に「プロキシ」や「VPN」とあっても、ClashのYAMLをすべて読み込めるとは限りません。
| 確認する対象 | 確認事項 | よくある誤解 |
|---|---|---|
| Stashなど、Clash形式の設定に対応したアプリ | 現在のバージョンが対応するYAMLフィールド、プロトコル、拡張構文を確認する | Clash設定に対応していれば、mihomoのすべての機能も使えると思い込む |
| Shadowrocketなどのプロキシアプリ | サービス提供元がそのアプリに対応すると明記したサブスクリプションURLを使う | ClashのYAML設定一式を汎用ノード用サブスクリプションとして扱う |
| サブスクリプションサービス | ノード用サブスクリプション、設定一式、アプリ専用URLを区別する | 同じURLをどのアプリにもそのまま読み込めると思い込む |
App Storeでの入手方法と国・地域の確認
一部のプロキシアプリは、特定の国・地域のApp Storeでのみ配信されています。アプリが検索で見つからない場合は、iPhoneの言語やタイムゾーン、「言語と地域」の設定を変える前に、App Storeの国・地域を確認しましょう。App Storeでの表示内容は、購入に使用するApple Accountの国・地域に応じて変わります。配信状況は変わることがあるため、最新情報は現在のストアページで確認してください。
アプリ名、デベロッパ、システム要件を確認する
- App Storeを開き、アプリの正式名称で検索してデベロッパ情報を確認します。アイコンが似ていることや検索結果の表示順だけで判断しないでください。
- アプリの詳細ページで「互換性」を開き、必要なiOSのバージョンを確認します。現在のシステムが要件を満たしていない場合、App Storeの国・地域を変えても解決しません。
- 価格、購入に使うアカウント、自分のデバイスにインストールできるかを確認します。購入前にサブスクリプションの形式も確認し、インストール後に設定が非対応だと分かる事態を避けましょう。
購入用アカウントの国・地域を確認・変更する
iOS 18で一般的な画面を例にすると、「設定」→上部の自分の名前→「メディアと購入」→「アカウントを表示」→「国または地域」の順に進みます。システムのバージョンやアカウントの状態によって、表示名は多少異なる場合があります。ここで設定する国・地域は、「設定」→「一般」→「言語と地域」とは別の項目です。
- 現在のアカウントの国・地域を変更する:Appleから、残高の使い切り、サブスクリプションや保留中の注文の処理、新しい国・地域で有効な支払い方法の登録を求められることがあります。ファミリー共有も変更条件に影響する場合があります。
- 自分が所有する別の国・地域のアカウントを使う:「メディアと購入」でストアへのサインインを切り替えれば、アプリをダウンロードするためにデバイス全体からiCloudをサインアウトする必要はありません。ただし、購入済みアイテムやメディアのサブスクリプション、今後のアップデートに影響する可能性があるため、事前にシステムの案内を確認してください。
- 購入履歴を守る:アプリの購入、再ダウンロード、アップデートの権利は購入に使ったアカウントに紐づきます。見知らぬ人が提供する共有アカウントは使わず、確認コードを他人に教えないでください。
国・地域の情報は実情に沿って入力し、Appleの利用条件を守ってください。ウェブサイトから入手したインストーラーは、App Storeからの通常のインストールに代わるものではありません。デスクトップ用の.exeや.dmg、Android用の.apkをiPhoneで使うこともできません。TestFlightはテスト配信の仕組みで、参加枠やビルドの有効期限に制限があります。長期利用できるApp Storeの代替手段として扱わないでください。
サブスクリプションURLから読み込む:URLを安全に管理し、更新結果を確認する
サブスクリプションURLは、接続先ノードを定期的に更新したい場合に便利です。URLにはアクセストークンが含まれていることが多く、完全なURLを知る人はサブスクリプションの内容を取得できる可能性があります。URLを公開チャットやスクリーンショット、問い合わせ本文に貼り付けないでください。調査の際は、ステータスコードやエラーメッセージ、トークンを伏せたドメイン情報だけを共有しましょう。
「設定を追加」→「ダウンロード」→「選択」の順に読み込む
- サービス提供元のアカウントページから、対象クライアント用のHTTPSサブスクリプションURLをコピーします。ログインページのURLや共有方法の説明ではなく、URLそのものをコピーしたことを確認してください。
- クライアントの「設定」「サブスクリプション」「設定ファイル」などの画面を開き、「追加」「URLからダウンロード」といった項目を選びます。アプリによって名称は異なりますが、個別のノードを手動追加するのではなく、リモート設定を読み込む項目を探してください。
- URL全体を貼り付け、たとえば「個人用サブスクリプション」のように、取得元を区別できる名前を付けます。iOSから別のアプリの内容をペーストする許可を求められた場合は、コピー元を確認してから許可してください。
- ダウンロードまたは更新を実行し、ノード、プロキシグループ、ルールが表示されるか確認します。設定名だけが保存されても、内容を取得できたとは限りません。
- 読み込んだ設定を現在の使用対象に選びます。複数の設定を保存できるクライアントでも、接続に使われるのはその時点で選択されている設定だけです。
Clash形式の設定一式には、proxies、proxy-groups、rulesなどのフィールドがよく使われます。proxy-providersからノードを読み込む形式もあります。ノード一覧だけを返すサブスクリプションは、YAML設定一式ではありません。また、HTMLのログインページが返された場合も、利用できるサブスクリプションではありません。解析エラーが発生したら、まず応答の種類とアプリの対応範囲を確認し、ルールを大量に書き換えるのは避けましょう。
サブスクリプションを更新すると、リモートの内容を再取得します。ローカルのルールが上書きされるか、ノードの選択が保持されるかは、クライアントの実装によって異なります。ルール変更を長期的に維持したい場合は、アプリが対応するオーバーライド、スクリプト、独立したルール機能を使いましょう。リモート設定を直接編集した内容が永続的に保存されるとは限りません。
ファイル・QRコードから読み込む:まず内容の種類を見分ける
「ファイル」アプリから設定を読み込む
設定ファイルは、オフラインでの受け渡しやバックアップからの復元、問題の切り分けに便利です。まずファイルを「ファイル」アプリの「このiPhone内」またはiCloud Driveに保存し、クライアントで「ファイルから読み込む」を選びます。ファイルの共有メニューから対象クライアントを選ぶ方法もありますが、アプリがそのファイル形式に対応している必要があります。
- ファイルの実際の内容を確認します。
.yamlと.ymlはClash形式の設定によく使われますが、拡張子を変更しても形式は自動で変換されません。 - 読み込み後、設定の検証結果を確認し、インデントやフィールドの型、非対応プロトコルに注意します。YAMLのインデントにはスペースを使い、タブで代用しないでください。
- そのファイルの設定を選び、プロキシグループに選択可能なノードがあるか確認します。ファイルから参照しているリモートのノードプロバイダーやルールプロバイダーは、別途ネットワークから取得する必要があります。
- 元ファイルのバックアップを保管してください。静的ファイルは通常、リモートサブスクリプションのようにノードを自動更新しません。ただし、対応するリモート参照がファイル内に含まれている場合は例外です。
QRコードからサブスクリプションまたは単一ノードを読み込む
QRコードは文字列を格納する方法であり、統一された設定形式ではありません。読み取った結果は、HTTPSサブスクリプションURL、単一ノードのURI、クライアント専用の読み込みコマンドなどさまざまです。クライアントが内容に対応していなければ、読み取りに成功しても意味がありません。
- 別の画面に表示したQRコードを読み取る:クライアント内のスキャン機能からカメラを起動し、iOSの案内に従ってカメラの使用を許可してから、読み込み内容を確認します。
- 端末内の写真にあるQRコードを読み取る:クライアントが「写真から読み取る」に対応している場合は、スクリーンショットを選択できます。非対応の場合は、サービス提供元のページに戻ってサブスクリプションURLをコピーするのが簡単です。
- システムカメラで読み取る:読み取った内容が通常のURLとして開くだけの場合もあります。それだけではクライアントへの読み込みが成功したとは判断できません。
読み込み後に追加されたものが「単一ノード」か「サブスクリプション」かを確認してください。単一ノードのQRコードには、通常、分岐ルール一式は含まれず、後から自動更新できるとも限りません。ノードのパスワードやサブスクリプションのトークンを含むQRコードも、元のURLと同様に機密情報です。スクリーンショットを共有する前に、QRコード全体を隠してください。
VPNを許可して初回接続を確認する
読み込みが終わったら、まず設定とノードを選択してから接続を開始します。初めてトンネルを起動すると、iOSからアプリによるVPN構成の追加を求められるのが一般的です。表示されたアプリがインストールしたクライアントであることを確認して許可し、必要に応じてデバイスのパスコードを入力するか、認証を完了してください。
この許可によってクライアントがシステムのネットワークトンネルを作成できるようになりますが、企業管理プロファイルやルート証明書、MDM管理をインストールすることとは異なります。通常、サブスクリプションの読み込みにこうした追加操作は必要ありません。出所不明のガイドから証明書や管理プロファイルのインストールを求められた場合は、いったん中止して用途を確認してください。
VPNアイコンだけで判断せず、3つの項目で接続を確認する
- モードとプロキシグループを確認する:初回の確認ではルールモードを使い、実際にルールから参照されている手動選択グループでノードを選びます。グループで
DIRECTを選んでいる場合、該当する通信は直接接続されます。 - トンネルの状態を確認する:クライアントに接続中と表示されているか確認します。iOS 18では「設定」→「一般」→「VPNとデバイス管理」→「VPN」から状態を確認することもできます。メニュー名はシステムのバージョンによって異なります。
- 実際の通信を確認する:現在のルールでプロキシ経由になるはずのウェブサイトを開き、クライアントの接続履歴やログで宛先ドメイン、適用されたルール、出力先ノードを確認します。出口IPの確認も参考にしつつ、ステータスバーのアイコンだけで結論を出さないでください。
ルールによっては、IPアドレス確認サイトへの通信が直接接続に振り分けられます。そのため、「確認結果が変わらない」からといって、必ずしも接続に失敗しているとは限りません。原因を切り分けるには、アプリに全般プロキシモードがある場合に一時的に使い、全般用のポリシーで目的のノードが選択されていることを確認します。テスト後は元のルールモードに戻してください。DNS、ノード、ルールを同時に変更すると、どの変更が影響したのか判断しにくくなります。
デスクトップクライアントの「TUNモード」とiOSのシステムトンネルは、どちらもアプリの通信を処理できますが、設定項目やシステム上の制約は同じではありません。デスクトップ用設定にtunフィールドがあるからといって、iOSアプリがまったく同じ方法で処理すると考えないでください。
読み込み失敗・接続タイムアウト・更新エラーの確認手順
| 症状 | まず確認すること | 次に行うこと |
|---|---|---|
| サブスクリプションがHTTP 401または403を返す | URLのトークンが失効していないか、サービス側でアクセス制限がかかっていないか | サービス提供元のページでURLを再取得し、アカウントの状態を確認する |
| サブスクリプションがHTTP 404を返す | URLのパスが欠けていないか、コピー時に途中で切れていないか | URL全体をコピーし直し、クエリパラメーターを手動で削除・変更しない |
| ダウンロードは成功するが解析に失敗する | ログインページやノード一覧が返されていないか、YAMLのフィールドが非対応ではないか | そのクライアント専用のサブスクリプション形式に切り替える |
| 設定の読み込みはできたが接続できない | 設定が選択されているか、プロキシグループで有効なノードを選んでいるか | まずノードを手動で選択し、接続時のエラーを確認する |
| VPNは接続中だがウェブページがタイムアウトする | ノードの稼働状況、DNS、ルール、他のVPNとの競合 | 他のネットワークトンネルを無効にし、Wi-Fiとモバイル通信でそれぞれテストする |
| 更新後にルールが元に戻る | リモート設定を直接編集していないか | クライアントが対応するローカルオーバーライド機能で変更を保存する |
変更する条件を一つに絞って再テストする
まず接続を切り、通常のネットワークからサービス提供元のページにアクセスできることを確認してから、サブスクリプションを更新します。次にノードを一つ選んで接続し、エラーが起きた時刻とクライアントに表示されたエラーの種類を記録します。Wi-Fiでは失敗してモバイル通信では成功する場合は、現在のルーター、DNS、LANの制限を優先して調べます。どちらのネットワークでも失敗する場合は、ノードの状態と設定の互換性を確認してください。
iOSでは、別のVPN、オンデマンド接続ルール、ネットワークフィルタリング拡張がテストに影響することがあります。切り分けの際は、他のVPNをいったん切断し、自動で再接続されないかも確認してください。再起動後にクライアントが再び自動で通信を処理する場合は、サブスクリプションを何度も削除するのではなく、クライアント内の「オンデマンド接続」設定と、システムのVPN構成にあるスイッチを確認しましょう。
遅延テストで数値が表示されても、その時点でテスト先に到達できたことしか分かりません。すべてのウェブサイト、動画配信サービス、UDPアプリが使えるとは限りません。初回接続で最低限確認したいのは、設定を更新できること、意図したポリシーが選択されていること、プロキシ経由にしたい通信がログに記録されていること、目的のサービスに正常にアクセスできることです。プロトコルやルールのフィールドを確認するには、サイト内のYAMLマニュアルも参照できますが、最終的には使用中のiOSクライアントの対応範囲に従ってください。