DNS 配置
DNS 设置决定用谁解析域名,以及向应用返回真实 IP 还是 Fake IP。下面是一个使用 DoH 的配置片段;解析器地址可替换为你当前网络能访问的服务。
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-nameserver | DNS 服务自身的域名 | 使用带域名的 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 与解析模式
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 个字段
| 字段 | 类型 | iOS | macOS | tvOS | 平台说明 |
|---|---|---|---|---|---|
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.