缺省配置情况下local DNS(BIND开启递归,如果关闭递归或关闭缓存呢??待测试)在将请求进行递归时时携带的查询包是包含不期望其递归服务器进行再次递归的:
但是本机发送的DNS查询请求是期望local dns进行递归的:
从nslookup的debug信息也可以看出
> www.myf5.net
Server: [192.168.0.189]
Address: 192.168.0.189
------------
Got answer:
HEADER:
opcode = QUERY, id = 3, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 6, additional = 6
QUESTIONS:
www.myf5.net, type = A, class = IN
want recursion:表示本机发出的查询请求携带有期望递归的标记
recursion avail.:表示local dns服务器支持递归
local DNS返回给客户机的响应内容flag部分:
一种环境测试(两级DNS-下级设置上级为根.cap):
local DNS—192.168.0.107 另一个DNS---192.168.0.189 客户机IP 192.168.0.185
其中 local dns修改根列表文件,使其在递归时只递归给192.168.0.189。保持192.168.0.189配置不变即容许递归且根列表正常。
客户机查询www.myf5.cn结果:
> server 192.168.0.107
Default Server: [192.168.0.107]
Address: 192.168.0.107
> www.myf5.cn
Server: [192.168.0.107]
Address: 192.168.0.107
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
*** Request to [192.168.0.107] timed-out
抓包结果:
解析不了的原因是:
local dns接到解析请求后,发现自己不是myf5.cn的授权,于是执行递归,在本环境中将会把请求递归给192.168.0.189(上图第2个包),在这个转发的递归请求包中包含不希望192.168.0.189再次递归的标记:
所以0.189不会执行递归查询(即使189是打开递归的),0.189此时将直接进行迭代(即把自己所知道的根服务器列表告诉local dns—192.168.0.107):
Local dns接到返回的响应后无法继续处理,因为在它的系统里关于根始终认为是0.189这台服务器,抓包结果也表明local dns没有继续发出其他包到0.189上:
图文全文:DNS记录1.docx
文章评论
原来这样啊,mycisco你好渊博啊,服了you