QiuSimons / openwrt-mos

GNU General Public License v3.0
229 stars 89 forks source link

MosDNS作为ROS上游,但是ROS的DNS缓存会出现TTL几十秒后过期,并且ROS的DNS缓存记录会出现正常域名被解析到0.0.0.0 #138

Open gebilaozhaodezhaijidi opened 1 year ago

gebilaozhaodezhaijidi commented 1 year ago

希望大佬在日理万机的生活中,挤出一点时间帮忙分析一下问题出现在哪里。

网络架构:

主路由是ROS,旁路由固件是lean大源码并且加入的此项目的源码所编译的固件,MosDNS在OpenWrt中作为国内外DNS分流并且重定向到5335,国内通过修改library.sh内上游地址为127.0.0.1:5336,5336服务是AdGuard Home,作为国内DNS请求服务器,远程DNS为默认的8.8.4.4,并且ssr插件强制代理。

问题现象:

如果ROS的DNS地址填写为OpenWrt地址,ROS的DNS缓存列表就会出现大量正常网站的TTL几十秒后过期,并且缓存记录会出现正常域名被解析到0.0.0.0,并非广告域名,有些网站第一次被正确解析,第二次或者换浏览器访问同一网站就会提示DNS错误,如果ROS设置劫持DNS请求并转发到OP或者PC机DNS直接填写OP,就不会出现上述现象。

排查过程:

排查发现,如果禁用def_config_orig.yaml内qtype65相关插件,可以解决第二次请求打不开网页的问题,但是TTL几十秒后过期及正常域名被解析到0.0.0.0,并没有的到解决

WechatIMG129

屏幕快照 2022-11-12 下午6 29 35

jcxq520 commented 1 year ago

我也遇见这个问题,中间再套个smartdns才行:ros-smartdns-mosdns就解决了0.0.0.0

daiaji commented 6 months ago

现在故障应该修复了吧,毕竟mosdns都大版本更新了。

lengfwong commented 5 months ago

现在故障应该修复了吧,毕竟mosdns都大版本更新了。

我以前这几天刚改成ROS Dns指向openwrt的MOSDNS,也出现正常网站解析0.0.0.0的现象。

daiaji commented 5 months ago

现在故障应该修复了吧,毕竟mosdns都大版本更新了。

我以前这几天刚改成ROS Dns指向openwrt的MOSDNS,也出现正常网站解析0.0.0.0的现象。

可能是DNS解析本身被干扰了,这个我真没遇到过。

lengfwong commented 5 months ago

抓了个包看了看,也发现了qtype 65的问题。 image 上网查了查,说是这种 qtype 65 HTTPS DNS查询是Apple 的IOS和Chrome浏览器会使用的加密DNS查询,Mosdns应该不支持。我用Mosdns自定义配置中这一段

- tag: query_is_reject_domain
    type: sequence
    args:
      - matches: qname $blocklist
        exec: reject 3
      - matches: qname $adlist
        exec: reject 3
      - matches:
        - qtype 12
        - qname $local_ptr
        exec: reject 3
      - matches: qtype 65
        exec: reject 3

调到查询域名sequence的前面,再看Ros 中DNS cache没有域名解析成0.0.0.0了,不知道你的管用不。