まずiPhoneでのClashの使い方を確認する
iPhoneでは通常、デスクトップ版Clashをインストールするのではなく、App StoreからClash設定や互換性のあるサブスクリプション形式を読み込めるネットワークアプリを入手します。こうしたクライアントは、iOSのNetwork Extensionインターフェースで端末内にVPNトンネルを構築し、設定されたプロキシグループ、ドメインルール、DNS設定に従って通信を処理します。
この仕組みは、Windowsで「システムプロキシ」を有効にする方法とは異なります。iOSではユーザーが 127.0.0.1:7890 を手入力する必要も、Wi-Fiの詳細設定でHTTPプロキシを設定する必要もありません。クライアントを起動すると、システムにVPN設定の追加を申請し、許可されて初めて条件に合う通信を引き受けます。
クライアント選びで確認したい4つの機能
- サブスクリプション形式:サービス提供元のリンク形式に対応しているか、または
.yaml、.yml設定ファイルを直接読み込めるか確認します。 - ルールモード:DOMAIN、DOMAIN-SUFFIX、IP-CIDR、GEOIP、MATCHなどの順序ルールを少なくとも処理できることを確認します。
- プロキシプロトコル:サブスクリプションで実際に使われているプロトコルが、アプリの説明に記載されているか確認します。リンクを読み込めても、すべてのノードに接続できるとは限りません。
- システム要件:アプリ詳細ページの「互換性」を確認します。古い端末では、対応する最低iOSバージョンとプロセッサ要件を特に確認してください。
Clash Meta、つまりmihomoの拡張フィールドへの対応範囲は、クライアントごとに異なります。基本的なノード、プロキシグループ、一般的なルールは互換性を確保しやすい一方、rule-providers、スクリプト、特殊なDNSポリシー、拡張プロトコルを使う場合は、クライアントのドキュメントを確認してください。完全なClash YAMLを、汎用ノードサブスクリプションだけを受け付けるアプリに読み込むと、ノードは表示されても、ルールグループ、DNS、ルールセットが元のファイルどおりに動作しないことがあります。
App Storeから互換クライアントを入手する
手順1:App Storeのアカウントとシステムバージョンを確認する
- iPhoneの「設定」→「一般」→「ソフトウェアアップデート」を開き、現在のiOSバージョンを確認します。
- App Storeを開き、右上のアカウントアイコンをタップして、現在のアカウントでアプリを正常にダウンロードできることを確認します。
- アプリ詳細ページを下へスクロールして「情報」→「互換性」を確認し、開発者名、最終更新日、バージョン履歴も照合します。
- ダウンロードが完了したらホーム画面からアプリを開き、先に「設定」→「Wi-Fi」でプロキシサーバーを手動入力しないでください。
この記事ではiOS 18.6の日本語メニューを参考にしています。iOS 17.7や地域によっては、「VPNとデバイス管理」の表示やVPN入口の位置が異なる場合がありますが、操作の基本原理は同じです。App Storeで提供されるアプリはアカウントの地域によっても変わります。検索しても見つからない場合は、まず開発者公式サイトに掲載された提供地域と最低システム要件を確認してください。
手順2:読み込める設定の種類を見分ける
| 設定の入手元 | 一般的な形式 | 読み込み前の確認事項 |
|---|---|---|
| サブスクリプションURL | https:// で始まるアドレス |
URLが完全か、有効期限が切れていないか、クライアントが返却内容に対応しているか |
| Clash設定ファイル | .yaml または .yml |
プロキシグループ、ルール、DNS項目が含まれているか、ファイルのエンコードに問題がないか |
| 汎用ノードサブスクリプション | WebパネルからコピーしたサブスクリプションURL | 専用のサブスクリプション種別や形式変換が必要か |
| 単一ノード | QRコード、リンク、手入力パラメータ | プロトコル、サーバー、ポート、認証項目がそろっているか |
完全なClash設定とノード一覧は、同じ種類のデータではありません。完全な設定には通常、proxies、proxy-groups、rules、dnsが含まれます。一方、ノード一覧にはサーバー情報しかなく、プロキシグループやルールはiOSクライアントが生成する場合があります。読み込み後にノードだけが表示され、元の設定にあった「自動選択」や「フォールバック」などのグループが見当たらない場合は、入手したサブスクリプションの種類を確認してください。
サブスクリプションURLまたはClash設定ファイルを読み込む
方法1:サブスクリプションURLを貼り付ける
- サービス提供元のパネルから完全なサブスクリプションURLをコピーし、URLの前後にスペースや改行がないことを確認します。
- クライアントを開き、「設定」または「Profiles」ページに移動します。
- 右上の「+」をタップし、「URLからダウンロード」「Download from URL」など、同じ意味の項目を選びます。
- 名前欄に「日常用サブスクリプション」など識別しやすい名前を入力し、URL欄にリンクを貼り付けます。
- 自動更新間隔を設定できる場合は、まず24時間に設定するとよいでしょう。5分間隔にしてもノードが速くなるわけではなく、サブスクリプションサーバーのリクエスト制限にかかる可能性があります。
- 保存してダウンロードが完了するまで待ち、その設定をタップして現在有効な設定にします。
サブスクリプションURLには通常、アクセス用の認証情報が含まれています。アカウントのパスワードと同じように扱い、実際のURLを公開スクリーンショット、共有メモ、障害報告に載せないでください。以下のURLは構造説明用であり、接続には使えません。
https://subscription.example.com/api/client?token=demo-token-2026
貼り付け直後に「URLが無効」と表示されたら、入力欄のプロトコルが https:// のままか確認します。10秒待ってタイムアウトになる場合は、現在のネットワークからサブスクリプションサーバーにアクセスできない、DNS解決に失敗している、またはサーバーが一時的に応答していない可能性があります。エラーの種類によって確認すべき点は異なります。
方法2:「ファイル」アプリからYAMLを読み込む
- まず設定ファイルをiCloud Drive、または「このiPhone内」に保存します。
- システムの「ファイル」アプリを開き、
.yamlまたは.ymlファイルを長押しします。 - 「共有」を選び、アプリ一覧からインストール済みのプロキシクライアントを選択します。
- 共有一覧に目的のアプリが表示されない場合は、「その他」をタップし、そのアプリがファイル読み込み拡張機能を提供しているか確認します。
- クライアントの「設定」ページに戻り、ファイル名、更新日時、解析状態を確認します。
クライアント内で「ファイルから読み込む」を選び、システムのファイル選択画面を呼び出す方法もあります。AirDropで設定を受け取った場合は、まず「ファイル」に保存してから読み込むと、プレビュー画面から直接開くより安定します。
YAMLの基本構造をすばやく確認する
「解析に失敗しました」と表示されたら、まずテキストエディタでインデントとトップレベル項目を確認します。YAMLはスペースで階層を表し、Tab文字があると解析エラーになる場合があります。以下は構造を確認するための簡略例であり、完全なノード設定ではありません。
mode: rule
dns:
enable: true
enhanced-mode: fake-ip
proxy-groups:
- name: Proxy
type: select
proxies:
- DIRECT
rules:
- DOMAIN-SUFFIX,example.com,DIRECT
- MATCH,Proxy
MATCH は通常、ルールの末尾にフォールバックとして置きます。ルールは上から順に評価され、最初に一致した時点で停止します。範囲の広いMATCHやDOMAIN-SUFFIXルールを前に置くと、後続の細かなルールは適用されません。
VPN設定を許可して接続を開始する
初回起動時はシステムの許可が必要
- クライアントのホーム画面で、先ほど読み込んだ設定を選択します。
- プロキシグループページで主要なポリシーグループのノードを選ぶか、自動選択グループを使用します。
- ホーム画面に戻り、「接続」「起動」、または「VPN」スイッチをオンにします。
- 「VPN設定を追加しますか」というシステム通知が表示されたら、「許可」をタップします。
- Face ID、Touch ID、またはデバイスのパスコードで確認を完了します。
- クライアントの状態が「接続済み」になるまで待ってから、ネットワークを確認します。
一般に「VPN構成プロファイルをインストールする」と呼ばれている操作は、ここでは通常、Network Extensionが管理するVPN設定を追加することを指します。独立した構成プロファイルが表示されるとは限りません。許可後は「設定」→「一般」→「VPNとデバイス管理」→「VPN」で確認できます。「設定」画面に「VPN」項目が直接表示される場合もあります。
通常、iOSのステータスバーまたはコントロールセンターにVPNの状態が表示されます。アイコンはシステムトンネルが構築されたことを示すだけで、ノードへの接続、DNS、ルールによる振り分けが正常とは限りません。次のセクションの確認も行ってください。
ローカルネットワークと通知の許可は必要か
- VPNの許可:システムトンネルの構築に必須です。拒否するとクライアントは通信を引き受けられません。
- ローカルネットワークの許可:家庭内NAS、プリンター、LAN上の制御インターフェースにアクセスする場合に必要になることがあります。リモートプロキシだけを使う場合は必須とは限りません。
- 通知の許可:切断、サブスクリプション更新、通信量の通知に使われます。VPNの構築可否には影響しません。
- モバイルデータの許可:モバイル回線で接続する場合は、「設定」→「モバイル通信」を開き、対象アプリのスイッチがオンになっていることを確認します。
サブスクリプション、ノード、ルールの動作を確認する
まず4つの層を確認する
- 設定層:設定ページに解析エラーがなく、サブスクリプションの更新時刻が今回の操作時刻になっている。
- ノード層:プロキシグループにノードが表示され、遅延テストが継続的なタイムアウトになっていない。
- トンネル層:クライアントが「接続済み」と表示され、システム設定のVPN状態も「接続済み」になっている。
- ルール層:接続ログにドメイン、適用されたルール、最終的に使われたポリシーグループが表示される。
1回の遅延テストで分かるのは、特定のテスト先への接続時間だけです。たとえばノードAが83 ms、ノードBが126 msでも、Aのダウンロード速度が必ず速いとは限りません。モバイル回線のパケットロス、サーバー負荷、経路の迂回、接続先サイトの位置などが実際の体感に影響します。より確実なのは3回連続でテストし、その後にWebページの表示、動画再生、小さなファイルのダウンロードをそれぞれ試す方法です。
ログでルールの適用結果を確認する
多くのiOSクライアントは、「ログ」「リクエスト」「接続」ページに通信記録を保存します。テスト用のWebページを開いた後、記録に対象ドメイン、ポリシーグループ、ノード名が含まれているか確認します。主な表示は次のように読み取れます。
DIRECTと表示:そのリクエストはルールに従って直接接続され、プロキシノードを経由していません。- 特定のプロキシグループが表示:リクエストがそのグループに一致し、グループ内で選択されたノードが転送しています。
MATCHと表示:前方のドメイン、IP、ルールセットに一致せず、最終的にフォールバックルールが適用されています。- IPだけでドメインがない:DNSモード、アプリ独自の名前解決、QUIC接続が関係している可能性があります。
- リクエストがまったく記録されない:アプリが現在のトンネルを迂回しているか、VPNが実際には切断されている可能性があります。
認証エラー、読み込み失敗、切断への対処
「許可」をタップしてもVPNが確立しない
まず「設定」→「一般」→「VPNとデバイス管理」→「VPN」を開き、同じクライアントが作成した設定がすでに存在するか確認します。設定があるのに有効化できない場合は、次の順番で対処してください。
- クライアントを完全に終了し、再度開いて接続を開始します。
- ほかに動作中のVPN、企業向けセキュリティツール、DNS関連のNetwork Extensionを停止します。
- iPhoneを再起動し、古いネットワーク拡張プロセスがトンネルを占有していない状態にします。
- 設定の入手元を確認したうえで、使えなくなった古いVPN設定を削除し、クライアントから再度許可を求めます。
- 「設定」→「スクリーンタイム」→「コンテンツとプライバシーの制限」で、アカウントや設定の変更が制限されていないか確認します。
iOSでは通常、同時に有効にできる個人用VPNトンネルは1つです。別のプロキシアプリ、企業VPN、コンテンツフィルタが動作していると、新しいクライアントが「接続中」のまま繰り返し止まることがあります。会社管理の端末では、モバイルデバイス管理ポリシーによってVPNの追加が禁止されている場合もあるため、端末管理者に確認してください。
サブスクリプションは取得できたがノード数が0
- サービス提供元が返しているのは、サブスクリプション内容ではなくWebログインページかもしれません。パネルに再ログインし、対象クライアント用のURLを発行してください。
- サブスクリプションが、クライアント非対応のエンコードやプロトコルを使っている可能性があります。読み込みログにある「unsupported」「invalid type」などの項目を確認します。
- コピー時にURLが途中で切れている可能性があります。
&を含むURLを前半だけコピーすると、サーバーが空の設定を返すことがあります。 - サブスクリプションの期限切れ、または通信量の上限到達も考えられます。この場合、サーバーはHTTP上は成功を返しても、利用可能なノードを内容に含めないことがあります。
ノードテストは正常なのにWebページが開けない
この場合はノードを何度も変更するより、まずDNSとルールを確認します。同じWebページでモードを一時的に「グローバル」に切り替えてテストしてください。グローバルモードで開けるなら、ノード経路はおおむね正常で、ルールの順序やポリシーグループの選択に問題がある可能性が高いです。それでも失敗する場合は、DNS、プロトコルの互換性、現在のネットワークを確認します。
Fake-IPモードでは、クライアントがまずドメインに予約アドレスを返し、接続時に元のドメインを復元してルールを実行します。一部のLAN機器、銀行アプリ、ローカル検出に依存するサービスはFake-IPに適さない場合があるため、クライアントのドキュメントに従って関連ドメインを除外リストに追加してください。DNS機能をすべて無効にすると、システムDNSとプロキシの接続経路が一致しなくなる問題が起きやすいため、避けてください。
Wi-Fiでは使えるがモバイル回線では使えない
- 「設定」→「モバイル通信」を開き、クライアントのモバイルデータ通信が許可されていることを確認します。
- 省データモードがバックグラウンドのサブスクリプション更新に影響していないか確認します。
- VPNを切断してから機内モードを一度オンにし、5秒待ってからオフにします。
- 再接続後にログを確認し、DNSのタイムアウトとノード接続のタイムアウトを切り分けます。
- 特定のUDPプロトコルだけ失敗する場合は、サブスクリプションに含まれるTCP通信対応ノードへ切り替えて比較します。
サブスクリプション更新と普段の利用設定
自動更新間隔の設定方法
ノードの変更が少ない場合、12時間または24時間に1回の更新で通常は十分です。サービス提供元が一時的に経路を調整したときは、手動で更新できます。自動更新に失敗しても、現在の接続が必ず切れるとは限りません。多くのクライアントは端末内の既存設定を使い続けますが、新しいノード、削除されたノード、ルール変更は反映されません。
更新後にプロキシグループの表示がおかしい場合は、現在選択中のノードがサブスクリプションから削除されていないか確認します。自動選択グループなら再測定し、手動選択グループならノードを選び直してください。設定を切り替えた後は、ルールモードがグローバルや直接接続に変更されていないことも確認します。
オンデマンド接続とバックグラウンド制限
一部のクライアントは「オンデマンド接続」に対応しており、Wi-Fi、モバイル回線、指定ドメインへのアクセス時にVPNを自動起動できます。初回設定では複雑な条件をいったん無効にし、手動接続が安定してから1項目ずつ追加するのがおすすめです。条件が多いと、Wi-Fiからモバイル回線へ切り替わる際に再接続が何度も発生し、数秒間Webページを読み込めなくなることがあります。
iOSはバックグラウンドでの実行時間を管理しますが、確立済みのNetwork Extensionは通信処理を続けられます。マルチタスク画面からクライアントを強制終了した後もVPNが動作するかは、アプリの実装とシステム状態によって異なります。ステータスバーにVPNが表示されているのに、クライアントで接続記録を開けない場合は、システムのVPNスイッチから切断し、アプリに戻って再起動してください。
新しいiPhoneへ移行する前に残しておくもの
- サブスクリプション管理ページへのログイン方法を記録し、クライアント内に保存された設定だけに頼らないようにします。
- カスタムルールは設定ファイルとして個別に書き出すか、管理下にある個人ストレージへ保存します。
- よく使うポリシーグループの選択ルールを記録します。たとえば、普段は自動選択、LANサービスではDIRECTを使うといった内容です。
- 新しい端末でクライアントを再ダウンロードしたら、VPN設定を追加し直してシステムの許可を取得します。
ここまでの手順をまとめると、iPhoneでの利用手順は、App Storeで互換クライアントを入手し、サブスクリプションまたはYAMLを読み込み、現在の設定とノードを選び、システムVPNを許可し、最後に接続記録でルールを確認する流れです。問題が起きたときは、設定、ノード、トンネル、ルールの4層を順に確認すると、アプリを何度も再インストールするより原因を特定しやすくなります。