使用的 adguard ,已经开启 edns 选项。上游设置为 dot.pub 。机器在国外
以 www.jd.com 为例。
如图:
正确解析到国内 CDN:
不正确解析到了国外 CDN:
@johnjiang85 麻烦反应下相关同学
1
ZE3kr 2022-03-26 08:41:47 +08:00 via iPhone
大多数权威 DNS 的 edns 有设置白名单,只有 Google 、114 等常用 DNS 请求才认 edns ,自己搭建的 dns (非权威)解析服务器的 edns 是被忽略的。
|
2
ZE3kr 2022-03-26 08:50:31 +08:00
https://gist.github.com/ZE3kr/210fc3bc6a1318ef1e60d15cbe38119c
破案了,是 JD 的权威服务器不支持 ENDS 。这个锅 DNSPod 不背 |
4
loukky OP |
5
johnjiang85 2022-03-26 20:46:34 +08:00
DNSPod 目前的 DoT 解析结果完全以权威返回结果为准,国内下周将切换到正式环境
|
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 ,部分对比结果可以参照公众号“老高的互联网杂谈” |
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 |
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 |
9
loukky OP @johnjiang85 所以等 dnspod 国外版更新以后,这个错误的缓存就会得到解决了吗?
|
10
johnjiang85 2022-03-27 09:36:39 +08:00
@loukky 可以解决。但是只是顺带的,毕竟这不是 dot.pub 的问题,是京东权威的问题。
|
11
loukky OP @johnjiang85 其实不仅仅是京东的域名出现这个问题,谷歌的也会。我觉得你们要缓存的话应该以分成以国内和国外的结果分别缓存。而且像请求的时候附带子网这种应该还是比较好来分开缓存的
|
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]
您说的:只是,应该是支持吧? 以上我的理解没有错误吧? 另外,啥叫:按照全局缓存?没有理解这层含义?麻烦童学解释一下,谢谢。 |
13
bclerdx 2022-04-05 22:28:04 +08:00
@johnjiang85 现在是不是已经切刀了正式环境了?
|
14
johnjiang85 2022-04-06 10:40:07 +08:00
@bclerdx 可以看下 ECS 的 RFC 或者 Google 的开发者文档,返回 scope mask 为 0 表示匹配后续所有网段过来的请求,即任何 IP 过来请求都可以直接应答,就相当于没有设置分线路解析。
doh 国内已经切换了大部分,dot 暂时还没有,这几天吧。海外切换还没有具体时间。 |