Openwrt Nikki DNS 配置经验分享

dns 使用 fake-ip 模式,不借助其他 dns 工具(比如 mosdns 可以过滤远程 dns 的 ipv6 解析记录)的情况下能够通过非 ipv6 节点访问有 ipv6 解析记录的网址。如果使用 redir-host 路由器开启了 ipv6 而代理节点又不支持 ipv6(或者链路更差时),某些需要代理访问的域名会解析到无法访问的 ipv6 地址,经常触发重试又回落到 ipv4 体验很糟。

不要打开 dns 劫持,通过 dnsmasq 转发到 mihomo 的 dns 端口会有更好兼容性。我有遇到一个兼容性问题,我的 nas 域名在公网是解析到中转服务器的 ipv4 和家宽的 ipv6 双栈地址。而 Android 的上的 synology app 不知道是用了什么特性,只能解析到公网的 ipv6 地址,倒也不影响使用。不过如果此时开启了 nikki 的 dns 劫持功能会导致无法解析,当我使用 dnsmasq 转发时不受影响。

继续修改 dnsmasq 配置,开启 dns 重定向,并添加转发到 127.0.0.1#1053,关闭 dns 缓存,缓存由 mihomo 执行。

nikki 配置 dns 配置如下,过滤掉直连域名的 fake-ip 这一步是为了避免直连域名在很多设备中缓存了 fake-ip 解析结果,特别是有些 IoT 设备,nikki 下线时这些客户端网络无法自动恢复,比如 HomePod 的网关功能,小米中枢网关等。以及路由器上运行的 frpc 也需要解析到真实 ip 否则无法连接,另外似乎 apple 域名使用 114 dns 速度更快,所以专门指定了 114 dns。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dns_remote: &dns_remote ['tls://1.1.1.1', 'tls://8.8.8.8']
dns_local: &dns_local ['223.5.5.5', '119.29.29.29']
dns_apple: &dns_apple ['114.114.114.114', '114.114.115.115']

dns:
enable: true
listen: 0.0.0.0:1053
ipv6: true
enhanced-mode: fake-ip
nameserver: *dns_local
fake-ip-range: 198.18.0.1/16
fake-ip-filter-mode: blacklist
fake-ip-filter:
- +.lan
- +.local
- geosite:cn,geolocation-cn,onedrive,microsoft,apple,steam@cn,category-games@cn,private
- rule-set:custom-direct-domain
nameserver-policy:
"geosite:apple": *dns_apple