跳转至

可选:MosDNS 集成

和 SmartDNS 之间只选择一个,思路大致差不多,参考DNS配置如下:

Nikki设置

混入配置-DNS设置 如下:

dns:
  cache-algorithm: arc
  enable: true
  listen: '[::]:1053'
  ipv6: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-range6: fdfe:dcba:9876::1/64
  fake-ip-filter:
    - rule-set:Lan
    - rule-set:OpenClash_Default
    - geosite:private
    - geosite:google-cn
    - geosite:category-games
    - geosite:category-game-platforms-download
    - geosite:category-public-tracker
    - geosite:cn
  fake-ip-filter-mode: blacklist
  use-system-hosts: true
  use-hosts: true
# 这里只用这俩个nameserver,DNS分流逻辑交给Mosdns
  default-nameserver:
    - 127.0.0.1:5335
  nameserver:
    - 127.0.0.1:5335
profile:
  store-selected: true
  store-fake-ip: true

解析流程参考如下:

MosDNS 设置

MosDNS 下载地址:

https://github.com/sbwml/luci-app-mosdns/releases

这里参考这么设置,还是让 Nikki 劫持 DNS 转发到 MosDNS 解析,同时 dnsmasq 不转发到 MosDNS ,让不走代理的客户端走系统的 dnsmasq.

这样做的原因是 局域网客户端不设置其他DNS服务器(举例浏览器关闭安全DNS),通过DHCP下发ip后查询只走 Openwrt 的 dnsmasq应答 ,如果 Mosdns 设置接管了 Openwrt 全局的 dnsmasq ,而又误删除 mosdns 的依赖比如:v2dat,v2ray-geoip/geosite, 导致 Mosdns 失效,那么整个局域网的DNS解析(包括路由本机)都瘫痪了,所以设置为让 dnsmasq 不转发到 MosDNS,同时仅让Nikki劫持 DNS,OpenWrt系统设置不重定向客户端查询到dnsmasq(防止Nikki劫持需要代理客户端的DNS失败),查询也是劫持后找 MosDNS 查,使受影响的范围仅限在nikki代理的客户端,出问题能及时排查具体的部分。SmartDNS部分同理。

见下图:

unkown是 mosdns服务器 的名称(使用smartDNS则为smartDNS),这时候是被Nikki劫持代理的状态;下面的openwrt.lan就是系统的dnsmasq,这时候是绕过代理和劫持的状态。

确保 Dnsmasq 重定向忽略解析文件 未勾选:

nikki劫持v4 v6 dns:

nikki里面设置mosdns走代理(防止国外DNS直连),不走DNS劫持。

节点不支持走 ipv6 开启 远程 DNS 首选 IPv4,确保解析出来的结果是IPV4地址. 运营商DNS有污染可以开启 自定义国内DNS 使用其他提供商的DNS. 默认只获取 wan口 下发的ipv4的运营商dns, wan6 下发的 ipv6的运营商DNS 需要开启 自定义国内 DNS 手动设置追加V4和V6. 远程 DNS 服务器 使用 国外DOH服务器 ,HTTPS走443端口,防止过于明显.

高级选项可以参考这么设置,开启EDNS可以让解析结果得到距离节点附近较优的地址,EDNS 设置参考与 SmartDNS 集成小节。

模版写好了分流,DNS防止泄漏 可以不开.这里可以设置DNS去广告规则,效果等同于

1
2
3
 nameserver-policy:
   "geosite:category-ads-all": rcode://success
   "rule-set:anti-ad": rcode://success
因此mihomo 不用再写查询策略.

使用 MosDNS缓存的话需要禁用 系统DNS缓存,Nikki 负责缓存 fake-ip映射.

(可选) 这里可以使用 Cloudflare优选,建议搭配这个使用:

https://github.com/mingxiaoyu/luci-app-cloudflarespeedtest

同时在 Nikki 设置 Cloudflare 的 geoip段直连和不解析,如果 远程DNS 使用了 Cloudflare 的DOH服务器的话需要单独设置 1.1.1.1(1.0.0.1) IP-CIDR走代理,顺序参考如下 :

当有些网站套了CDN可以走优选后的地址,速度会快一些,如果自建节点也是套了CDN,解析节点域名时得到的结果也能优选,通过CDN回源链路比直连的速度快一些(这里指节点没有优化,没走CN2,GIA等优化后的线路)效果因人而异,可能有的ISP访问CDN速度延时快,有的就相对慢。可以去 itdog 测试一下,一般来说ipv6的效果是优于ipv4的CDN节点的。

在 规则列表-自定义规则列表 设置解析策略,这里对应 mihomo 的 nameserver-policy ,相当于交给 MosDNS 来完成,参考如下,需要强制走远程DNS(国外DNS)解析的域名填入到灰名单里面,防止走国内DNS得到污染结果,对应 (可选)GeoX和追加规则的一些玩法这一小节。

这里可以每天更新规则。