iPhoneで使うClash系クライアント:App Storeでの入手とサブスクリプション設定の読み込み

iOS対応のClash設定クライアントをApp Storeで入手し、サブスクリプションの読み込み、VPN構成の許可、初回接続の確認まで解説します。

1. インストール前の確認:アプリ、ストアの国・地域、設定形式

iPhoneではWindows用の .exe やAndroid用の .apk はインストールできず、Linux用のmihomoバイナリをiOSアプリとして実行することもできません。まずiOS版を提供するクライアントを選び、対応するサブスクリプション形式を確認してください。アプリ名にプロキシやVPNとあっても、ClashのYAML設定をすべて読み込めるとは限りません。

2. App Storeアカウント:自分のアカウントで入手する

ストアの国・地域とシステム要件を確認する

まずApp Storeでアプリの正式名称を検索してください。「お住まいの国または地域では入手できません」と表示される場合は、サブスクリプションリンクを何度も変えるのではなく、現在のストアの国・地域を確認しましょう。サブスクリプションは設定内容を決め、Apple Accountの国・地域はストアで表示されるアプリを決めます。別々の要素です。

  1. iPhoneで「設定」→画面上部の名前→「メディアと購入」→「アカウントを表示」→「国または地域」と進み、現在のアカウントの国・地域を確認します。項目名はiOSのバージョンによって多少異なる場合があります。
  2. アプリの詳細ページを開き、「互換性」で最低iOS要件、開発元、料金体系を確認します。
  3. 新しいアカウントが必要な場合は、端末のアカウント作成手順に従い、自分のメールアドレスと認証コードを受け取れる電話番号で登録して、2ファクタ認証を有効にしてください。
  4. Appleの条件を満たし、変更先の地域で有効な情報を用意できる場合に限り、国または地域を変更してください。事前にアカウント残高、サブスクリプション、ファミリー共有の制限を解消する必要があります。

他人から提供された共有アカウントを購入・レンタルしたり、サインインに使ったりしないでください。購入履歴、アプリの更新、アカウントの復旧にはアカウントの管理権限が必要です。購入用アカウントを切り替える場合は、「メディアと購入」と画面上部に表示されるiCloudアカウントを区別してください。アプリをインストールするためだけに端末全体のiCloudからサインアウトしたり、他人のデバイス管理を受け入れたりしないでください。

ダウンロード後にアプリの提供元を確認する

ストアからインストールしたら一度アプリを開き、ヘルプまたはアプリ情報で読み込み方法と対応形式を確認してください。説明に特定のノードURIのみ対応とある場合、ClashのYAML設定全体をアップロードしないでください。価格、提供地域、バージョン要件はストアの最新情報を確認してください。特定のアプリが常にダウンロードできるとは限りません。

3. サブスクリプションリンクの準備:パラメーターと認証情報を保持する

サブスクリプションリンクには、アカウント固有のトークンが含まれることがよくあります。コピーする際は、パス全体と「?」以降のクエリパラメーター、大文字・小文字をそのまま保持してください。チャットアプリによる改行、末尾の句読点、コピー時に混入した空白が原因でリクエストに失敗することがあります。リンクを公開変換サイトや公開コメント欄に貼ったり、スクリーンショットに写したりしないでください。

受け取った内容まず行うことよくある勘違い
HTTPSサブスクリプションリンクサブスクリプション用のURLであることを確認してから、リモート設定として追加するアカウントのログインページをサブスクリプションURLだと思い込む
ローカルのYAMLファイル「ファイル」アプリに保存し、クライアントのファイル読み込み機能から読み込むファイルを読み込めば、リモートから自動更新されると思い込む
単一ノードのURIノード追加またはクリップボードからの読み込み機能を使う単一ノードを、ルールやポリシーグループを含む完全な設定だと思い込む
QRコード信頼できる入手元で内容を確認してからスキャンするWebサイトへのログイン用QRコードを設定用だと思い込む

エクスポート形式を複数選べる場合は、クライアントのドキュメントで対応が明記されている形式を選んでください。提供元に「Clash」と「Clash Meta」の項目があっても、出力される内容は異なる場合があります。ファイルの拡張子を変えて形式を変換することはできません。JSONファイルの名前を .yaml に変えても、中身の構造は変わりません。

SafariでURLを開けても、ブラウザーが応答を受け取ったことを示すだけで、有効なサブスクリプションだとは限りません。ログインページ、エラーページ、認証画面でもHTTP 200が返ることがあります。応答の種類を確認するにはクライアントの読み込みログや提供元のドキュメントを参照し、公開のトラブル報告では元のトークンを漏らさないでください。

4. 設定の読み込み:更新後に使用する設定とポリシーグループを選ぶ

リモートサブスクリプションの読み込み手順

クライアントによって、メニュー名は「設定」「サブスクリプション」「Profiles」「リモートリソース」など異なります。以下では操作内容を説明し、特定のアプリのメニュー構成をすべてのiOSクライアントに当てはめません。

  1. 設定管理画面を開き、リモート設定の追加またはURLからの読み込みを選びます。
  2. サブスクリプションURLを省略せず貼り付け、たとえば「日常用設定」のように識別しやすい名前を付けます。User-Agentの設定項目がある場合は、提供元またはクライアントのドキュメントで指定された値だけを入力してください。
  3. ダウンロードまたは更新を実行します。読み込み成功がアプリに表示されるまで待ち、ノード数と更新日時を確認します。
  4. 新しく読み込んだ項目を使用中の設定に指定します。保存しただけでは、現在の設定に自動で切り替わらないアプリもあります。
  5. ポリシーグループを開き、利用可能と確認できているノードを選びます。初回の確認では手動で選択し、自動測定グループはまだ使わないでください。
  6. 動作モードを選べる場合は、まずルールモードを使います。接続後にログを確認し、どのルールが適用されたかを調べてください。

Clashの完全な設定には通常、proxies、proxy-groups、rules などの項目が含まれます。また、proxy-providers を使ってリモートのノードリソースを参照することもあります。YAMLテキストが表示されても、ローカルのノード一覧が含まれているとは限りません。外部providerに依存している場合は、参照先のリソースをダウンロードできるかも確認してください。

ローカルファイルとリモートリソースを分けて確認する

「ファイル」アプリから config.yaml を読み込む場合は、中身がプレーンテキストで、インデントにスペースが使われていることを確認してください。文書作成アプリからスマートクォートをコピーしたり、YAMLのインデントにタブを使ったりしないでください。エラーに行番号が表示された場合は、その行と一つ前の行のコロン、引用符、インデントを確認します。

デスクトップの設定にある ./rules/ などの相対パスを記述しても、該当ファイルがiPhoneのアプリ領域に存在するとは限りません。メインの設定だけを読み込むと、ルールセットのファイルが見つからない場合があります。クライアントが対応するリソースの読み込み方法を使い、変更前に元の設定を保存してください。テスト内容を唯一のリモート設定に直接上書きしないでください。

5. VPNの許可:構成の追加を許可し、不明な管理プロファイルはインストールしない

初回接続時に、iOSで「VPN構成の追加を求めています」といったシステム通知が表示されることがあります。要求元のアプリ名を確認して許可し、端末の指示に従ってパスコードを入力するか、システム認証を完了してください。この許可により、アプリがシステムのVPN構成を作成できるようになり、ネットワーク拡張機能を使うために必要となります。

  1. クライアントに戻り、接続スイッチをタップします。状態が「接続中」から「接続済み」に変わるまで待ってください。
  2. 「設定」→「一般」→「VPNとデバイス管理」→「VPN」と進み、現在の構成がインストールしたクライアントのものか確認します。
  3. 別のVPNアプリが接続中の場合は、先に手動で切断してから今回の設定をテストしてください。切り替えや自動再接続による干渉を避けられます。

iOSクライアントは通常、システムのNetwork Extensionを使ってトンネル通信を処理します。デスクトップでTUNを手動で有効にしたり、ネットワークインターフェースを変更したり、デフォルトルートを設定したりする手順とは異なります。iPhoneの通信を処理するために、デスクトップ向けガイドの仮想ネットワークインターフェースの設定を流用したり、特定のローカルポートをシステムに開放させたりしないでください。

6. 初回接続の確認:トンネル、ノード、ルール、DNSを切り分ける

ステータスバーにVPNと表示されても、トンネルが確立したことを示すだけです。すべてのWebサイトへの通信がプロキシ経由になったことや、選択したリモートノードが利用できることまでは保証されません。以下の順に確認し、一度に変更する設定は一つだけにしてください。テスト時刻、ネットワークの種類、ポリシーグループの選択、エラー内容も記録します。

  1. 基本のインターネット接続を確認:まずクライアントを切断し、Safariで普段から直接アクセスできるHTTPSページを開きます。ローカルネットワーク自体が使えない場合は、Wi-Fiのログイン認証やモバイルデータ通信の権限を確認してください。
  2. システム時刻を確認:「設定」→「一般」→「日付と時刻」と進み、時刻とタイムゾーンが正しいことを確認します。端末の時刻が大きくずれていると、TLS証明書の検証に影響することがあります。
  3. 接続後にルールを確認:プロキシ経由になる想定のサイトにアクセスし、クライアントの接続ログでドメイン、適用されたルール、ポリシーグループ、最終的に選択されたノードを確認します。ホーム画面の接続スイッチだけで判断しないでください。
  4. 出口を確認:信頼できる出口IP確認ページを補助的に使います。そのリクエストがプロキシ経由だと確認できた場合にのみ、結果をプロキシの出口の判断に使えます。ルールにより直接接続されている場合、ローカル回線の出口が表示されるのは想定どおりです。
  5. ネットワークを切り替えて再テスト:Wi-Fiとモバイルデータ通信の両方で一度ずつ試します。モバイルデータ通信だけ失敗する場合は、「設定」→「モバイル通信」で該当アプリの通信許可を確認し、携帯電話会社の回線で発生したエラーを記録してください。

ドメインにアクセスできず、ログ上ではノードとの接続が確立している場合は、DNSの問い合わせエラーとルールの適用状況を確認してください。DNSの正常性を判断するために、HTTPSサイトへIPアドレスで直接アクセスしないでください。証明書のドメイン名、SNI、サイトの仮想ホスト設定が結果に影響する場合があります。

ポートの用途も区別してください。ノード提供元がリモートポートを 443 と案内している場合は、そのノードの port 項目を確認します。デスクトップ向けガイドによく登場するローカル混合ポート 7890 は、リモートサーバーのポートではなく、iPhoneのVPN接続で共通して指定する値でもありません。

7. 読み込み・接続トラブル:症状から原因を絞り込む

症状まず確認すること次に行う操作
サブスクリプションが401または403を返すトークンの有効期限、アクセス権限、リクエストヘッダーの要件提供元のアカウントからリンクをコピーし直し、ドキュメントでUser-Agentを確認する
サブスクリプションが404を返すパスが完全か、以前のAPIエンドポイントが変更されていないか配布ページからリンクを取得し直し、URLのクエリパラメーターは自分で削除・変更しない
解析エラー、またはノードが表示されない応答がHTMLではないか、形式とプロトコルに対応しているか解析ログを確認し、エクスポート形式とproviderのダウンロード状態を確認する
ノードの速度テストは成功するのにWebページを開けない速度テストの接続先、対象ドメインのルール、DNS、最終的なポリシー実際のWebリクエストのログを確認し、一度の遅延測定だけで全体を判断しない
VPN接続後、インターネットに一切つながらない使用中の設定、選択中のノード、DNS設定、他のVPNの接続状態まずVPNを切断して通信を復旧し、最小構成に戻して一つずつテストする
更新後に設定が元に戻るリモート設定の本文を直接編集していないかアプリが対応するオーバーライド機能を使い、更新後に変更が反映されるか確認する

問題の再現に必要な最小限の情報を残す

クライアントの開発者やサブスクリプション提供元に報告する際は、iOSのバージョン、クライアントのバージョン、ネットワークの種類、発生時刻、機密情報を伏せたログを添えてください。共有する前に、サブスクリプションのトークン、ノードのパスワード、UUIDなどの認証情報を隠してください。問題の説明の代わりに設定ファイル全体を公開しないでください。

初回接続を確認できたら、必要に応じて自動更新、オンデマンド接続、自動選択ポリシーを有効にします。オンデマンド接続を使う場合は、スイッチを切った後に自動再接続されないことを確認してから、画面ロックやWi-Fi切り替えをテストしてください。機能を一つ追加するたびに再確認すると、サブスクリプションの変更、システムのネットワーク変化、ポリシーの選択のどれが原因か、後から切り分けやすくなります。

Clashをダウンロード