DNS-3 存根解析器和请求和权威域服务器
#网络/DNS#
存根解析器(stub servers)
作为DNS客户端,生活相对轻松。您可以使用像gethostbyname()或getaddrinfo()这样的操作系统函数,这些函数将为您处理所有事情,包括应用本地覆盖和策略。
**“存根解析器”**是一个非常简单的DNS客户端,它发送DNS查询并接收使用响应中的应答。并且只做这两件事。它特别不应该处理任何NS记录,甚至不应该跟踪cname。
有几件事确实很重要。出于安全目的,存根解析器必须小心地完全随机化源端口和ID字段。它还必须防止在同一时间发送多个等价的查询,因为这将允许一个“生日攻击”,可能在有害的答案中欺骗。
实际测试TC=1响应路径也很重要,这可能在发送导致大量应答的查询时触发。
如果解析器同时发送两个不同的问题,比如一个名字的A和AAAA,它应该准备好接收无序的响应——即使是通过TCP。
权威域服务器
在这个文件中,我们深入研究了区域传输和通知。
传入的查询
权威服务器忽略DNS头中的递归所需(RD)位的值。对于它生成的任何响应,递归可用位都设置为零。
请特别注意不要向已经是DNS响应的内容发送响应。这将导致紧循环和拒绝服务攻击。换句话说,传入数据包上的QR必须为0。
代理/委托(delegation)
查找一个请求的应答可能意味着查询多个区域:例如,根区域、org区域、ietf.org区域。(这里指的是之前文中举的查询