/etc/resolv.conf中的第二个名称服务器没有被wget拾取

我的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