如何获取域名在全国的解析质量

    首先,咱们为何关心一个域名在某个地方的真实解析ip?当咱们使用dns 后,域名解析的结果,对于网站方是不可控的,做为cdn 的用户,怎么知道本身网站在某个省的真实质量?若是不知道真实质量,怎么调用新的节点去覆盖?bash

    其次,咱们怎么去获取某个域名解析,在某个省或者市的真实质量?当使用融合cdn的时候,域名出现跨运营商,跨省解析,都是颇有可能的。服务器

    第一点是作域名监控的意义,第二点咱们该如何去实现,实现的关键就是edns 协议。网站

    咱们怎样作一个域名的全网真是ip查询呢?回顾下,咱们上网的通常流程(图片网上搜的)code

    通常不设置dns server 的话,咱们使用的localdns 都是isp dns 。当咱们发出请求的时候,全部向baidu.com 所在权威服务器发出的请求,都是isp dns 服务器 所在ip 查对应view 解析的结果。cdn

    说到这,关键的点就出来了,咱们可以模拟isp dns 发送请求给权威服务器,或者说,我能把ip 信息传导到权威服务器,权威服务器能根据这个ip 匹配出对应view ,将解析结果返回,这个问题就能够解决。这个能作吗?能作,用edns 协议就能够。server

    edns 网上有不少简介了,原理就是扩充协议,附带ip 信息。能够从新编译bind 附带subnet 去抓包查看协议的每一个字段:dns

dig -t A www.alibaba.com @202.119.160.11 
; <<>> DiG 9.10.3-P4-Ubuntu <<>> -t A www.alibaba.com @202.119.160.11
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18762
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.alibaba.com.		IN	A
;; ANSWER SECTION:zhiwei
www.alibaba.com.	300	IN	CNAME	www-cn.gds.alibaba.com.
www-cn.gds.alibaba.com.	120	IN	A	106.11.62.61
;; AUTHORITY SECTION:
gds.alibaba.com.	6460	IN	NS	gdsns1.alibaba.com.
gds.alibaba.com.	6460	IN	NS	gdsns2.alibaba.com.
;; Query time: 34 msec
;; SERVER: 202.119.160.11#53(202.119.160.11)
;; WHEN: Sun Jul 24 22:08:59 CST 2017
;; MSG SIZE  rcvd: 127

    使用edns 后,就能透传ip信息了,那咱们怎么去监测全网域名的质量?权威服务器都支持edns ?若是权威服务器不支持edns ,如何作?若是权威服务器支持edns,咱们直接向权威发请求?若是向localdns 发送请求edns 请求,哪些支持,哪些不支持?若是localdns 支持,可是权威不支持,又会是什么状况?而后,目前支持edns 的localdns 有哪些?图片

    总结下,直接向权威发edns 作监控是不合适的,加大了权威的负担。通常会向localdns 发请求,目前,支持比较好的是dnspod 和 谷歌的localdns, 114不稳定,百度的也有点问题。而后,dnspod 和 谷歌的localdns 都会透传 edns 请求,若是权威并不支持,那这个请求就不会获取到解析结果。ip

    说到这,基本就知道该若是实现了,全国每一个省每一个运营商的网段选出几个ip,分别构造edns 请求,就能够获得真实的解析地址,最后经过 httptrace 或者ping 就能够获取想要的指标。cmd

相关文章
相关标签/搜索