我的resolv.conf如下所示:
; generated by /sbin/dhclient-script search mcdc nameserver 10.0.4.48 nameserver 8.8.8.8
如果我做nslookup www.google.com它的作品
nslookup www.google.com ;; Got SERVFAIL reply from 10.0.4.48, trying next server Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: www.google.com canonical name = www.l.google.com.
但是当我蜷缩www.google.com,它不能解决主机。
我尝试在strace下运行curl,发现curl只是在resolv.conf中使用第一个名称服务器,而不是第二个。 如果我切换两个名称服务器行,www.google.com解决,但内部DNS名称不,所以这不是一个很好的解决方法。
我怎样才能解决resolv.conf使用两个名称服务器?
resolv.conf和parsing器的默认行为是按列出的顺序尝试服务器。 如果第一个名称服务器超时,parsing器将只尝试下一个名称服务器。 resolv.conf手册页说:
名称服务器名称服务器IP地址
互联网地址(以点表示法)parsing器应查询的名称服务器。 最多可以列出MAXNS(目前3个,请参阅)名称服务器,每个关键字一个。 如果有多个服务器,则parsing器库按照列出的顺序查询它们。
和:
(使用的algorithm是尝试一个名称服务器,如果查询超时,请尝试下一个,直到名称服务器,然后重复尝试所有名称服务器,直到最大重试次数。
另请参阅parsing器(5)手册页以获取更多信息。
您可以使用rotate来更改parsing器的行为,它将以循环顺序查询名称服务器:
旋转在_res.options中设置RES_ROTATE,这将导致列出的名称服务器循环select。 这具有在所有列出的服务器之间传播查询负载的效果,而不是每次都首先尝试列出的第一个服务器。
但是,如果nslookup从第一个名称服务器接收到SERVFAIL ,它将使用第二个名称服务器。 从nslookup的手册 :
[no]失败如果名称服务器响应SERVFAIL或引用(nofail)或者终止对这样的响应的查询(失败),请尝试使用下一个名称服务器。
(默认= nofail)
是10.0.4.48recursionDNS服务器又名parsing器?
还是它只是你的内部区域的权威服务器?
你应该build立一个内部的parsing器,也可以保存你的权威数据。
是的,你可以使用“旋转”和超时设置来提高DNS查询,下面是例子,
例如:
[root@centos-xxxxxx ~]# cat /etc/resolv.conf options rotate options timeout:1 search xyz.abc.local nameserver 192.168.56.3 nameserver 10.0.2.4
如果可以的话,我会以这种方式进行configuration。
searchmcdc 域名服务器127.0.0.1 名称服务器8.8.8.8