我正在试验两台本地DNS服务器。 当我取下第二个(或主要)DNS服务器时,我无法parsing任何域名。
使用host命令或nslookup我得到超时错误:
root@ubuntu:~# host testsrv.lan ;; connection timed out; no servers could be reached root@ubuntu:~# nslookup testsrv.lan ;; Got recursion not available from 10.0.3.4, trying next server ;; connection timed out; no servers could be reached
但是当我尝试dig命令,我得到一个正确的答案:
root@ubuntu:~# dig testsrv.lan ; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> testsrv.lan ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7759 ;; flags: qr rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;testsrv.lan. IN A ;; ANSWER SECTION: testsrv.lan. 5 IN A 10.0.3.4 ;; Query time: 2 msec ;; SERVER: 10.0.3.4#53(10.0.3.4) ;; WHEN: Thu Jun 04 17:54:28 CET 2015 ;; MSG SIZE rcvd: 56
(主DNS服务器是10.0.3.4,我添加了一个logging:testsrv.lan – > 10.0.3.4)
我已经使用tcpdump来检查底下发生了什么: tcpdump -vvv -l -n -i any "udp port 53"我已经注意到,第一台服务器正在响应从我的主机的DNS请求,但主机始终试图请求第二台服务器并超时。
当两个DNS服务器中的任何一个closures时,ubuntu(特别是resolvconf服务)是否应该是“容错”? 这是parsing域名时的默认行为? 它在任何地方是文件化的吗? 我们可以改变吗?
NB:我使用的是Ubuntu 14.04服务器,而DNS是使用/ etc / network / interfaceconfigurationdns-nameservers 10.0.3.4 10.0.3.5
任何帮助表示赞赏。 谢谢。
DNS服务器可以configuration为以两种不同方式之一运行。 它可以作为一个或多个区域的权威DNS服务器,也可以是cachingrecursionparsing器。 ( 这个答案有更多的细节差异。)
可以configuration一台DNS服务器同时进行,但在此之前,您需要充分理解两者之间的差异。 如果没有足够的了解,你可能会得到一个与预期不同的设置。
一个典型的DNSparsingstream程开始于查询从客户端发送到recursor。 recursor发送查询到尽可能多的权威的DNS服务器,以便发送一个答复到客户端。
一个可能的解释是,为什么在两台服务器都启动的情况下它工作正常,而一台服务器closures时却不能工作,那就是你configuration了一个作为recursor,另一个作为权威configuration。 当两者都启动时,客户端可以向recursor发送一个查询,然后询问授权,然后将授权到recursor的回复发送给客户端。
客户端和recursor之间的通信看起来不像recursor和权威之间的通信。 每个DNS查询都有一个表示它是哪种types的查询。 而DNS响应也会指出响应的服务器是否是recursor。 因此,虽然在某些情况下可能得到错误的查询回复,客户端和服务器都将有机会看到某些错误,并拒绝向用户提供答案。
如果你想configuration一对冗余的DNS服务器,那么configuration一个作为recursor,另一个作为权威是绝对不是你想要的。 冗余对意味着你configuration其中一个能够做你想让它自己做,然后你configuration另一个相同的方式。
您在networkingconfiguration中指定的DNS服务器必须是recursors。 所以如果你想让这些DNS服务器在/etc/resolv.conf或其他一些networkingconfiguration文件在/etc ,那么你想要的是一对冗余的recursors。
另外,默认情况下,所有工具host , nslookup和dig都会发送适合发送给recursor的查询。 如果你想直接使用这些工具对权威的服务器,你需要告诉工具,例如使用dig +norecurse 。