DNS云学堂 | 行车不规范亲人两行泪,NS不规范运维两行泪20
发表时间:2021-01-16 16:03 NS记录在ZONE委派的时候起到了至关重要的作用, 在项目中经常会遇到父域或者子域的NS记录配置错误,导致了各种各样的问题。本期云学堂通过场景模拟,分析问题原因,给出NS配置具体建议及规范。enjoy: 一个真实发生的案例 某日,用户向ZDNS专家团队求助,自己集团的部分域名在全国部分运营商LDNS无法解析。经过分析,发现是该域名的NS不规范导致的最终问题。用户按照NS配置建议进行DNS配置后,彻底解决了相关问题。在分析这一案例的过程中,我们认识到:1)NS规范配置影响到一个DNS权威区是否合法,在日常运维工作中应当重视NS配置合规性;2)在各种场景下如何规范配置NS记录是普遍存在的问题。 场景模拟 概述 现网配置如下(模拟环境),使用三台服务器模拟DNS系统中的各种角色: 1)根+顶级域服务器:10.1.112.98 2)二级权威服务器:10.1.112.54 3)递归服务器:10.1.112.252(根配置指向10.1.112.98) 在递归服务器上:将根服务器指向10.1.112.98(这样的目的就是使其不使用默认的13个根),这样递归服务器便从我们的"测试根+顶级域"开始请求。 详细配置 各角色DNS基础配置如下: 1)根+顶级域服务器:10.1.112.98有如下记录: @区(根区): ![]() com区: ![]() 2)二级权威服务器:10.1.112.54有如下记录: test.com权威区: ![]() 3)递归服务器:10.1.112.252有如下记录: 根配置(指向根+顶级域服务器): ![]() 注 温馨提示:基础配置涉及到NS及A记录的创建,建议先充分理解后再往下观看。 模拟解析 模拟客户端向递归服务器发起如下解析,制造解析错误现象: 1)dig 指向递归服务器:10.1.112.252请求www.test.com,正常应答 ![]() 2)dig 指向递归服务器:10.1.112.252请求ns.test.com,应答NXDOMAIN ![]() 3)dig 指向递归服务器:10.1.112.252请求new1.test.com,应答SERVFAIL ![]() 问题分析 下面根据图解详细分析每次请求的详细逻辑: 1)请求的正常应答: ![]() 由上图可知,递归服务器按照正常的逻辑递归查询,并拿到最终结果应答给客户端。 2)请求ns.test.com,应答NXDOMAIN 缓存是顶级域应答的NS及NS_glue值,而非权威服务器应答的结果,当递归服务器收到ns.test.com.的请求时,递归服务器会认为顶级域应答的NS_gule值不能作为权威结果应答给客户端,递归服务器会再次请求向test.com权威服务器请求ns.test.com.域名 ![]() 3)请求new1.test.com,得到SERVFAIL的应答 先了解SERVFAIL的定义:"ServFail"在[ RFC 1035 ]有所解释: RCODE响应码为2 :Server failure The name server was unable to process this query due to a problem with the name server. (由于名称服务器出现问题,名称服务器无法处理此查询) 在数据包中的response中的Rcode字段: ![]() 最常见到:DNS服务器解析超时应答SERVFAIL,但是此次SERVFAIL的原因不是因为解析超时。SERVFAIL原因分析: 请求逻辑: ![]() 具体原因为: 1、第二次请求的第三小步中的ns.test.com域名请求的结果为NXDOMAIN,而test.com权威服务器应答的结果优先级比顶级域权威服务器应答的"可信度"更高,此次请求导致了递归服务器上test.com的NS_gule被置为NXDOMIAN状态。 2、递归服务器在NS_gule被置为NXDOMIAN状态这一段时间内(一般情况,这段时间按照test.com权威区中SOA记录中的最小TTL进行缓存),再也无法向test.com发起新的域名请求!(一旦出现这种问题,需要有在全网快速清除错误缓存的能力,方能使业务快速回复正常) NS配置建议及规范 如上是一次NS不规范导致的案例分享,那么针对NS配置有如下的配置规范建议: 1)建议父域与子域协商配置NS配置,NS记录保持一致,规范建议配置: 例:在test.com权威DNS服务器上,需要将bjdc.test.com授权给第三方DNS服务器进行权威解析,那么建议如下配置: 在test.com权威DNS服务器上创建如下记录: bjdc.test.com NS ns.bjdc.test.com ns.bjdc.test.com A <第三方DNS服务器> 在ns.bjdc.test.com第三方权威服务器上创建如下记录: bjdc.test.com NS ns.bjdc.test.com ns.bjdc.test.com A <第三方DNS服务器> (即保证:NS对应的域名能够在第三方权威服务器上找到A记录) 2)因特殊情况,父子域NS无法保持一致的情况,规范建议配置: 例:在test.com权威DNS服务器上,需要将bjdc.test.com授权给第三方DNS服务器进行权威解析,那么建议如下配置: 在test.com权威DNS服务器上创建如下记录: bjdc.test.com NS bjdcns.test.com bjdcns.test.com A <第三方DNS服务器> (即保证:NS对应的域名能够在父域服务器上找到A记录) 3)作为互联网权威时,NS记录对应的gule值填写公网地址 ![]() 本期云学堂就分享到这里,如果您有NS配置方面的其他问题,欢迎在文章下方留言,我们将安排专业的工程师为您答疑解惑。咱们下期再见~ 声明:此篇为ZDNS-国家工程研究中心原创文章,转载请标明出处链接:https://www.zdns.cn/h-nd-498.html
|