DNS

Mihomo 內建了一個完整的 DNS 伺服器,用來解決透明代理場景下沒有網域資訊的問題,也是 fake-ip 分流的基礎。這裡是 dns 欄位下的核心設定項目。

基礎欄位

enable必須

是否啟用內建 DNS 伺服器。絕大多數場景(尤其是用 TUN 模式)都需要開啟。

listen可選

DNS 服務監聽位址,如 0.0.0.0:1053,區域網路設備也可以把它當成普通 DNS 伺服器使用。

ipv6可選

是否解析 IPv6 結果,需要和頂層 ipv6: true 搭配才會生效。

use-hosts / use-system-hosts可選

是否使用設定檔裡的 hosts 欄位,以及是否使用系統的 hosts 檔案。

respect-rules可選

DNS 請求本身是否也遵循 rules 路由規則來選擇出站方式,配合 proxy-server-nameserver 使用。

增強模式

enhanced-modefake-ip / redir-host

fake-ip:給每個網域分配一個虛假但唯一的內網 IP,連線時再還原成真實目標;速度快、相容性好,是絕大多數場景(尤其是 TUN 模式)的推薦選擇。redir-host:直接回傳真實解析結果,相容性稍差(部分需要 SNI 分流的場景可能受影響),但對不支援 fake-ip 網段的舊用戶端更友善。

fake-ip-range198.18.0.1/16

fake-ip 使用的位址段,一般無需修改。

fake-ip-filter-mode / fake-ip-filter可選

指定哪些網域不使用 fake-ip(直接走真實解析),常用於內網網域、本機服務探索等場景,支援 網域萬用字元

config.yaml YAML
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,避免和使用者流量解析混在一起產生「雞生蛋」問題。

config.yaml YAML
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讓這條 DNS 查詢也遵循路由規則連線,等價於單獨給這條開啟 respect-rules
#h3=true強制該 DoH 伺服器使用 HTTP/3 建立連線,需要伺服器本身支援 H3
#ecs=1.1.1.1/24DoH 請求攜帶 EDNS Client Subnet,讓 CDN 按這個子網就近回傳結果
#ecs-override=true強制覆蓋請求中已有的 ECS subnet