Skip to content

DNS 配置 ​

DNS 设置决定用谁解析域名,以及向应用返回真实 IP 还是 Fake IP。下面是一个使用 DoH 的配置片段;解析器地址可替换为你当前网络能访问的服务。

yaml
dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  default-nameserver:
    - 1.1.1.1
  nameserver:
    - https://cloudflare-dns.com/dns-query
  proxy-server-nameserver:
    - https://cloudflare-dns.com/dns-query
  fake-ip-filter:
    - '+.lan'
    - '+.local'

各类解析器的用途 ​

字段解析什么何时填写
default-nameserverDNS 服务自身的域名使用带域名的 DoH/DoT 地址时提供 IP 形式的引导解析器
nameserver普通目标域名默认解析器列表
nameserver-policy符合条件的指定域名需要内网域名或特定网站使用另一组 DNS 时
proxy-server-nameserver代理服务器的域名尤其在 DNS 需要走代理或遵循规则时,避免先有代理还是先有 DNS 的循环依赖
proxy-server-nameserver-policy指定代理服务器域名配合非空的 proxy-server-nameserver 使用
direct-nameserver直连出口的域名需要单独指定直连解析器时
direct-nameserver-follow-policy是否让直连解析器沿用策略仅在填写 direct-nameserver 时使用
fallback / fallback-filter条件筛选后的备用解析按域名或主解析结果决定是否采用备用结果,不能理解为只在超时后重试

解析器可写 1.1.1.1(UDP)、tcp://1.1.1.1、tls://1.1.1.1(DoT)、https://cloudflare-dns.com/dns-query(DoH)。非标准端口写在地址中。system 使用系统 DNS,Apple 平台的处理见页末。

特定域名、hosts 与解析模式 ​

yaml
hosts:
  printer.home.arpa: 192.168.1.20
dns:
  use-hosts: true
  nameserver-policy:
    '+.home.arpa': 192.168.1.1

将这段合并到已有配置中:hosts 是顶层字段;nameserver-policy 放进已有的 dns,不要重复创建两个 dns 段。上述内网地址需替换为自己的设备和 DNS 地址。

enhanced-mode: fake-ip 给应用返回映射地址;redir-host 使用真实解析结果。fake-ip-filter-mode: blacklist 时,过滤列表里的域名使用真实 IP;whitelist 则只有命中的域名使用 Fake IP。通常无需改动 fake-ip-range 和 fake-ip-ttl。

macOS 上的 EasyTier 虚拟网络 DNS ​

Clash Core SDK 快照 7ea70d1 新增 easytier://<节点名>,用于解析 EasyTier 虚拟网络主机名,例如在 nameserver-policy 中填写 easytier://Node。节点名必须与 EasyTier 出站一致。它提供虚拟网络 IPv4 A 记录与 IPv4 PTR 反向查询,不能作为通用公网 DNS。iOS、iPadOS 与 tvOS SDK 不包含 EasyTier 实现。详见 EasyTier DNS 与路由示例。

让 DNS 遵循路由规则 ​

在现有 dns 中加入 respect-rules: true,并保留可独立解析节点域名的 proxy-server-nameserver。规则引用的代理必须先能建立连接。不要同时随意开启 prefer-h3。

cache-algorithm 可选 lru 或 arc。ipv6: false 会影响 AAAA 应答,最终还受 App 的 IP Stack 设置约束。

平台说明与字段状态 ​

连接期间 DNS 保持开启。system / dhcp 优先使用连接前取得的系统 DNS 地址;不可用时会过滤或补齐列表,某条策略失去全部地址时可能返回名称不存在。dns.ipv6 受全局 IPv6 与 App 的 IP Stack 设置影响。

dns.listen 额外开放 TCP/UDP DNS 服务,日常配置无需设置。它不受代理入口的 authentication、allow-lan 或控制器 secret 统一保护。

31 个字段

字段类型iOSmacOStvOS平台说明
dns.cache-algorithm字符串支持支持支持设置 DNS 缓存算法或容量,请使用有效的算法名和数值。
dns.cache-max-size整数支持支持支持设置 DNS 缓存算法或容量,请使用有效的算法名和数值。
dns.default-nameserver列表受管理 / 有限制受管理 / 有限制受管理 / 有限制设置 DNS 服务器。system/dhcp 来源会使用连接前的系统 DNS 地址;无可用地址时会过滤或补齐。
dns.direct-nameserver列表受管理 / 有限制受管理 / 有限制受管理 / 有限制设置直连或回退解析器;system/dhcp 地址会替换或过滤。fallback 仅按回退条件使用。
dns.direct-nameserver-follow-policy布尔值支持支持支持控制直连 DNS 是否跟随解析策略。
dns.enable布尔值受管理 / 有限制受管理 / 有限制受管理 / 有限制Clash 连接期间保持 DNS 开启,填写 false 不会关闭。
dns.enhanced-mode字符串支持支持支持选择 DNS 增强模式;Fake IP 相关字段在使用对应模式时生效。
dns.fake-ip-filter列表支持支持支持控制哪些目标使用或跳过 Fake IP,需配合 Fake IP 模式。
dns.fake-ip-filter-mode字符串支持支持支持控制哪些目标使用或跳过 Fake IP,需配合 Fake IP 模式。
dns.fake-ip-range字符串支持支持支持设置有效的 IPv4 Fake IP 网段,也可能用作默认隧道 IPv4 地址来源。
dns.fake-ip-range6字符串受管理 / 有限制受管理 / 有限制受管理 / 有限制设置 IPv6 Fake IP 网段,还需启用有效的 IPv6 设置。
dns.fake-ip-ttl整数支持支持支持设置 Fake IP 响应的 TTL,在 Fake IP 模式下使用。
dns.fallback列表受管理 / 有限制受管理 / 有限制受管理 / 有限制设置直连或回退解析器;system/dhcp 地址会替换或过滤。fallback 仅按回退条件使用。
dns.fallback-filter.domain列表支持支持支持设置 fallback 的使用条件;GeoIP/GeoSite 条件需要相应规则资源。
dns.fallback-filter.geoip布尔值支持支持支持设置 fallback 的使用条件;GeoIP/GeoSite 条件需要相应规则资源。
dns.fallback-filter.geoip-code字符串支持支持支持设置 fallback 的使用条件;GeoIP/GeoSite 条件需要相应规则资源。
dns.fallback-filter.geosite列表支持支持支持设置 fallback 的使用条件;GeoIP/GeoSite 条件需要相应规则资源。
dns.fallback-filter.ipcidr列表支持支持支持设置 fallback 的使用条件;GeoIP/GeoSite 条件需要相应规则资源。
dns.fallback-lazy-query布尔值支持支持支持控制回退 DNS 查询的调度,与节点健康检查的 lazy 不同。
dns.ipv6布尔值受管理 / 有限制受管理 / 有限制受管理 / 有限制会受 App 的 IP Stack 设置影响;DNS IPv6 还需全局 IPv6 开启。隧道 IPv6 接管是另一项设置。
dns.ipv6-timeout整数支持支持支持控制相关 DNS 查询的 IPv6 等待时间,不是 VPN 总连接超时。
dns.listen字符串高级功能高级功能高级功能创建 TCP/UDP DNS 监听。代理 authentication、allow-lan 和控制器 secret 不为它提供统一访问保护。
dns.listen-routing-mark整数不支持不支持不支持不生效,Apple 版本不使用此路由标记。
dns.nameserver列表受管理 / 有限制受管理 / 有限制受管理 / 有限制设置 DNS 服务器。system/dhcp 来源会使用连接前的系统 DNS 地址;无可用地址时会过滤或补齐。
dns.nameserver-policy映射受管理 / 有限制受管理 / 有限制受管理 / 有限制按域名选择解析器。策略中的地址也会过滤;若全部不可用,该策略可能返回名称不存在。
dns.prefer-h3布尔值支持支持支持对支持的 DNS 连接优先使用 HTTP/3。
dns.proxy-server-nameserver列表受管理 / 有限制受管理 / 有限制受管理 / 有限制设置 DNS 服务器。system/dhcp 来源会使用连接前的系统 DNS 地址;无可用地址时会过滤或补齐。
dns.proxy-server-nameserver-policy映射受管理 / 有限制受管理 / 有限制受管理 / 有限制按域名选择解析器。策略中的地址也会过滤;若全部不可用,该策略可能返回名称不存在。
dns.respect-rules布尔值支持支持支持让相关 DNS 请求遵循分流规则;解析节点域名的 proxy-server-nameserver 不递归应用此设置。
dns.use-hosts布尔值支持支持支持DNS 查询使用顶层 hosts 中的映射。
dns.use-system-hosts布尔值支持支持支持使用 Clash 进程可读取的系统 hosts;不代表可以编辑 iOS/tvOS 的系统 hosts。

参考:mihomo.