前提条件:OS バージョン、Apple ID の地域、クライアントの形態
iOS 端末とデスクトップでは動作の仕組みが異なります。iOS のクライアントはシステム上に HTTP プロキシポートを開いてブラウザに渡す方式ではなく、Network Extension(ネットワーク拡張)として VPN 構成を登録し、システムが拡張機能にトラフィックを処理させます。インストール前に、OS バージョン・アカウントの地域・設定ファイルの形式の 3 点を確認しておきましょう。
システムバージョンとデバイス要件
- 多くのクライアントは iOS 15 以上を要求します。2025 年以降にリリースされたバージョンでは、要件が iOS 16 に引き上げられるのが一般的です。
- バージョン番号は「設定」→「一般」→「情報」→「iOS バージョン」で確認できます。
- iPhone と iPad は同じ App Store アプリを共有し、画面サイズに合わせて UI が変化します。iPad では分割レイアウトで表示されます。
- システムがネットワーク拡張に割り当てるメモリは限られており、通常は数十 MB 程度です。ローカルのルール項目が多すぎると拡張がシステムに終了され、接続後数秒から数分で自動的に切断される症状が出ます。数万件のルールをローカル設定に書くより、rule-provider でリモートのルールセットを取得するほうが安定します。
Apple ID の地域がアプリの検索可否を決める
- App Store で表示される範囲はアカウントの「国または地域」で決まり、中国本土のアカウントでは多くのプロキシ系クライアントが提供されていません。
- 米国や日本など、他地域の Apple ID でダウンロードする必要があります。
- 切り替えの影響はストアのみで、iCloud には及びません。「設定」→ 上部の Apple アカウント → 「メディアと購入」→「サインアウト」を選び、別地域のアカウントでサインインします。App Store 右上のプロフィール画像からサインアウトしてもかまいません。
- アプリの更新にはダウンロード時に使ったアカウントが必要です。更新のたびにパスワードを探し直さなくて済むよう、そのアカウントは残しておくことをおすすめします。
App Store だけを切り替え、iCloud は触らない
iCloud と App Store は別々のサインイン項目です。アプリのダウンロードのために iCloud からサインアウトすると、バックアップ・写真の同期・「探す」に影響します。上記の手順はストアのアカウントだけを切り替えるものです。
クライアントの形態と機能差
iOS で Clash 設定形式に対応するクライアントはすべてサードパーティ製で、違いは主に 3 点です。proxy-providers と rule-providers に対応しているか、スクリプトやオーバーライドを提供しているか、そしてサブスクリプション更新のトリガー方法です。通常のルール分流だけなら、Clash YAML を正しく解析できるクライアントであればどれでも十分です。
App Store でクライアントを入手する
Clash 設定形式に対応する iOS クライアントには Stash、Shadowrocket、Karing などがあり、いずれもサードパーティ製アプリです。名称・価格・配信地域は変更されることがあるため、ダウンロード時の App Store ページを基準にしてください。
- App Store を開いてクライアント名を検索します。どれを使うか決めていない場合は、まず「Clash」をキーワードに結果を見てみましょう。
- 開発者名、最終更新日、評価数を確認します。更新が頻繁で掲載期間が長いものは、一般に信頼性が高いです。
- 「入手」をタップし、Face ID または Apple ID のパスワードで確認します。有料アプリは価格がそのまま表示されます。
- インストール後にアプリを開き、案内に従って通知とローカルネットワークの権限を許可します。
検索に出ない、地域外のため利用できないと表示される
- まず App Store 右上のプロフィール画像で、現在のアカウントと地域を確認します。
- 「この App は現在の国または地域ではご利用いただけません」と表示されたら、該当地域のアカウントでサインインするか、その地域のギフトコードを使用します。
- 一部のクライアントは TestFlight でベータ版を配布しており、枠には限りがあります。正式版は引き続き App Store で配信されています。
初回起動後に確認する 3 点
- 「設定」→「About」でコアのバージョンを確認します。Clash Meta 系のクライアントでは mihomo とバージョン番号(v1.19.x など)が表示されます。
- サブスクリプション内の YAML を解析できるか確認します。対象は proxy-providers と rule-providers の 2 つのフィールドです。
- 「モード」に Rule・Global・Direct の 3 つがあるか確認します。後の分流のトラブルシューティングで使います。
サブスクリプションリンクと設定ファイルをインポートする
iOS クライアントのインポート方法は 3 つあります。サブスクリプション URL、クリップボードまたは QR コード、ローカルの YAML ファイルです。日常的に使うのはサブスクリプション URL で、ローカルファイルは一時的なデバッグに向いています。
サブスクリプション URL からインポートする
- クライアント下部のタブバーで「構成」を開きます。クライアントによっては「サブスクリプション」という名称です。
- 右上の「+」をタップし、「URL からインポート」を選びます。
- サブスクリプションのアドレスを貼り付けます。アドレスは https:// で始まり、通常は token または uuid パラメータが付きます。
- 識別しやすい名前を構成に付けます(例:home)。確定するとクライアントが取得を開始します。
- 取得に成功すると一覧にその構成が表示され、自動的に選択されます。項目の右側のボタンから手動で更新できます。
- 「自動更新」をオンにします。間隔は通常 24 時間で、起動のたびに確認する機能に対応したクライアントもあります。
クリップボードと QR コード
- Safari でサブスクリプションリンクを長押ししてコピーし、クライアントに戻って「クリップボードからインポート」を選びます。多くのクライアントはクリップボードの内容を自動で読み取ります。
- サブスクリプションリンクを QR コードにしてクライアントで読み取る方法は、iPad と iPhone の間で構成を移すのに向いています。
- QR コードは認証情報と同じです。スクリーンショットを外部に送らないでください。
ローカルの YAML ファイル
- .yaml ファイルを「ファイル」App に保存し、ファイルを長押し → 「共有」→ クライアントを選択します。
- クライアント内の「ファイルからインポート」から、iCloud Drive や「この iPhone 内」を選んで読み込むこともできます。
- ss:// や vmess:// のような単一ノードのリンクしかない場合は、クライアントの「ノード」ページで手動追加するか、YAML の proxies セクションにまとめてからインポートします。
- ローカルファイルはサブスクリプションの更新に追随しません。デバッグ向けなので、問題がないことを確認したらサブスクリプションに戻しましょう。
サブスクリプションファイルのうち、端末での利用に関わるフィールドはおおよそ次のとおりです。インポート後にクライアント上で 1 つずつ確認できます。
mode: rule log-level: warning dns: enable: true nameserver: - https://223.5.5.5/dns-query rules: - DOMAIN-SUFFIX,cn,DIRECT - GEOIP,CN,DIRECT - MATCH,PROXY
初回接続:VPN の許可とオンデマンド接続
構成をインポートして初めて接続をタップすると、システムの VPN 許可フローが始まります。この手順は 1 回だけです。
- クライアントのホーム画面に戻り、接続スイッチをタップします。
- 「クライアント名 が VPN 構成の追加を求めています」というダイアログで「許可」をタップし、Face ID またはパスコードで認証します。
- ステータスバーに VPN のマークが表示され、クライアント内に現在のノードと遅延が表示されます。
- 以降は「設定」→「一般」→「VPN とデバイス管理」→「VPN」でこの構成を確認でき、ここから手動でオン/オフできます。
オンデマンド接続(On-Demand)
- オンにすると、条件を満たしたときにシステムが拡張を自動で起動します。毎回手動で接続する必要はありません。
- 一般的な設定値は「常に」「Wi-Fi のみ」「モバイル通信のみ」です。名称はクライアントの画面に従ってください。普段は「Wi-Fi のみ」を選ぶか、いっそオフにするのがおすすめです。
- 「常に」を選ぶと、電波の弱い環境で再接続を繰り返し、ステータスバーの VPN アイコンが点滅することがあります。
デスクトップ版と異なる 2 つの設定
- iOS では TUN がトラフィックを引き受けます。デスクトップ版のような「システムプロキシ + 7890 ポート」の設定はここでは使えず、ポート番号を入力する必要もありません。
- 一部のクライアントには「LAN からの接続を許可」といったオプションがあります。オンにすると端末上でポートを待ち受け、同じ Wi-Fi 上の他の機器から利用できます。使わないときはオフのままにしてください。
通知とバックグラウンド更新
- 通知を許可すると、サブスクリプションの更新結果や接続状態が通知センターに表示されます。
- 「設定」→「一般」→「App のバックグラウンド更新」でクライアントをオンにしておくと、サブスクリプションの自動更新がより確実になります。VPN 拡張はシステムが管理するため、追加の常駐対策は不要です。
ルール分流が機能しているか確認する
接続できたからといって分流が正しいとは限りません。次の 5 項目を順に確認すれば、2 分で結論が出ます。
| 確認項目 | 操作場所 | 期待される結果 |
|---|---|---|
| 現在のモード | クライアントの「設定」→「モード」 | Rule(ルール)が選択されている(Global や Direct ではない) |
| 出口 IP | Safari で ipinfo.io を開く | 選択したノードの国・地域と一致する表示になる |
| 直結の判定 | Safari で myip.ipip.net を開く | 国内の通信事業者と都市が表示され、中国本土のドメインが直結されているとわかる |
| ルールのヒット | クライアントの「接続」または「ログ」ページ | 各接続にヒットしたルールと最終ポリシーが表示される |
| DNS | クライアントの DNS ログ | 中国本土のドメインは中国本土の DNS で解決され、海外のドメインはプロキシ側で解決される |
ログページの各行にはルール名と最終ポリシーが付きます。一般的な形式は次のとおりです。
[TCP] 192.168.1.7:52134 --> www.google.com:443 match DomainSuffixRule(google.com) using PROXY [TCP] 192.168.1.7:52188 --> api.weibo.cn:443 match GeoIP(CN) using DIRECT [UDP] 192.168.1.7:5353 --> 223.5.5.5:53 match Match using DIRECT
分流が機能しない 3 つのよくある原因
- モードが Global のまま:すべてのトラフィックがプロキシを通るため、中国本土のサイトも遠回りになり、アクセスが遅くなります。
- ルールセットのダウンロードに失敗している:サブスクリプションの rule-providers はネットワーク経由で取得する必要があり、失敗すると最後の MATCH だけが残り、実質グローバルプロキシになります。
- ローカルのオーバーライドが rules セクションを置き換えている:一部のクライアントは override に対応しており、オーバーライドファイルに新しい rules を書くと元のサブスクリプションのルールが無効になります。
1 つずつページを開く代わりにルール検索を使う
一部のクライアントは「ルール」ページでドメイン検索を提供しています。www.google.com を入力するとプロキシポリシーに、www.icbc.com.cn を入力すると DIRECT にヒットするはずです。1 つずつページを開くより速く、問題がルール側かノード側かの判断も容易になります。
よくある質問と対処の順序
次の 5 つのケースで、iOS で起きる接続トラブルのほとんどをカバーできます。対処は外側から順に進めます。まずサブスクリプションがダウンロードできるかを確認し、次に拡張が接続できるかを確認し、最後にルールを見ます。
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| サブスクリプションの更新に失敗する | リンクの有効期限切れ、または現在のネットワークからサブスクリプションのドメインに到達できない | リンクをコピーして Safari で開き、ダウンロードできればリンクは正常です。できない場合は、まず利用可能な別の構成に切り替えるか、モバイル通信で再試行します |
| 接続は成功するが Web ページが開けない | DNS の設定が不適切、またはノードが利用できない | 別のノードに切り替えます。DNS を DoH アドレス(例:https://223.5.5.5/dns-query)に変更します |
| 接続から数分で自動的に切断される | ネットワーク拡張のメモリ上限超過 | ローカルのルール数を減らし、リモートのルールセットに切り替えます。「常に」のオンデマンド接続をオフにします |
| バッテリーの消費が明らかに大きい | グローバルモード、または自動速度テストの頻度が高すぎる | ルールモードに戻します。自動速度テストの間隔を長くするか、オフにします |
| 特定のアプリだけネットに接続できない | そのアプリが誤ったポリシーを通っている、またはプロキシを検出している | ルールでそのドメインに DIRECT を追加するか、そのアプリでプロキシをオフにします |
遅延テストの数値の意味
クライアントの遅延テストは通常 http://www.gstatic.com/generate_204 のようなプローブ先にアクセスし、TCP ハンドシェイクの時間だけを示すもので、実際の帯域幅を表すものではありません。速度テスト自体が通信量を消費するため、モバイル通信では自動速度テストをオフにし、必要なときに手動で 1 回実行するのがおすすめです。
アンインストールするとローカル構成が消える
iOS のアプリサンドボックスはアンインストールとともに削除されるため、再インストール後はサブスクリプションリンクを再インポートする必要があります。サブスクリプションのアドレスはパスワードマネージャーや自分のメモに保存し、クライアント内だけに残さないようにしてください。
サブスクリプションリンクは認証情報
リンク内の token はノード情報と引き換えられます。スクリーンショット、転送、公開リポジトリへの投稿はいずれも漏えいにつながります。漏えいを確認したら、サーバー側でサブスクリプションのアドレスを再発行し、クライアントで再インポートしてください。