ZDNS
作者ZDNS·2021-10-27 15:12
其它·zdns

DNS云学堂 | 摊上事儿了!DNS解析应答状态码为NXDOMAIN

字数 2197阅读 2709评论 0赞 0

01 关于DNS-Rcode

DNS作为标准协议,对于解析应答状态码规范了相关字段,这里先介绍一下常见应答码:

Rcode值为0:对应的DNS应答状态为NOERROR,意思是成功的响应,即这个域名解析是成功;

Rcode值为2:对应的DNS应答状态为SERVFAIL,意思是服务器失败,也就是这个域名的权威服务器拒绝响应或者响应REFUSE,递归服务器返回Rcode值为2给CLIENT;

Rcode值为3:对应的DNS应答状态为NXDOMAIN,意思是不存在的记录,也就是这个具体的域名在权威服务器中并不存在;

Rcode值为5:对应的DNS应答状态为REFUSE,意思是拒绝,也就是这个请求源IP不在服务的范围内,常见的场景为联通客户端到电信运营商LDNS解析会被REFUSE。

(* SERVFAIL:解析失败,在解析系统中没有找到任何应答,DNS请求超时;REFUSE:请求被拒绝,请求客户端只是这一次请求失败,不会影响后续的解析)

那么在这4中常见的应答码中正常来说只有NOERROR是正确应答,其他三种都是不能获取正常结果的应答码。

实时上在所有应答码中NXDOMAIN的应答问题是比较严重的,那么NXDOMAIN代表什么意思,它会对整个解析过程带来什么影响?下面来揭开这层面纱, enjoy :

02 NXDOMAIN的定义

关于NXDOMAIN,我们来看看RFC中相关定义:

图片 1.png

图片 1.png

译文:本文档明确指出,当DNS解析程序收到响应代码为NXDOMAIN的响应时,意味着被拒绝的域名及其下的所有名称都不存在。

图片 2.png

图片 2.png

译文:DNS迭代解析算法以这种方式精确地解释NXDOMAIN信号。如果它遇到来自权威服务器的NXDOMAIN响应代码,它会立即停止迭代并将NXDOMAIN响应返回给查询器。

这里有个关键点,就是“立即停止迭代并将NXDOMAIN响应返回给查询器”。

03 NXDOMAIN影响

3.1 NXDOMAIN对LDNS的影响

我们来分析,作为LDNS收到NXDOMAIN的行为自然就是不再继续查询,并且将结果应答给查询器,同时还会有个行为就是将LDNS缓存中已有的关于该域名的记录都会标记为NXDOMAIN,并缓存NXDOMAIN的TTL。

因此在人为不干预的情况下,关于该域名的记录结果在TTL时间内都会被解析成为NXDOMAIN。

(*TTL值全称是“生存时间Time To Live”,简单的说它表示DNS记录在DNS服务器上的缓存时间)

3.2 谁产生的NXDOMAIN

在正常情况下,LDNS上的缓存均由权威服务器的应答产生。

因此互联网权威服务器不应该产生NXDOMAIN的应答,如果产生,则会影响该域名的正常解析。

04 实验测试

1.1 场景:

角色服务IP
LDNS172.16.150.101
172.16.150.102
权威DNS172.16.150.103

LDNS将本地根指向自建根(172.16.150.102),自建根将test.com授权给172.16.150.103

通过在权威DNS上模拟出aaa.test.com会应答NXDOMAIN,www.test.com配置正确应答NOERROR。

1.2 客户端解析

客户端将LDNS配置成为172.16.150.101

[root@localhost~]# cat /etc/resolv.conf

nameserver172.16.150.101

首先在客户端上对 www.test.com 进行 A 和 AAAA 解析,测试权威配置正确的解析结果

A记录解析正常

11.png

11.png

AAAA解析结果为无结果的NOERROR,这样的结果对LDNS无影响。

22.png

22.png

测试结果显示,对于配置正确的域名,应答结果都应该是NOERROR。

在客户端上对aaa.test.com进行A和AAAA解析,测试域名在权威已经配置,但配置不标准的解析结果

第一次对A记录进行解析,解析应答码为NOERROR,此时是正常的。

33.png

33.png

第一次对 AAAA 记录进行解析,解析结果为 NXDOMAIN ,此时就开始有问题。

44.png

44.png

此时,LDNS上关于aaa.test.com的全纪录类型缓存就会被污染。

下面来做下验证:

当之前访问的A记录的TTL超时后再对A记录进行解析,解析结果为NXDOMIAN,此时第一次解析正常的A记录缓存就会被污染,解析结果从NOERROR被污染成NXDOMAIN。

55.png

55.png

1.3 LDNS进行缓存文件查看确认

此时我们来查看LDNS中的缓存内容

66.png

66.png

从缓存中可以看出aaa.test.com的全类型(ANY)记录都被污染(解析结果为NXDOMAIN)。

为了验证是aaa.test.com的全记录类型都被污染,我们做一个很少解析的spf记录。

如下:spf记录也被污染

77.png

77.png

由此可见正常对外提供服务的域名是不能产生 NXDOMAIN 的应答结果,否则会将 LDNS 上关于该域名的全纪录类型结果都污染,污染后只能等待 NXDOMAIN 的 TTL 过期后才会重新到权威请求新的结果(此时需要保证权威侧的配置正确)。

那么此时就会有个问题:NXDOMAIN应答码是如何产生的?如何避免产生?

只有在保证权威DNS配置按照标准规范配置才能保证解析业务不会出现各种问题,我们对DNS配置有完整的标准配置建议,具体标准下次我们再聊。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广