pymumu / smartdns

A local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH. 一个本地DNS服务器,获取最快的网站IP,获得最佳上网体验,支持DoH,DoT。
https://pymumu.github.io/smartdns/
GNU General Public License v3.0
8.28k stars 1.06k forks source link

有时候 CNAME 不会递归解析成 A #1814

Open moetayuko opened 2 weeks ago

moetayuko commented 2 weeks ago

问题现象
有时候 CNAME 记录的域名解析出 CNAME 就停止了,不会继续解析出 A 或 AAAA 记录

root@OpenWrt:~# ./q pan.quark.cn -v
DEBU[0000] Name: pan.quark.cn
DEBU[0000] RR types: [A AAAA NS MX TXT CNAME]
DEBU[0000] No server specified or Q_DEFAULT_SERVER set, using /etc/resolv.conf
DEBU[0000] found server [127.0.0.1] from /etc/resolv.conf
DEBU[0000] Server(s): [127.0.0.1]
DEBU[0000] Using server 127.0.0.1:53 with transport plain
DEBU[0000] Using UDP with TCP fallback: 127.0.0.1:53
pan.quark.cn. 10m CNAME default.cn.zb.wagbridge.ad.alibabacorp.com.
default.cn.zb.wagbridge.ad.alibabacorp.com. 10m CNAME default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com.
pan.quark.cn. 6m27s CNAME default.cn.zb.wagbridge.ad.alibabacorp.com.
default.cn.zb.wagbridge.ad.alibabacorp.com. 6m27s CNAME default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com.

但此时手动查询 CNAME 指向的域名是会返回 A 或 AAAA 的,并且手动直接向每个上游请求结果都能正常返回,说明不是上游的问题

root@OpenWrt:~# ./q default.cn.zb.wagbridge.ad.alibabacorp.com -v
DEBU[0000] Name: default.cn.zb.wagbridge.ad.alibabacorp.com
DEBU[0000] RR types: [A AAAA NS MX TXT CNAME]
DEBU[0000] No server specified or Q_DEFAULT_SERVER set, using /etc/resolv.conf
DEBU[0000] found server [127.0.0.1] from /etc/resolv.conf
DEBU[0000] Server(s): [127.0.0.1]
DEBU[0000] Using server 127.0.0.1:53 with transport plain
DEBU[0000] Using UDP with TCP fallback: 127.0.0.1:53
default.cn.zb.wagbridge.ad.alibabacorp.com. 10m CNAME default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com.
default.cn.zb.wagbridge.ad.alibabacorp.com. 3m18s CNAME default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com.
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m19s A 59.82.23.111
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m19s A 59.82.23.172
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m19s A 59.82.23.82
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m19s A 59.82.31.201
default.cn.zb.wagbridge.ad.alibabacorp.com. 3m19s CNAME default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com.
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m18s AAAA 2408:4001:f00::1c8
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m18s AAAA 2408:4001:f00::1fd
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m18s AAAA 2408:4001:f00::20d
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m18s AAAA 2408:4001:f00::21
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m18s AAAA 2408:4001:f00::2ce
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m18s AAAA 2408:4001:f00::39f
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m18s AAAA 2408:4001:f00::b1
default.cn.zb.wagbridge.ad.alibabacorp.com.gds.alibabadns.com. 3m18s AAAA 2408:4001:f00::dc

发生这种情况时,删除缓存并重启 smartdns 大概率会好一段时间,然后就又出现同样的现象

运行环境

  1. 固件型号 openwrt x86_64

  2. 运营商 电信

  3. smartdns来源以及版本 https://github.com/PikuZheng/smartdns/releases/ v46.0.7

  4. 涉及的配置(注意去除个人相关信息)

    server-name smartdns
    prefetch-domain yes
    serve-expired yes
    dnsmasq-lease-file /tmp/dhcp.leases
    rr-ttl-min 600
    log-size 64K
    log-num 1
    log-level debug
    audit-size 64K
    audit-num 1
    cache-persist yes
    cache-file /etc/smartdns/smartdns.cache
    force-qtype-SOA  65
    resolv-file /tmp/resolv.conf.d/resolv.conf.auto
    bind [::]:53
    bind-tcp [::]:53
    server 运营商dns  -group local -exclude-default-group -bootstrap-dns
    server-tls dns.tuna.tsinghua.edu.cn  -subnet 61.185.152.0/18
    server-https https://doh.apad.pro/dns-query  -subnet 61.185.152.0/18
    server-tls dot.pub  -group local -exclude-default-group -subnet 61.185.152.0/18
    server-tls dns.alidns.com  -group local -exclude-default-group -subnet 61.185.152.0/18
    server-tls dot.360.cn  -group local -exclude-default-group -subnet 61.185.152.0/18
    domain-set -name domain-block-list -file /etc/smartdns/domain-block.list
    domain-rules /domain-set:domain-block-list/ -address #
    conf-file /etc/smartdns/address.conf
    conf-file /etc/smartdns/blacklist-ip.conf
    conf-file /etc/smartdns/custom.conf
    root@OpenWrt:~# cat /tmp/etc/smartdns/passwall.conf
    proxy-server socks5://127.0.0.1:1070 -name passwall-proxy-server
    server tls://1.1.1.1 -group passwall_proxy -proxy passwall-proxy-server -exclude-default-group
    domain-set -name passwall-gfwlist -file /tmp/etc/passwall_tmp/smartdns_default_gfwlist.list
    domain-rules /domain-set:passwall-gfwlist/ -nameserver passwall_proxy -speed-check-mode none -no-serve-expired -nftset #4:inet#fw4#passwall_gfwlist,#6:inet#fw4#passwall_gfwlist6
    domain-set -name passwall-chnlist -file /tmp/etc/passwall_tmp/smartdns_default_chnlist.list
    domain-rules /domain-set:passwall-chnlist/ -nameserver local -nftset #4:inet#fw4#passwall_chnroute,#6:inet#fw4#passwall_chnroute6
    domain-rules /doh.360.cn/  -n local -nftset #4:inet#fw4#passwall_whitelist,#6:inet#fw4#passwall_whitelist6
    domain-rules /clinicalkey.com/  -n local -nftset #4:inet#fw4#passwall_whitelist,#6:inet#fw4#passwall_whitelist6
    domain-rules ...

重现步骤

  1. 上游DNS配置。

  2. 访问的域名。
    pan.quark.cn

信息收集
smartdns.log

PikuZheng commented 2 weeks ago

重复 #1743 #1648

moetayuko commented 2 weeks ago

重复 #1743 #1648

这两个 issue 我都看到过。我是把 smartdns 作为主 dns 的,直接监听 53 端口,这种情况也会触发他们所描述的问题吗

pymumu commented 2 weeks ago

看了下log,查询NS的时候,101.6.6.6返回FORMERR了。可能是NS不支持Subnet。

看来了RFC,没有明确ecs是否支持NS。 google有一篇文档看是应该所有类型都可以支持ECS的。

你可以去掉subnet测下看看。

moetayuko commented 1 week ago

看了下log,查询NS的时候,101.6.6.6返回FORMERR了。可能是NS不支持Subnet。

看来了RFC,没有明确ecs是否支持NS。 google有一篇文档看是应该所有类型都可以支持ECS的。

你可以去掉subnet测下看看。

我早上用 dig 测试的时候发现了不支持 Subnet 的提示,所以已经把所有上游的 subnet 去掉了,目前为止正常 (我是 dig 到 smartdns 的并且没带 subnet,猜测是 smartdns 把上游的返回透传了?)

moetayuko commented 1 week ago

@pymumu 关 ecs 用了 24 小时都没出问题,八成就是他的锅了。不知道目前 smartdns 对开启但不支持 ecs 的上游是怎么处理的,为什么我这边开了以后会把解析带崩

pymumu commented 1 week ago

多配置几个上游就应该可以 你那个只有一个生效

moetayuko commented 1 week ago

多配置几个上游就应该可以 你那个只有一个生效

看了下 chnlist 里没有 quark.cn 所以这条应该会走默认组 ~(配置失误,应该把 cn 都扔到白名单里的,但不影响结论)~ 默认组里有两个

server-tls dns.tuna.tsinghua.edu.cn  -subnet 61.185.152.0/18
server-https https://doh.apad.pro/dns-query  -subnet 61.185.152.0/18

其中 doh.apad.pro 官网说支持 ecs