V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
loukky
V2EX  ›  DNS

Dnspod 附带国内 edns 时,但有时候仍然会解析到国外的 cdn 节点

  •  
  •   loukky · 2022-03-26 00:09:57 +08:00 · 3937 次点击
    这是一个创建于 1001 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用的 adguard ,已经开启 edns 选项。上游设置为 dot.pub 。机器在国外
    www.jd.com 为例。
    如图:
    正确解析到国内 CDN: 不正确解析到了国外 CDN: @johnjiang85 麻烦反应下相关同学

    14 条回复    2022-04-06 10:40:07 +08:00
    ZE3kr
        1
    ZE3kr  
       2022-03-26 08:41:47 +08:00 via iPhone
    大多数权威 DNS 的 edns 有设置白名单,只有 Google 、114 等常用 DNS 请求才认 edns ,自己搭建的 dns (非权威)解析服务器的 edns 是被忽略的。
    ZE3kr
        2
    ZE3kr  
       2022-03-26 08:50:31 +08:00
    https://gist.github.com/ZE3kr/210fc3bc6a1318ef1e60d15cbe38119c

    破案了,是 JD 的权威服务器不支持 ENDS 。这个锅 DNSPod 不背
    loukky
        3
    loukky  
    OP
       2022-03-26 09:37:50 +08:00 via Android
    @ZE3kr 但大部分时候是正常的,包括使用谷歌 DNS 解析
    johnjiang85
        5
    johnjiang85  
       2022-03-26 20:46:34 +08:00
    DNSPod 目前的 DoT 解析结果完全以权威返回结果为准,国内下周将切换到正式环境
    johnjiang85
        6
    johnjiang85  
       2022-03-26 20:51:24 +08:00
    正式环境的 120.53.53.53 和 1.12.12.12 将增加一层缓存,谷内到省级运营商,国外到国家级,对于普通域名不会再按照网段缓存结果,即同时受 dot.pub 和权威的 IP 库准确度影响。
    海外的切换会晚一些时间,未切换前还是完全以权威返回为准,按照网段缓存结果,完全依赖于权威的 IP 库准确度,如果权威的 IP 库不准,那就会解析错误。
    国内目前的权威 DNS IP 库准确度比较高的是我们 DNSPod 和 51dns ,部分对比结果可以参照公众号“老高的互联网杂谈”
    johnjiang85
        7
    johnjiang85  
       2022-03-26 21:03:25 +08:00
    京东的权威 DNS 对 ECS 的只是不完整或不同服务器数据不一致,可以看以下返回,有时候可以返回非 0 的 scope mask ,有时候返回 0 的 scope mask ,0 表示不支持 ecs 或者没有分线路解析,解析结果将按照全局缓存。

    dig @ns1.jdcache.com www.jd.com +subnet=119.6.6.6

    ; <<>> DiG 9.10.6 <<>> @ns1.jdcache.com www.jd.com +subnet=119.6.6.6
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59784
    ;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
    ;; WARNING: recursion requested but not available

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ; CLIENT-SUBNET: 119.6.6.6/32/24
    ;; QUESTION SECTION:
    ;www.jd.com. IN A

    ;; ANSWER SECTION:
    www.jd.com. 120 IN CNAME www.jd.com.gslb.qianxun.com.
    www.jd.com.gslb.qianxun.com. 60 IN CNAME www.jdcdn.com.
    www.jdcdn.com. 720 IN CNAME img20.360buyimg.com.s.galileo.jcloud-cdn.com.

    ;; Query time: 114 msec
    ;; SERVER: 111.13.28.10#53(111.13.28.10)
    ;; WHEN: Sat Mar 26 21:00:02 CST 2022
    ;; MSG SIZE rcvd: 168

    dig @ns1.jdcache.com www.jd.com +subnet=119.6.6.6

    ; <<>> DiG 9.10.6 <<>> @ns1.jdcache.com www.jd.com +subnet=119.6.6.6
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45079
    ;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
    ;; WARNING: recursion requested but not available

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ; CLIENT-SUBNET: 119.6.6.6/32/0
    ;; QUESTION SECTION:
    ;www.jd.com. IN A

    ;; ANSWER SECTION:
    www.jd.com. 120 IN CNAME www.jd.com.gslb.qianxun.com.
    www.jd.com.gslb.qianxun.com. 60 IN CNAME www.jdcdn.com.
    www.jdcdn.com. 720 IN CNAME img20.360buyimg.com.s.galileo.jcloud-cdn.com.

    ;; Query time: 124 msec
    ;; SERVER: 111.13.28.10#53(111.13.28.10)
    ;; WHEN: Sat Mar 26 21:00:11 CST 2022
    ;; MSG SIZE rcvd: 168
    johnjiang85
        8
    johnjiang85  
       2022-03-26 21:09:26 +08:00
    当某个海外的 IP 先请求了该域名,且返回了海外的结果之后,如果返回的 scope mask 为 0 ,即作为全局缓存,那么后面其他的任意 Ip 再请求也都会拿到海外的结果,权威的错误返回如下所示(。-> .)。

    dig @ns1 。jdcache 。com www 。jd 。com +subnet=8 。8 。8 。8

    ; <<>> DiG 9 。10 。6 <<>> @ns1 。jdcache 。com www 。jd 。com +subnet=8 。8 。8 。8
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50719
    ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    ;; WARNING: recursion requested but not available

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ; CLIENT-SUBNET: 8 。8 。8 。8/32/0
    ;; QUESTION SECTION:
    ;www 。jd 。com 。 IN A

    ;; ANSWER SECTION:
    www 。jd 。com 。 120 IN CNAME www 。jd 。com 。gslb 。qianxun 。com 。
    www 。jd 。com 。gslb 。qianxun 。com 。60 IN CNAME jd-abroad 。cdn20 。com 。

    ;; Query time: 137 msec
    ;; SERVER: 111 。13 。28 。10#53(111 。13 。28 。10)
    ;; WHEN: Sat Mar 26 21:05:49 CST 2022
    ;; MSG SIZE rcvd: 119
    loukky
        9
    loukky  
    OP
       2022-03-27 00:35:13 +08:00
    @johnjiang85 所以等 dnspod 国外版更新以后,这个错误的缓存就会得到解决了吗?
    johnjiang85
        10
    johnjiang85  
       2022-03-27 09:36:39 +08:00
    @loukky 可以解决。但是只是顺带的,毕竟这不是 dot.pub 的问题,是京东权威的问题。
    loukky
        11
    loukky  
    OP
       2022-03-27 20:03:07 +08:00
    @johnjiang85 其实不仅仅是京东的域名出现这个问题,谷歌的也会。我觉得你们要缓存的话应该以分成以国内和国外的结果分别缓存。而且像请求的时候附带子网这种应该还是比较好来分开缓存的
    bclerdx
        12
    bclerdx  
       2022-04-05 22:24:46 +08:00
    @johnjiang85 您说的 scope mask 非 0 和 0 是是指您这段命令中的:CLIENT-SUBNET: 119.6.6.6/32/24 和 CLIENT-SUBNET: 119.6.6.6/32/0 中的 [/24 ,即非 0] 和 [/0 ,即 0]

    您说的:只是,应该是支持吧?

    以上我的理解没有错误吧?

    另外,啥叫:按照全局缓存?没有理解这层含义?麻烦童学解释一下,谢谢。
    bclerdx
        13
    bclerdx  
       2022-04-05 22:28:04 +08:00
    @johnjiang85 现在是不是已经切刀了正式环境了?
    johnjiang85
        14
    johnjiang85  
       2022-04-06 10:40:07 +08:00
    @bclerdx 可以看下 ECS 的 RFC 或者 Google 的开发者文档,返回 scope mask 为 0 表示匹配后续所有网段过来的请求,即任何 IP 过来请求都可以直接应答,就相当于没有设置分线路解析。

    doh 国内已经切换了大部分,dot 暂时还没有,这几天吧。海外切换还没有具体时间。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1004 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:48 · PVG 06:48 · LAX 14:48 · JFK 17:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.