parsingCNAME – 查找后续Alogging – parsing器还是服务器?

当parsing器查找CNAME时,parsing器显然首先向DNS服务器发送Alogging请求。 DNS服务器是否应该知道请求实际上是CNAME,还是parsing器应该重试请求,但是CNAMEtypes? 我问,因为 – 这里是扭曲的 – 我们有一个“内部”顶级域名,我们在我们的内部局域网使用,我们称之为“domain1”,我所查询的DNS服务器是“domain1”的权威服务器对于其他东西是recursion的。)我的主机(Centos 6.8)实际发出的是一个Alogging的请求:

16:15:45.837525 IP (tos 0x0, ttl 64, id 36911, offset 0, flags [none], proto UDP (17), length 62) myhost.domain1.40684 > dnsserver.domain1.domain: 15355+ A? cfengine.domain1. (34) Reply - a servfail: 16:15:45.837762 IP (tos 0x0, ttl 64, id 49982, offset 0, flags [DF], proto UDP (17), length 62) dnsserver.domain1.domain > myhost.domain1.40684: 15355 ServFail 0/0/0 (34) 

如果我做了一个CNAMEtypes的挖掘,我得到正确的CNAMElogging(虽然A rec不会作为ADDITIONAL数据返回):

 cfengine.domain1. 3600 IN CNAME helm02.domain2. 

是的,我知道将权威性和recursion性function组合到单个DNS服务器是不好的做法,但是我无法控制这个DNS设置。

首先,如果授权和recursion函数被合并到一个服务器中,并且你发送一个recursion的期望的查询到服务器的CNAME服务器是权威的 – 它甚至应该工作吗?

假设它应该工作,谁负责搞清楚我的请求实际上是一个CNAMElogging,而不是一个logging? DNS服务器,还是我的parsing器?

如果某个服务器对某个特定的名称具有权威性,那么该名称的CNAMElogging必须以该logging作为响应来查询所有loggingtypes。

如果服务器正在进行recursion,请求一个不是CNAME的loggingtypes,但获得一个CNAME响应,则应该使用CNAMElogging中的名称重新启动查询,将重新启动的查询中的响应与CNAME响应合并,将合并的回复返回给正在进行recursion的人。

不同的是,权威服务器负责知道名称具有CNAME ,并对所有查询作出响应,并且recursor负责注意到在请求其他内容并据此采取行动时,它返回了CNAME 。 如果你特别要求一个CNAMElogging,你可以绕过这个额外的魔法,而recursion只会给你CNAME响应,而不会试图跟随名字。

如果使用+norecurse再次尝试查询,则SERVFAIL应该消失。 dig假定默认情况下recursion是需要的,并且SERVFAIL是要求recursion的正确的返回响应,并且不可能parsing别名的目标。

查询授权服务器的recursion服务器不应该使用所需的recursion( RD=1 )标志设置请求。 总之,你应该只在以下两种情况下看到这个问题:

  1. 您正在手动运行此事务,并忘记禁用recursion。
  2. 有人写了一个recursion名称服务器的(穷)实现,作者忽略了在执行权威查找时取消设置recursion期望标志。 recursion名称服务器不应该要求授权服务器代表它执行recursion。