为什么不build议在DNS中使用多个PTRlogging?

我经常 读到 ,不build议在DNSconfiguration中使用多个PTRlogging。

但是,原因往往含糊不清,或者不那么明显,命名方式:

  • “它可能会导致问题”,
  • “可以触发程序期望单个答案的错误”:这是软件的问题,不是吗?!
  • “可以使DNS应答包太大”:是不是用EDNS修复了?

这些好理由吗? 你知道其他(好的)理由吗? 所有这些有点像“遗留的恐惧”…

反向名称的PTRlogging(例如7.2.0.192.in-addr.arpa )预计将标识与该IP地址关联的规范名称

networking节点上的网关指针和全地址节点上的普通主机指针都使用PTR RR来指向相应主机的主要域名。

来自: http : //tools.ietf.org/html/rfc1035#section-3.5

这种期望反映在反向查找的软件中; 通常这样的软件特别期待一个单一的名字,它期望能够使用该名称作为该主机的规范名称。 如果有多个返回的名字,通常随便选一个,因为他们绝对没有办法知道在这个特定的时刻你会select哪一个。

由于一般的预期是有一个与IP地址相关的规范名称,并且该名称是PTR应该指向的内容,因此添加多个名称通常没有任何优势(没有预期任何随机的A / AAAAlogging具有匹配的PTR ),而是它有一个潜在的缺点,因为它可能会导致奇怪的结果,因为如果添加了多个PTRlogging,则无法控制使用哪个PTRlogging。

实质上,如果您有多个PTRlogging,实际上并不会使主机看起来更合法,反而会出现相反的情况,否则就会冒失败的风险。

作为一个或许有些极端的隐喻,在机场交出五张带有你的照片但名字不同的护照可能不会被接收,如果你只是交出一张。

这一切都归结为不可预知的行为,因为RFC没有规定限制或处理这些PTRlogging的方法。 大多数实现将select循环,你不会达到你想要的结果(多个名称之间的完美匹配到一个IP)。

你可以阅读更多关于这里: https : //supernoc.rogerstelecom.net/pdfs/multiple-ptrs.pdf

另外,从Glibc的getnameinfo函数( https://sourceware.org/bugzilla/show_bug.cgi?id=5790 )检查这个bug。 你怎么能保证这不是发生在互联网上的无数不同的系统(其中一些非常老,没有打补丁)呢?

作为一个经验法则,为了加强,避免不明确和不可预测的行为总是很好的。 遗憾的是,单个知识产权的多个PTRlogging属于该类别(就RFC而言)。

如果您有多个PTR,您如何保证PTR将匹配特定的转发logging?

这在邮件服务器交互操作中尤为重要,大多数入站接收SMTP服务器将检查前向是否匹配反向

相当困难的是,你有多个PTR,没有办法保证select哪个PTR,并且它符合你在连接中的前进方向

保证完美匹​​配的最简单的方法是有一个匹配转发条目的PTR