LDNS定义
LDNS就是指本地DNS服务器,其中的L,指的就是Local,本地的意思。
每个电脑里面都设置了本地DNS服务器(简称LDNS),需要的时候,就向LDNS发出请求,LDNS在网上问权威域名服务器(简称权威DNS)得到答案。
比如,您可以打开这个页面查看LDNS。http://www.17ce.com/ldns
例子
现在举一个具体的例子:终端请求www.baidu.com这个域名的IP的过程是这样的
在没有缓存时,LDNS会从根DNS问起:
- 1、LDNS问根DNS说:“www.baidu.com的IP是多少啊?”。
- 2、根DNS说:“我哪有时间管你这么细的问题,你去问com顶级域的DNS吧,我只管到顶级域,喏,这些是com顶级域DNS的名字和IP,你去问它们吧”。(以NS记录回应)
- 3、LDNS又忙问com的权威DNS,com权威DNS说:“你问的这是三级域名,我不管这么多,你去问baidu.com的权威DNS吧,它的名字是ns.baidu.com,他的IP是XXX(这里可能给出多个权威DNS)”。
- 4、LDNS继续问baidu.com的权威DNS,这次痛快,因为www.baidu.com正是它管的,它可能直接给出A记录,也可能给出CNAME记录,如果是前者,就直接得到IP,如果是后者,就需要对别名再做查询。
- 5、最终,LDNS得到www.baidu.com的IP,并将其返回给终端。
一张图看懂LDNS
腾讯云工程师是怎么排查CDN故障的
客户端访问CDN流程
具体的流程简述如下:
- 1.用户访问CDN域名 www.test.com 下的某图片资源,如 demo.jpg 发起请求,先要向 Local DNS 发起域名解析请求;
- 2.当 Local DNS 无对应解析纪录时,会递归查询,此时由于业务已经接入了 CDN,则解析请求会发送至 Tencent DNS,Tencent DNS 为腾讯云自主研发的调度体系,会为请求分配最佳节点IP;
- 3.Local DNS 获取Tencent DNS返回的解析 IP;
- 4.用户测获取解析 IP;
- 5.用户向获取的 IP 发起对资源 demo.jpg 的访问请求;
- 6.若该 IP 对应的节点缓存有 demo.jpg,则会将数据直接返回给用户(10),此时请求结束。若该节点未缓存 demo.jpg,则节点会向业务源站发起对 demo.jpg 的请求(6、7、8),获取资源后,结合用户自定义配置的缓存策略,将资源缓存(9),并返回给用户(10),此时请求结束。
客户端访问CDN排查
该步骤目的是查看用户的出口IP,以及用户的Local DNS信息,以及腾讯DNS给客户调度的IP信息。收集到上述的信息可以初步判断用户的LDNS配置是否正确。一般出口IP和LDNS隶属于同一个地域同一家运营商,如果出现跨地域和跨网就会有异常,此时腾讯DNS给客户调度的IP就不是最优的CDN边缘节点,会导致用户访问CDN资源出现卡,慢,无法访问等情况。
不论客户端是电脑还是手机,都可以访问华佗进行诊断,在域名一栏输入CDN的域名信息后点击开始拨测。
开始拨测后,会统计客户端的出口IP以及LDNS信息。以及域名推荐的CDN解析IP和实际LDNS解析的CDN域名信息。可以点击“复制结果URL分享”来对该检测结果进行分享。
从华佗的拨测信息,我们就可以很容易的判断出客户的IP和默认的LDNS是否属于同地域同运营商。一般如果用户DNS配置为公共DNS解析(例如8.8.8.8,114.114.114.114),就很容易出现客户出口IP和LDNS不一致的问题。
通过LDNS解析IP一项,复制解析的IP信息,在腾讯云控制台上CDN节点IP归属查询,对解析的IP进行查询。就可以判断是否就近分配CDN边缘节点,以及域名是否存在劫持。
CDN节点IP归属查询需要登录后才能查看:https://console.cloud.tencent.com/cdn/inspect/ip
注:有时华佗出现无法拨测出出口IP,LDNS以及解析出CDN域名的情况。可以使用http://debug.ping.dnsv1.com/ping.x 网站查看出口IP和LDNS,至于CDN解析的IP地址,可以直接使用ping CDN域名看到具体的IP地址。
如果客户出口IP,LDNS配置都没有问题,且LDNS解析的IP也正常。此时需要继续排查网络的问题
注意:海外的CDN拨测华佗不支持,建议使用 http://debug.ping.dnsv1.com/ping.x 链接来测试出口IP和LDNS信息,至于域名解析的信息,可以直接ping一下域名就可以拿到。
客户端到CDN边缘节点网络异常
客户端到CDN边缘节点网络异常相对来说比较好排查,腾讯云对外的所有边缘节点的IP都是可以ping通的,可以在客户端ping边缘节点的IP,看是否有丢包。如果有丢包,就需要提供客户端到边缘节点的MTR信息。
如果是Windows客户端,可以下载WinMTR工具进行测试,具体链接https://github.com/oott123/WinMTR/releases
如果是Apple设备,可以在App store搜索Best NetTools下载安装,可以进行ping,DNS解析,以及MTR
如果是安卓设备,可以访问https://huatuo.qq.com/下载诊断App,输入对应的边缘节点对网络进行诊断。
如果使用MTR看到有丢包,将MTR截图给到腾讯云售后支持。腾讯云售后会把相关的问题反馈给运营商进行处理。
以上,就是整个测试过程。
原创文章,作者:蓝洛水深,如若转载,请注明出处:https://blog.lanluo.cn/10181