开发者社区> 网络服务专家> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

云解析小编科普:域名解析失败的那些事

简介: 说起域名解析失败,小编平时工作中经常遇到。一旦失败可不得了,基本代表着对应的业务无法访问了。不过一部分“失败”指的是请求源向递归DNS查询时候无法解析出结果的情况,并不是真正意义上的失败。所以小编今天向大家科普下域名解析失败的几种情况。
+关注继续查看

说起域名解析失败,小编平时工作中经常遇到。一旦失败可不得了,基本代表着对应的业务无法访问了。不过一部分“失败”指的是请求源向递归DNS查询时候无法解析出结果的情况,并不是真正意义上的失败。所以小编今天向大家科普下域名解析失败的几种情况。

关于DNS-Rcode(DNS返回码)

小编首先要介绍一下DNS-Rcode,DNS-Rcode作为DNS应答报文中有效的字段,主要用来说明DNS应答状态,这可是小编排查域名解析失败的重要指标。通常常见的Rcode值如下:

  • Rcode值为0,对应的DNS应答状态为NOERROR,意思是成功的响应,即这个域名解析是成功;
  • Rcode值为2,对应的DNS应答状态为SERVFAIL,意思是服务器失败,也就是这个域名的权威服务器拒绝响应或者响应REFUSE,递归服务器返回Rcode值为2给CLIENT;
  • Rcode值为3,对应的DNS应答状态为NXDOMAIN,意思是不存在的记录,也就是这个具体的域名在权威服务器中并不存在;
  • Rcode值为5,对应的DNS应答状态为REFUSE,意思是拒绝,也就是这个请求源IP不在服务的范围内。

DNS请求失败的具体分析

综上,小编可以知道,常见的请求失败包括:
1、域名记录不存在,即Rcode值为3(NXDOMAIN)的情况,这种情况下域名权威服务器及托管的主域名均正常,但是权威并不存在这条具体的域名记录,于是权威返回了NXDOMAIN,值的注意的是这个NXDOMAIN的报文中会包含一个AUTHORITY SECTION,内容为改主域名的SOA记录,这个应答结果会在递归服务器中被缓存,缓存时间周期为域名的SOA记录的TTL。
image

2、权威解析失败,即Rcode值为2(SERVFAIL)的情况,递归服务器会给请求源这个结果的原因是向权威解释请求异常,包括且不限于权威不响应/或者权威返回refuse/或者权威返回servfail,这个SERVFAIL的应答结果当然是一个空结果,不过BIND会强制给这个结果增加一个1S的TTL,所以SERVFAIL的应答会在递归服务器中被缓存,缓存时间周期为1S。
image

2.1)权威不响应。包括递归服务器至权威服务器中间的网络异常在内,递归服务器在发出递归请求并完成重试超时后,给请求源一个SERVFAIL的应答,并缓存1S 。
image

2.2)权威向递归服务器应答REFUSE。当权威服务器不存在主域名及对应的SOA记录时,权威会向递归服务器返回REFUSE,即不在我服务的范围内拒绝,递归服务器在收到这个REFUSE应答后,给请求源一个SERVFAIL的应答,并缓存1S。
image

2.3)权威向递归服务器应答SERVFAIL。当权威服务器存在主域名但是由于zonefile被破坏导致权威服务器上域名的NS记录异常时,权威会向递归服务器返回SERVFAIL,即解析失败,递归服务器在收到这个SERVFAIL应答后,给请求源一个SERVFAIL的应答,并缓存1S 。
image

2.4)权威向递归服务器应答其他的错误Rcode。由于不常见本文就不展开了,递归服务器在收到其他错误应答后,给请求源一个SERVFAIL的应答,并缓存1S。

3、拒绝服务,即Rcode值为5(REFUSE)的情况。除了记录不存在(NXDOMAIN)和解析失败(SERVFAIL)以外,如果请求源不在递归服务器的服务范围内,这种情况下递归服务器会直接给请求源一个REFUSE的应答,本地直接应答无缓存。
image

4、响应成功,但是没有解析结果,这是一种比较特殊的情况,这种情况是Rcode值为0(NOERROR)的情况。这种情况下域名权威服务器及托管的主域名均正常,权威本身也存在这条具体的域名记录,但是没有对应的记录类型(不包含CNAME,CNAME是特殊情况,可以响应任意类型的请求),这是权威返回了NOERROR,值的注意的是这个NOERROR的报文中没有ANSWER SECTION。但是会包含一个AUTHORITY SECTION,内容为改主域名的SOA记录,这个应答结果会在递归服务器中被缓存,缓存时间周期为域名的SOA记录的TTL。
image

5、还有最后的一种情况,就是递归服务器本身不响应了,这个比较容易理解,如果递归服务器不响应,那么请求段收不到任何应答,这个时候请求端终端如果有超时机制则会跑出一个dns请求 timeout的结果。
image

结论

总体上小编看到,递归DNS解析失败有着多种可能的因素。有了这张神图,老板再也不怕小编域名解析失败了。
image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
微软在 Android 设备上的预装 APP 中发现高危漏洞!下载量已达数百万
微软在 Android 设备上的预装 APP 中发现高危漏洞!下载量已达数百万
23 0
SpringCloud微服务实战——搭建企业级开发框架(三十七):微服务日志系统设计与实现【上】
针对业务开发人员通常面对的业务需求,我们将日志分为操作(请求)日志和系统运行日志,操作(请求)日志可以让管理员或者运营人员方便简单的在系统界面中查询追踪用户具体做了哪些操作,便于分析统计用户行为;系统运行日志又分为不同的级别(Log4j2): OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL,这些日志级别由开发人员在代码编写时确定,并编写在代码中,系统运行时记录,方便系统开发人员分析定位解决问题,查找系统性能瓶颈。
131 0
存的起,看得见—云原生多模数据库Lindorm技术解析
Lindorm是阿里云发布的业界首款云原生多模数据库,支持海量数据的低成本存储处理和弹性按需付费,兼容HBase/Cassandra、OpenTSDB、Solr、SQL、HDFS等多种开源标准接口,本文将介绍其背后的设计思考和技术架构。
5219 0
Android 开关按钮切换,类似于iphone 效果,view实现
1、实现的效果            gitHub :  https://github.com/zcweng/ToggleButton
1210 0
53
文章
4
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载