まず確認:iOSにインストールするのはデスクトップ版Clashではなく互換クライアント
Windows、macOS、Androidで使われるClash、Clash Meta、mihomoの設定やインストーラーを、iPhoneへそのままコピーして実行することはできません。iOSアプリはAppleが認める配布方法でインストールし、Network Extensionが提供するPacket Tunnel機能で通信を処理します。実際には、Clash設定、プロキシサブスクリプション、または対応プロトコルを読み込めるクライアントをApp Storeから入手します。
重要なのは、アプリ名に「Clash」が含まれているかではなく、使用する設定形式を解析できるかどうかです。一部のiOSクライアントは完全なClash YAMLに対応し、`proxy-groups`、`rules`、`rule-providers`などのフィールドを認識します。一方、プロバイダーが変換した専用サブスクリプションだけを受け付けるクライアントもあります。Shadowsocks、Trojan、VMessなどの単一ノードプロトコルには対応していても、Clash設定ファイルを直接インポートできない場合もあります。
クライアントの適合性を3つの条件で確認する
- 設定の互換性:製品説明にClash YAML、Clash Meta設定、またはサブスクリプション提供元が指定するiOS形式への対応が明記されている。
- プロトコルの互換性:設定で使われているプロトコルがクライアントの対応一覧に含まれている。同じプロトコル名でも、トランスポート層、TLS、Reality、プラグインパラメーターなどの拡張機能を確認する必要があります。
- ルールの互換性:通信を振り分ける場合は、ルールセット、ポリシーグループ、DNS設定に対応しているか確認する。単一ノード接続だけに対応するアプリでは、複雑なルールを完全には再現できません。
mihomoはClash Metaプロジェクトの後継で使われているカーネル名です。設定にmihomo独自の拡張フィールドが含まれている場合、通常のClash互換がそのまま完全互換を意味するわけではありません。新しいプロキシパラメーター、ルール形式、DNS動作などは、特定のカーネルでしか認識できないことがあります。インポート後に「不明なフィールド」や「設定の解析に失敗しました」と表示されたら、サブスクリプションが無効だと決めつけず、エラーが示す行番号とフィールドを先に確認してください。
App Storeからクライアントを入手する:地域と購入履歴を先に確認
App Storeの検索結果は、iPhoneの現在地だけでなくApple Accountに設定された国や地域によって決まります。ある地域では表示されるアプリが、別の地域では検索できないことがあります。過去に購入したアプリは、購入履歴から再ダウンロードできる場合もあります。アカウントから何度もサインアウトしたり地域を変更したりする前に、次の順番で確認しましょう。
方法1:直接検索してデベロッパ情報を確認する
- 「App Store」を開き、右下の「検索」をタップします。
- クライアントの正式名称を入力し、「Clash」だけのような広すぎるキーワードで検索しないでください。
- アプリの詳細ページを開き、デベロッパ名、アイコン、最終更新日、システム要件、公式サイトを確認します。
- 「互換性」欄を確認し、現在のiOSバージョンが要件を満たしているか確認します。たとえばアプリがiOS 16.0以降を要求し、端末がiOS 15.8のままなら、現在のバージョンはインストールできません。
- 価格ボタンまたはダウンロードボタンをタップし、Face ID、Touch ID、またはApple Accountのパスワードで承認します。
同じ名前や似た名前だからといって、同じアプリとは限りません。デベロッパ名、App Storeの詳細ページ、サブスクリプション提供元のドキュメントを照合してください。App Storeのリンクが案内されている場合は、アイコンだけで選ばず、リンクを開いて確認するのが確実です。
方法2:購入履歴から再ダウンロードする
以前に同じApple Accountでアプリを入手していた場合は、「App Store」→右上のアカウントアイコン→「アプリ」または「購入済み」からアプリ名を検索できます。ファミリー共有を利用している場合は、「自分が購入した項目」と家族の購入項目を区別してください。アプリが現在の地域のストアから削除されていると、購入履歴からもダウンロードできない場合があります。これはApp Storeの現在の提供状況によります。
地域が一致しない場合はアカウントの制限を確認する
Apple Accountの地域設定は通常、「設定」→上部のApple Account→「メディアと購入」→「アカウントを表示」→「国または地域」にあります。地域を変更する前に、Appleは通常、アカウント残高、有効なサブスクリプション、レンタル、予約注文、ファミリー共有の状態を整理するよう求めます。また、変更先の地域で有効な支払い方法や請求先情報が必要になる場合があります。
アプリページに「このAppは、お住まいの国または地域では現在利用できません」と表示される場合、問題はApp Storeの地域設定にあり、ノード、DNS、システムプロキシの障害ではありません。ページは開けてもボタンに端末非対応と表示される場合は、iOSバージョンまたはハードウェアの互換性が原因です。両者では対処方法が異なります。
初回起動:「VPN構成を追加」するシステムダイアログを理解する
クライアントで初めてプロキシを起動すると、iOSに「VPN構成の追加が必要です」などのシステムメッセージが表示されます。確認後、Face ID、Touch ID、またはロック画面のパスコードによる認証を求められることがあります。この操作はNetwork ExtensionのVPN構成を作成し、選択した通信をローカルのPacket Tunnelへ送るために必要です。
認証が完了すると、ステータスバーやコントロールセンターにVPNアイコンが表示されることがあります。ここでの「VPN」はiOSがネットワークトンネルインターフェースを統一して表示しているもので、従来型の企業VPNに接続しているとは限りません。Clash系クライアントは通常、このトンネル内でルール照合、DNS処理、プロキシ転送を行います。
初回認証の正しい順番
- 正常に解析できる設定を1つインポートします。
- クライアントのホーム画面でその設定を選び、ポリシーグループから利用可能なノードを選択します。
- 「起動」「接続」またはクライアントに応じたスイッチをタップします。
- VPN構成の追加を求めるシステムダイアログが表示されたら、「許可」をタップします。
- Face ID、Touch ID、または端末のパスコードで認証します。
- クライアントに戻り、状態が「停止」から「接続済み」に変わったことを確認します。
最初に「許可しない」をタップした場合は、クライアントの起動スイッチをもう一度タップすると認証を再度開始できます。それでも表示されない場合は、「設定」→「一般」→「VPNとデバイス管理」→「VPN」を開き、そのクライアントの構成が存在するか確認してください。iOSのバージョンによって表示は多少異なりますが、通常は「VPNとデバイス管理」内にあります。
古いVPN構成が競合することがある
iOSでは通常、同時にアクティブにできる個人用VPNトンネルは1つだけです。企業管理端末のオンデマンドVPN、他のプロキシクライアント、広告ブロックアプリ、組織の管理構成がNetwork Extensionを取り合うことがあります。接続スイッチをオンにした直後に自動でオフになったり、別アプリのVPNが同時に切断されたりするのが典型的な症状です。
- 「設定」→「VPN」を開き、実際にどの構成が接続されているか確認します。
- 他のネットワークフィルタリングアプリやVPNアプリを一時的に停止し、対象クライアントだけでテストします。
- 古い構成を使っていない場合は、該当VPNの詳細画面から削除できます。ただし、組織が要求する管理構成は削除しないでください。
- 監視対象端末で設定が組織によって管理されていると表示される場合は、管理者に制限を確認してください。個人用アプリでシステムポリシーを回避することはできません。
方法1:サブスクリプションURLで設定をインポートする
サブスクリプションURLは、ノードやルールを定期的に更新したい場合に適しています。通常は`https://`で始まるアドレスで、クライアントがリモートの内容を取得してローカル設定として保存します。URLにはアカウント識別情報が含まれることがあるため、アカウント認証情報として扱い、チャットグループ、スクリーンショット、公開ページに掲載しないでください。
標準的なインポート手順
- サブスクリプション提供元の管理画面で、iOSまたはClash互換のサブスクリプションURLをコピーします。
- クライアントを開き、「設定」「Profiles」など、同様の名前のページに移動します。
- 右上の「+」をタップし、「URLからダウンロード」「Download from URL」または「サブスクリプション」を選択します。
- URL欄に完全なアドレスを貼り付けます。名前には「日常用設定」など、識別しやすい文字列を入力できます。
- 「ダウンロード」「保存」または「完了」をタップし、解析結果を待ちます。
- 設定一覧に戻り、インポートした設定をタップして、現在有効な設定にします。
クライアントによってメニュー名は異なりますが、データの流れは同じです:サブスクリプションURL → リモート内容をダウンロード → 設定を解析 → ローカルに保存 → アクティブな設定に指定。リンクをSafariに貼り付けるだけでは自動的にインポートされません。サブスクリプション提供元がクライアント専用の起動リンクを設定している場合を除きます。
更新間隔の設定方法
ノードの変化が頻繁なら、自動更新を12時間または24時間に設定できます。更新頻度が高すぎるとリクエスト数が増え、サーバー側のレート制限にかかる可能性があります。ノード名、通信量、期限が変わらない場合は、まず設定詳細画面から手動更新し、最終更新日時とエラーメッセージを確認してください。
| インポート結果 | 問題のある層 | 次の手順 |
|---|---|---|
| 401または403が表示される | サブスクリプション認証 | サブスクリプションURLをコピーし直し、アカウント状態とURLがリセットされていないか確認する |
| タイムアウトが表示される | ダウンロード経路 | Wi-Fiとモバイル通信を切り替え、Safariでサブスクリプションのドメインにアクセスできるか確認する |
| YAMLの解析失敗が表示される | 設定形式 | エラー行番号を確認し、クライアントが該当フィールドに対応しているか確認する |
| インポートは成功したがノードがない | サブスクリプション内容 | ウェブページ、ログインページ、空の設定をインポートしていないか確認する |
| 更新後も古いノードが表示される | ローカルキャッシュ | もう一度アクティブな設定に指定し、必要に応じてクライアントを終了して再起動する |
方法2:「ファイル」からYAML設定をインポートする
ローカルファイルは、オフライン保存、ルールの手動調整、一度だけ受け取った設定に適しています。拡張子は通常`.yaml`または`.yml`で、文字コードはUTF-8にします。iOSの「ファイル」アプリから、iCloud Drive、ダウンロードフォルダ、または端末内のフォルダにあるファイルを互換クライアントへ渡せます。
「ファイル」アプリの共有からインポートする
- 設定ファイルを「ファイル」アプリの「ダウンロード」または「このiPhone内」に保存します。
- YAMLファイルを長押しし、「共有」をタップします。
- 共有シートで対象クライアントを選択します。表示されない場合は「その他」をタップして探します。
- クライアントが開いたらインポートを確認し、設定に識別しやすい名前を付けます。
- 設定一覧を開き、そのファイルを選択して接続を開始します。
別の方法として、クライアントの設定画面で「+」をタップし、「ファイルからインポート」または「Import File」を選び、システムのファイル選択画面からYAMLを指定することもできます。どちらの方法でも、最終的にファイルはクライアントのサンドボックスへコピーされます。その後「ファイル」アプリ内の元ファイルを編集しても、通常はクライアントへ自動同期されないため、再インポートが必要です。
インポート前に確認する最小構成
典型的なClash設定には、プロキシ、ポリシーグループ、ルールが含まれます。以下は構造の関係だけを示したもので、利用可能なノードは含みません。実際のフィールドはサブスクリプション提供元が生成し、クライアントの対応範囲と一致している必要があります。
mixed-port: 7890
mode: rule
log-level: info
proxies:
- name: Example-Node
type: ss
server: 192.0.2.10
port: 443
cipher: aes-128-gcm
password: example-password
proxy-groups:
- name: PROXY
type: select
proxies:
- Example-Node
- DIRECT
rules:
- DOMAIN-SUFFIX,example.com,PROXY
- MATCH,DIRECT
`mixed-port: 7890`は、デスクトップ版Clash設定でよく使われる混合プロキシの待受ポートです。iOSクライアントは主にシステムのPacket Tunnelで通信を処理するため、このポートをユーザーに表示したり使用したりするとは限りません。クライアントがポートフィールドを無視しても、必ずしも障害ではありません。クライアントの設定ドキュメントと実行ログを基準に判断してください。
YAMLはインデントに敏感です。通常はスペースを使い、Tabを混在させないでください。コロンの後のスペース不足、リストのインデントずれ、コピー時の引用符置換などで解析に失敗することがあります。18行目を示すエラーでも、実際の原因は17行目で閉じられていない引用符や誤ったインデントにある場合があります。
ファイルはインポートできるのにルールが想定どおり動作しない
まず、クライアントの現在のモードが「ルール」であり、「グローバル」や「直接接続」ではないことを確認します。ルールモードでは`rules`を上から順に照合し、最初に一致した時点で停止します。グローバルモードでは通常、処理対象の通信を1つのポリシーに渡し、直接接続モードではプロキシを経由しません。メニューにはRule、Global、Directと表示されることがあります。
設定がリモートの`rule-providers`や`proxy-providers`を参照している場合、ローカルYAMLは入口にすぎません。初回実行時にはルールセットやノードプロバイダーをネットワーク経由で取得する必要があります。プロバイダーのURLが無効でも、メインファイルの解析だけは成功し、関連するポリシーグループが空になることがあります。その場合は、メイン設定だけでなくプロバイダーの更新日時とダウンロードエラーを確認してください。
インポート後にノード、ポリシーグループ、接続をテストする
インポート成功は、クライアントが構文を受け入れたことを示すだけで、ノードが利用可能とは限りません。次の順番でテストします:「設定 → ポリシーグループ → ノード → トンネル → 実際のリクエスト」。ポリシーグループの選択を省くと、iOSの初期設定後に「接続済みなのにウェブページが開けない」状態になることがあります。
手順1:アクティブな設定を選択する
設定一覧で対象設定に選択済みのマークが付いていることを確認します。複数の設定がある場合、1つを編集しても現在のアクティブ設定は自動で切り替わりません。設定名と最終更新日時を控えておくと、古いファイルを誤って使うのを防げます。
手順2:ポリシーグループを確認する
「プロキシ」「ポリシー」またはProxiesページを開き、設定内のメインポリシーグループを探します。例として`PROXY`、`Proxy`、「ノード選択」などがあります。ノードを1つ手動で選択してください。ポリシーグループの種類が`url-test`なら、テストURLに基づいて自動選択されることがあります。`select`なら、通常はユーザーが明示的に選択します。
手順3:遅延をテストする
遅延テストではHTTPプローブを使うことが多く、完全なダウンロード速度を示すものではありません。ノードに180 msと表示された場合、プローブの往復がおよそ0.18秒という意味です。Timeoutは、設定時間内に有効な応答を受け取れなかったことを示します。一時的な通信の揺らぎを恒常的な障害と判断しないよう、まず2回続けてテストしてください。
- 一部のノードだけタイムアウトする:同じ地域の別ノードへ切り替えます。原因は多くの場合、そのノードまたは経路にあります。
- すべてのノードがタイムアウトする:サブスクリプション、プロキシなしの直接接続、システム時刻、VPN権限を確認します。
- 遅延は正常なのにウェブページが開かない:ルールの一致、DNS、ポリシーグループ、対象サイト自体を確認します。
- Wi-Fiでは使えるがモバイル通信では使えない:「設定」→「モバイル通信」でクライアントの通信権限を確認します。
手順4:起動して通信を確認する
- クライアントの接続を停止し、Safariで直接接続するサイトを開いて、基本的なネットワークが正常か確認します。
- クライアントに戻って接続を開始し、状態が「接続済み」で安定するまで待ちます。
- クライアントのログを開き、DNS、ルール照合、接続エラーが出ていないか確認します。
- 直接接続されるはずのアドレスと、プロキシ経由になるはずのアドレスをそれぞれテストします。
- クライアントに接続履歴がある場合は、リクエストが一致したルール、ポリシーグループ、最終ノードを確認します。
iOSのよくある障害を層ごとに対処する
接続をタップするとすぐ切断される
まず「設定」→「一般」→「VPNとデバイス管理」→「VPN」で構成が存在することを確認し、他のVPNやネットワークフィルタリングアプリを停止します。VPN構成を削除して作り直してもすぐ切断される場合は、クライアントのログで設定初期化失敗、メモリ制限、Network Extensionの起動失敗などがないか確認してください。iPhoneの再起動で拡張機能の一時的な異常状態を解消できることはありますが、誤った設定そのものは修復できません。
サブスクリプションURLはSafariで開けるのに、クライアントではインポートに失敗する
Safariで開いた内容がログインページ、エラーメッセージ、ウェブページでラップされたサブスクリプションで、元の設定データとは限りません。クライアントが返すHTTPステータスとコンテンツタイプを確認してください。サブスクリプション提供元がClash用、汎用、iOS専用の形式を分けている場合は、現在のクライアントに対応する入口をコピーします。
すべてのノードが突然同時に使えなくなった
まずサブスクリプションの有効期限と通信量を確認し、次にプロキシを停止した直接接続をテストします。その後、「設定」→「一般」→「日付と時刻」で「自動設定」をオンにします。システム時刻のずれはTLS証明書の検証に影響します。すべて正常ならサブスクリプションを手動更新してログを確認し、最初から設定をすべて削除しないでください。
起動後、一部のアプリだけ通信できない
クライアントでオンデマンド接続、LANをバイパス、IPv6、DNS関連のオプションが有効になっていないか確認します。アプリによっては特殊なネットワークインターフェースや独自DNSを使うため、Safariとは挙動が異なる場合があります。まず一時的にグローバルモードへ切り替えて比較します。グローバルモードでは使えるのにルールモードでは使えない場合、原因は通常ルールまたはポリシーグループにあります。どちらも使えない場合は、ノードとトンネルを確認します。
LAN内のデバイスにアクセスできない
Clash系クライアントは、設定に応じてプライベートアドレスを処理します。一般的なLANのアドレス範囲には`192.168.0.0/16`、`10.0.0.0/8`、`172.16.0.0/12`があります。プリンター、ルーター、NASへアクセスする場合は、これらのアドレスが直接接続に設定されていることと、クライアントに「LANをバイパス」オプションがあるかを確認します。プライベートアドレスをリモートプロキシへ送らないでください。
バックグラウンドにするとしばらくして切断される
iOSはバックグラウンドのリソースを管理しますが、正常に動作しているNetwork Extensionは、システム条件が許す限りトンネルを維持できます。頻繁に切断される場合は、低電力モード、クライアントのクラッシュ履歴、オンデマンド接続ルール、ネットワーク切り替え時の挙動を確認します。固定Wi-Fiで30分、固定モバイル通信で30分、その後Wi-Fiとモバイル通信の切り替えをそれぞれテストし、どの段階で切断されるかを特定します。
設定の更新と日常的なメンテナンス
安定して使えるようになった後は、サブスクリプションの更新、古い設定の整理、障害記録を重点的に管理します。DNS、ルール、ノードのパラメーターを毎日変更する必要はありません。問題が起きたときに直近で使えた設定を残しておくと、新しいサブスクリプションの変化か端末環境の変化かをすぐ切り分けられます。
- サブスクリプション設定は12時間または24時間ごとに更新し、失敗した場合は直前に成功した内容を保持します。
- YAMLを手動で編集する前にバックアップを作成し、名前に日付を付けます。例:「ルール調整-2026-07-29」。
- 現在使用中の設定と、直近で利用できた設定だけを残し、同名設定が増えて判断を誤らないようにします。
- クライアントを更新した後は、まず元の設定をテストします。アプリ、サブスクリプション、システム設定を同時に更新しないでください。
- 障害を報告する際は、iOSバージョン、クライアントバージョン、発生時刻、ネットワーク種別、ログのエラーを記録し、サブスクリプションURLやノードの認証情報は公開しないでください。
切り分けの順番は、App Storeでの提供状況 → クライアントと設定の互換性 → VPNのシステム認証 → サブスクリプションまたはファイルの解析 → ポリシーグループの選択 → ノードの接続性 → ルールとDNS、で固定できます。一度に1つの層だけを変更すると、テスト結果を比較しやすくなります。