ホーム/ブログ/DNS設定ガイド
上級者向け

Clash DNS設定ガイド:汚染の解決、リーク防止、解決の高速化

公開日 2026-04-11 · 読了時間10分 · Clash / mihomoコア利用者向け

「ルールの記述は正しいはずなのに、サイトが開かない」という問題を調査していくと、最終的に原因がDNSにあったというケースは少なくありません。ルールがどれだけ正確でも、ドメインの解決先IPそのものが間違っていれば、その後の振り分けロジックはそもそも成立しません。本記事ではDNS汚染とDNSリークがそれぞれどのような問題なのか、そしてClash側での対応方法を解説します。

01DNS汚染とは

DNS汚染とは、あるドメインのIPアドレスを問い合わせた際に、経路上の中間装置が「先回りして」誤った、あるいはブロックされたIPを返してしまい、そのドメインが実際に指しているサーバーのアドレスが得られない現象です。結果として、プロキシルールの判定自体は正しくても、取得したIPそのものが誤っているため、接続が失敗するか、意図しないページにリダイレクトされてしまいます。

解決方法:信頼できる上流DNSを使用する

config.yaml で暗号化されたDNSサーバー(DoH/DoT)を設定することで、通常のUDP DNS問い合わせに対する中間装置の干渉を回避できます:

dns:
  enable: true
  nameserver:
    - https://1.1.1.1/dns-query
    - https://8.8.8.8/dns-query

02DNSリークとは

DNSリークとは、通信自体はプロキシノードを経由しているのに、DNSの問い合わせだけはプロキシを迂回して直接ローカルのネットワーク環境で行われてしまう現象です。この場合、あなたが実際にどのドメインへアクセスしたかは通信事業者から見えてしまいます。プロキシが保護しているのはその後のデータ通信だけで、「何にアクセスしたか」という情報自体は保護されていません。

解決方法:fake-ipモードを有効にする

fake-ipモードはClashコアがDNS解析プロセス全体を引き継ぐ仕組みです。アプリがドメインを問い合わせると、Clashはまず架空のローカルIPを返し、実際に接続が発生する段になってからルールに基づいて本当の解析方法と出口を決定します。これによりDNS問い合わせ自体もClashの統一処理フローに組み込まれ、プロキシを迂回してローカルネットワークに直接漏れることがなくなります。

dns:
  enable: true
  mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "localhost.ptlogin2.qq.com"
ヒント:fake-ip-filter はfake-ipに適さないドメイン(LAN内のデバイスや、正常に動作するために実際のIPが必要な一部のサービスなど)を除外するためのものです。除外されたドメインは架空のIPを使わず通常の解析に戻ります。

03nameserver-policy:ドメインごとにDNS問い合わせを振り分ける

特定のドメインを特定のDNSサーバーで解決させたい場合(例えば中国本土向けドメインは中国本土のDNSでより速いCDNノードを得る、それ以外のドメインは海外のDNSで汚染を避ける、など)、nameserver-policy を使ってドメインルールごとに指定できます:

dns:
  enable: true
  nameserver-policy:
    "geosite:cn": ["223.5.5.5", "119.29.29.29"]
  nameserver:
    - https://1.1.1.1/dns-query

上記の例では、geosite:cn(中国本土のドメイン分類ルール)にマッチした問い合わせは中国本土のDNSで解決され、それ以外はデフォルトの nameserver リストを使用します。

04よく使うフィールド一覧

フィールド役割
enableClash内蔵のDNSサーバーが解析プロセスを引き継ぐかどうか。通常はtrueに設定します。
mode解析モード:fake-ip(推奨、リーク防止)または redir-host(互換性は高いがリーク防止効果は弱め)。
nameserverデフォルトで使用する上流DNSサーバーのリスト。DoH/DoTなど暗号化された問い合わせを推奨。
nameserver-policyドメインルールごとに専用のDNSサーバーを指定。デフォルトのnameserverより優先される。
fake-ip-filter架空のIPでの解析に適さないドメインのリスト。

05DNS設定が正しく機能しているか確認する方法

設定変更後は感覚で判断せず、いくつかの簡単な方法で実際に期待通り動作しているか確認しましょう:

  • クライアントの接続ログを見る:多くのクライアントは「ログ」や「接続」パネルで各リクエストが実際に解決されたアドレスを表示します。fake-ipを有効にしている場合、ドメインが 198.18.x.x 帯の架空アドレスに解決されていれば、fake-ipが正しく機能しています。
  • オンラインツールでDNSリークを検査する:プロキシを有効にした状態でDNSリーク検査サイトにアクセスし、表示されるDNSサーバーの所属地域が実際の居住地域や通信事業者と一致していれば、問い合わせがプロキシを経由していない、つまりリークが発生している可能性があります。fake-ipnameserver-policy の設定を再確認してください。
  • 異なる地域のドメインの解決結果を比較する:直接接続すべきサイトとプロキシ経由にすべきサイトのそれぞれにアクセスし、実際の出口ノードが想定通りかを確認します。想定と異なる場合、多くは nameserver-policy のドメイン分類ルールがそのドメインをカバーしていないことが原因なので、対応する geosite ルールを追加する必要があります。
ヒント:調査してもなお問題が解決しない場合は、まずシステムのプロキシ設定やTUNモードが正しく有効になっているかを確認してください。DNS設定は分流の一部分に過ぎず、その前段のプロキシスイッチがオンになっていなければ、後段の設定が正しくても機能しません。

多くのサブスクリプションには、そのまま使えるDNS設定が既に含まれているため、一般ユーザーがゼロから手書きする必要はありません。ただ、「ルールは正しいのに接続できない」「DNSの層でプライバシーが漏れていないか心配」といった状況に遭遇した場合、この部分の設定を見直すことで原因を特定できることが多いです。