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