DNS
Mihomo には完全な DNS サーバーが内蔵されており、透過プロキシ環境でドメイン情報が得られない問題を解決します。これは fake-ip によるルーティングの基盤でもあります。ここでは dns フィールド下の主要な設定項目を紹介します。
基本フィールド
enable必須内蔵 DNS サーバーを有効にするかどうか。ほとんどのケース(特に TUN モード使用時)で有効にする必要があります。
listenオプションDNS サービスのリスニングアドレス。例:0.0.0.0:1053。LAN 内の他のデバイスも通常の DNS サーバーとして利用できます。
ipv6オプションIPv6 の結果を解決するかどうか。トップレベルの ipv6: true と併用しないと有効になりません。
use-hosts / use-system-hostsオプション設定ファイルの hosts フィールド、およびシステムの hosts ファイルを使用するかどうか。
respect-rulesオプションDNS リクエスト自体も rules ルーティングルールに従って出口方式を選択するかどうか。proxy-server-nameserver と併用します。
拡張モード
enhanced-modefake-ip / redir-hostfake-ip:各ドメインに仮想だが一意の内部 IP を割り当て、接続時に本来の宛先へ復元します。速度が速く互換性も良いため、ほとんどのケース(特に TUN モード)で推奨されます。redir-host:実際の解決結果をそのまま返すため互換性はやや劣ります(一部の SNI ルーティングが必要な場面で影響が出ることがあります)が、fake-ip のアドレス帯に対応していない古いクライアントには適しています。
fake-ip-range198.18.0.1/16fake-ip が使用するアドレス範囲。通常は変更不要です。
fake-ip-filter-mode / fake-ip-filterオプションfake-ip を使用しない(実際の解決を行う)ドメインを指定します。内部ドメインやローカルサービスディスカバリなどの場面でよく使われ、ドメインワイルドカードに対応しています。
dns: enable: true ipv6: false enhanced-mode: fake-ip fake-ip-range: 198.18.0.1/16 fake-ip-filter-mode: blacklist fake-ip-filter: - '*.lan'
解決サーバー
default-nameserverオプションnameserver/fallback 内のドメイン形式のサーバーアドレスを解決するための「ブートストラップ」DNS。ここには IP のみ記述可能で、ドメインは指定できません。
nameserver必須デフォルトのドメイン解決サーバー一覧。UDP/TCP/DoT/DoH/DoQ など複数のプロトコル書式に対応。詳細はDNS タイプを参照。
nameserver-policyオプションドメイン / geosite: / rule-set: ごとに専用の解決サーバーを指定します。nameserver より優先度が高く、「国内ドメインは国内 DNS、海外ドメインは海外 DNS」といった用途によく使われます。
fallback / fallback-filterオプションfallback はバックアップの解決サーバー(通常は海外の DNS を指定)。fallback-filter はどのような場合に解決結果を「疑わしい」と判断して fallback で再問い合わせするかを決めます(例:国内 IP が返ってきたのにドメインが汚染されている疑いがある場合など)。
direct-nameserver / direct-nameserver-follow-policyオプション「直接接続ルールにヒットした」ドメイン専用の解決サーバー。direct-nameserver-follow-policy と併用して nameserver-policy に従うかどうかを決めます。
proxy-server-nameserver / proxy-server-nameserver-policyオプションプロキシサーバー自身のドメイン(例:ご利用のノードのドメイン)を解決するための専用 DNS。ユーザートラフィックの解決と混同することによる「鶏と卵」問題を回避します。
default-nameserver: - 223.5.5.5 nameserver-policy: '+.arpa': '10.0.0.1' 'rule-set:cn': - https://doh.pub/dns-query - https://dns.alidns.com/dns-query nameserver: - https://doh.pub/dns-query - https://dns.alidns.com/dns-query fallback: - tls://8.8.4.4 - tls://1.1.1.1 fallback-filter: geoip: true geoip-code: CN geosite: - gfw ipcidr: - 240.0.0.0/4 domain: - '+.google.com'
解決の優先順位全体と各フィールドの連携については、次の解決フローで解説します。
追加パラメータ
| 書式 | 説明 |
|---|---|
#proxy_name | 同名のプロキシノードを優先して DNS クエリを発行し、その名前のプロキシが見つからない場合は同名のネットワークインターフェースで接続します。例:https://1.1.1.1/dns-query#proxy1 |
#RULES | このクエリもルーティングルールに従わせます。個別に respect-rules を有効にするのと同じ効果です |
#h3=true | この DoH サーバーへの接続を HTTP/3 で強制します。サーバー側が H3 に対応している必要があります |
#ecs=1.1.1.1/24 | DoH リクエストに EDNS Client Subnet を含め、CDN がこのサブネットに応じて近い結果を返すようにします |
#ecs-override=true | リクエストに既に含まれている ECS subnet を強制的に上書きします |