ClashのDNS漏えいを確認する方法とfake-ipによる対策設定
DNSリクエストがプロキシを迂回していないかを確認し、fake-ip、nameserver-policy、TUNによる横取りの3つを比較。すぐに使えるdns設定例も紹介します。
設定ワークスペース
クライアントは操作画面を提供し、コアは設定の解析と通信の転送を担います。各項目がどの層に作用するかを確認してから変更しましょう。一度に一つずつ設定すれば、問題が起きたときも原因を特定しやすくなります。
ルールモードでは、ドメイン、IPアドレス、ルールセットを順番に照合し、一致したルールに応じてポリシーを適用します。グローバルモードと異なり、プロキシ経由にする通信と直接接続する通信を振り分けられます。まずポリシーグループが存在することを確認し、個別ルールを前に、最後にフォールバックルールを配置してください。変更後は接続一覧で実際に適用されたルールを確認しましょう。Webページが開くかどうかだけでは判断できません。以下はルール構造の例です。PROXYは既存のポリシーグループに対応させる必要があり、これだけでは完全な設定として読み込めません。
mode: rule
rules:
- DOMAIN-SUFFIX,example.com,PROXY
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- MATCH,PROXY
ルールとポリシーの用語を見る →
システムプロキシの設定を参照しないアプリでは、TUN仮想ネットワークインターフェースを使って通信を取り込めます。システムプロキシとは別の機能であり、すべての通信がプロキシ経由になるわけではありません。最終的な経路はルールによって決まります。デスクトップではサービスモードや管理者権限が必要な場合があります。スマートフォンでは、システムからVPN接続の許可を得る必要があります。初回設定ではシステムプロキシを使える状態にしてからTUNを個別にテストし、複数の通信制御ツールを同時に動かさないようにしてください。以下はmihomoの設定例です。ネットワークスタックやルーティングの項目は、システムの対応状況にあわせて調整してください。
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
各プラットフォームの権限とルーティングの説明を見る →
サブスクリプションURLから完全な設定が返る場合もあれば、ノード一覧だけが返る場合もあります。提供元が案内する形式を確認し、クライアントの設定読み込み画面から追加してください。取得後、この設定を選択して有効化します。自動更新は内容を再取得する機能であり、現在選択中のポリシーが使えることを保証するものではありません。ノードの変更を管理するには、手作業で一つずつ登録するよりサブスクリプションが便利ですが、リモート更新でローカルの変更が上書きされる場合もあります。ルールをカスタマイズする場合は、クライアントのオーバーライドやマージ機能を優先し、元の設定を適切に保存してください。サブスクリプションURLを公開しないでください。
# ローカル設定とリモート設定を分けて記録
mode: rule
log-level: info
mixed-port: 7890
allow-lan: false
YAML・Base64・URIの違いを見る →
ドメイン名の名前解決は、接続を確立する前に行われます。ノードには接続できるのにドメイン名で開けない場合は、ノードを何度も切り替えるのではなく、まず名前解決の経路を確認してください。fake-ipは予約済みアドレスを返して、コアがドメイン名と接続を関連付けられるようにします。ただし、DNSリクエストが実際にコアへ届く必要があります。システムDNSを直接変更する方法と比べると、クライアントによる通信の取り込み、TUNによる横取り、ルール設定の連携が重要です。以下は有効化項目とアドレス範囲の例であり、完全なDNS漏えい対策ではありません。変更前に設定をバックアップし、変更後は名前解決の結果と実際の接続先をそれぞれ確認してください。
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
DNSの確認方法と設定手順を見る →
同じサブスクリプションを複数の互換クライアントで使えますが、ポート、サービス権限、ネットワークインターフェース、ファイルパスは端末ごとの設定であることが一般的です。ノードとルールを再利用し、通信の取り込み方法は端末ごとに設定するのが安全です。設定ディレクトリを丸ごとコピーするより、異なるOS間のパスの誤りやポート競合を避けやすくなります。オーバーライド、ルールセット、コアの設定項目への対応状況はクライアントによって異なる場合があります。移行前に読み込み時の案内を確認し、移行先で使えるバックアップを残してください。設定を同期しても接続状態が自動的に同期されるわけではなく、すべての機能や画面が同じになるとは限りません。
# 端末ごとに確認するローカル設定
mixed-port: 7890
allow-lan: false
external-controller: 127.0.0.1:9090
クライアントとプラットフォームの対応状況を見る →
システムプロキシは、システム設定に従うアプリがクライアントへ接続する経路を決めます。ルールモードは、コアに届いた通信をどのポリシーに振り分けるかを決めます。TUNは、通信を取り込むための別の入口です。この3つは同じ層の機能ではありません。ルールモードを有効にしても、すべてのアプリが自動的にプロキシへ接続するわけではありません。TUNを有効にしても、設定内のDIRECTルールが無効になるわけではありません。問題が起きたときは「通信を取り込めているか」「どのルールに一致したか」「ポリシーの接続先はどこか」の順に確認すると、複数の設定を同時に切り替えるより効率的です。
トップページの画面は設定項目の例であり、端末が接続済みであることを示すものではありません。実際の画面名はクライアントによって異なり、混合ポートも現在有効な設定を確認してください。詳しい導入手順は使い方ガイドを参照してください。サービス権限、ルーティングの競合、システムネットワークの復旧については、プラットフォーム別の詳細ドキュメントをご覧ください。
プラットフォーム別ガイド
まずOSとプロセッサのアーキテクチャを確認してから、クライアントを選びましょう。ダウンロードページでは、プラットフォーム別に入手先、対応条件、メンテナンス状況を案内しています。ここから各端末に合ったページへ移動できます。
まずClash Plusを試す方法のほか、Clash Verge RevやFlClashなど、使い慣れたクライアントを比較する方法もあります。一般的なブラウザー接続なら、まずシステムプロキシをテストしてください。TUNを使う場合は、サービスのインストールと権限を確認します。インストール後にポートが使用中なら、古いクライアントを終了してください。複数のアプリに同時にシステムプロキシを変更させないようにしましょう。メンテナンスが終了したクライアントは移行時の参考にとどめ、継続利用には現在もメンテナンスされているプロジェクトを検討してください。
Apple Silicon搭載機とIntel搭載機では、それぞれに合ったインストーラーを選びます。初回起動時にシステムのセキュリティ警告が表示されたら、まず配布元を確認し、システム設定から許可してください。特定のアプリを動かすために、セキュリティ保護全体を無効にすることは推奨しません。プロキシを有効にしたら、ネットワーク設定で実際のプロキシアドレスを確認できます。クライアントを乗り換える場合は、古いアプリを終了する前に通信の取り込み機能を無効にし、設定が残って判断を妨げないようにしてください。
初回接続時はシステムのVPN接続を許可し、その後、バッテリー最適化とバックグラウンド実行の制限を確認してください。別のアプリに切り替えると接続が切れる場合は、サブスクリプションを読み込み直す前に、システムによるアプリの終了を確認しましょう。アプリごとのプロキシ設定で通信の取り込み範囲を絞れますが、対象に含めるか除外するかの動作はクライアントによって異なります。選択前に説明を確認してください。多くの場合、別のVPNアプリも同じ接続機能を使用します。
ダウンロードページにはClash PlusのApp Storeへのリンクと、プロジェクトを確認するための公式サイトclashplus.ioを掲載しています。設定を読み込んだら、システムの案内に従ってVPN構成を追加し、クライアントに戻って現在の設定とポリシーを確認してください。システムのVPNアイコンはトンネルが接続中であることを示すだけで、すべてのドメインがプロキシ経由になるとは限りません。ルールと接続情報もあわせて確認してください。
デスクトップ環境では、Clash Verge RevやFlClashから始め、ディストリビューションに合ったパッケージを選ぶのが一般的です。サーバーやルーターではmihomoコアを利用できますが、起動オプション、設定ディレクトリ、サービス権限は自分で管理する必要があります。リモート端末でルーティングを変更する前に、管理用の接続とロールバック手段を確保してください。GUIのスイッチがサーバー上のサービス設定に自動で反映されるわけではありません。
初期設定
初回利用は3つの段階に分けて進めます。まず確認可能な接続を確立し、自動選択、複雑なルール、複数端末の設定はその後に行いましょう。インストールの問題とルールの問題を混同せずに済みます。
設定またはサブスクリプションの画面でURLを追加し、取得完了後にその設定を選んで現在の設定として有効化します。まずノードとポリシーグループがあるか確認し、次に読み込み時のエラーを確認してください。取得に失敗した場合は、URLの期限切れ、ネットワーク接続の失敗、形式の非互換を切り分けます。何度も更新を押しても、設定の構文エラーは解消できません。
初回はルールモードを選択し、プロキシを使うポリシーグループで利用可能なノードを指定します。デスクトップではシステムプロキシを有効にし、スマートフォンではVPN接続を許可してください。対象のアプリがシステムプロキシに従わない場合に限り、ガイドに沿ってTUNをテストします。LANアクセスの制限は初期設定のままにし、接続を簡単にするためにコントローラーの接続先を安易に公開しないでください。
アクセスしたいページを開きながら、接続一覧でドメイン、ルール、ポリシーの経路を確認します。ページが一つ開けても、すべてのアプリの通信を取り込めているとは限りません。ノードのテストに成功しても、DNSが正常とは限りません。次に直接接続されるはずの宛先も試し、振り分けが想定どおりか確認してから、ほかの機能を少しずつ有効にしてください。
使用中のクライアント、OS、通信の取り込み方法、ログに記録された最初のエラーを控えます。複雑なオーバーライドはいったん動作する状態に戻し、一つずつ原因を調べてください。クライアント終了後もインターネットに接続できない場合は、システムプロキシがローカルポートを参照したままになっていないか確認します。ドメイン名でのアクセスだけに問題がある場合は、DNSを調べてください。設定を変更する前にバックアップを作成し、問題を再現するための唯一の手掛かりを失わないようにしましょう。
使い方ガイドは初回接続の流れに沿っており、手順を追って設定するのに適しています。詳細ドキュメントはWindows、macOS、Android、iOS、Linux別に構成され、インストール権限、プラットフォームの制限、設定項目を調べるのに便利です。fake-ip、ポリシーグループ、ルールセットなどの用語がわからない場合は、用語集で確認してから作業に戻ってください。
オープンソースとプロジェクトの関係
ライセンスを確認し、プロジェクトの違いを見分けてから、更新状況を確認しましょう。名前が似ているクライアントでも、同じ開発チームが保守しているとは限らず、コアや設定機能が共通とも限りません。
GPL-3.0
mihomoリポジトリに記載されているオープンソースライセンスです。各GUIクライアントと付属コンポーネントのライセンスは、それぞれのプロジェクトの説明をご確認ください。
オリジナルのClashは、ルールベースのプロキシに必要な設定と通信振り分けの基盤を提供し、その後、エコシステムにはさまざまなフォークやGUIクライアントが登場しました。元のプロジェクトがメンテナンスを終了した後も、旧称がインストーラー、ガイド、サブスクリプションの説明に残っている場合があります。選ぶ際は名称の知名度だけでなく、個々のプロジェクトのメンテナンス状況、OS対応、設定の互換性を確認してください。古いガイドに記載された項目が、現在使っているコアでも有効とは限りません。
mihomoはClash Metaプロジェクトから派生し、設定の解析、プロトコル接続、ルール照合、DNSなどのネットワーク処理を担います。GUIクライアントはその上に、サブスクリプションの読み込み、各種スイッチ、ログ、サービス管理などの機能を提供します。クライアントの画面が更新されても、コアの動作が必ず変わるとは限りません。逆に、コアに設定項目が追加されても、使いやすくするにはクライアント側の対応が必要になる場合があります。
オープンソースのリポジトリでは、ライセンス、設定例、問題の議論を確認できますが、あらゆる問題がコアに関係するわけではありません。システム権限、バックグラウンド制限、画面からの読み込み失敗は、該当する層から原因を調べてください。問題を報告する前に、秘匿情報を除いた最小限の設定で再現し、期待する動作と実際の動作を説明します。ソースコードのクローンは閲覧や開発のためのもので、インストールの完了を意味せず、すぐに使えるサブスクリプションが得られるわけでもありません。
クライアントの更新はアプリ本体を変更し、サブスクリプションの更新はリモート設定の内容を変更します。両者は互いに代用できません。アップグレード前にローカルのオーバーライドと現在使える設定をバックアップし、更新後は通信の取り込み方法、ルールの適用状況、DNSの動作を確認してください。当サイトはダウンロード先と日本語資料をまとめたもので、各上流プロジェクトを代表するものではありません。機能やリリース内容は各プロジェクトの説明をご確認ください。ダウンロード先はクライアントのダウンロードページにまとめています。
事前にGitをインストールしてください。このコマンドはリポジトリをクローンするだけで、システムプロキシは変更しません。
git clone https://github.com/MetaCubeX/mihomo.git
設定の解説
最新の3記事では、DNS、スマートフォンのバッテリー消費、コアのエコシステムを取り上げています。まず症状から原因の範囲を絞り、設定を調整してください。通信の取り込みに関わる変更は、一つずつテストし、元に戻せる方法を確保しましょう。
DNSリクエストがプロキシを迂回していないかを確認し、fake-ip、nameserver-policy、TUNによる横取りの3つを比較。すぐに使えるdns設定例も紹介します。
モバイル端末の異常なバッテリー消費は、頻繁なスリープ解除、サブスクリプションの自動更新、ログレベル、TUNスタックの選択が原因となる場合があります。順を追った確認方法と、実用的な省電力設定を紹介します。
オリジナルのClashからClash Meta、mihomoまでを時系列でたどり、コアとGUIフロントエンドの役割、ライセンス、各クライアントが基盤とするコアを整理します。