我在运行Ubuntu的Pine64上build立了自己的DNS服务器(Bind9)。 在我的Windows 10计算机上,我已将DNS的IP地址添加到Advanced TCP/IP Settings中的DNS server addresses的顶部。 我的ISP提供的“真正的”DNS服务器也被添加了较低的优先级,作为后备(见截图)。
只要我自己的DNS正在响应,一切都完美地与这种configuration工作。
但是,如果我在自己的DNS服务器上拔插头,则Windows无法parsing名称。 执行nslookup导致DNS请求超时。
根据微软的文档 ,如果第一个DNS不起作用,它应该尝试列表中的下一个:
在大多数情况下,客户端计算机会联系并使用其首选的DNS服务器,这是本地configuration的列表中的第一个DNS服务器。 列出的备用DNS服务器在首选服务器不可用时联系并使用。
我的问题是为什么Windows第一次失败时使用秒DNS?
在这种情况下,我希望第二个DNS(83.255.229.23)能够成功响应,但是甚至没有发出请求。
感谢Zoredache的回答,我发现我的DNS列表(在Windows中)是不正确的。 截图中的DNS服务器名为“ns1.comhem.se”,属于我的ISP。 但是,显然他们不能直接使用:
Resolve-DnsName -DnsOnly -Name ubuntu.com -Server 83.255.229.23 Resolve-DnsName : ubuntu.com : DNS operation refused At line:1 char:1 + Resolve-DnsName -DnsOnly -Name ubuntu.com -Server 83.255.229.23 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (ubuntu.com:String) [Resolve-DnsName], Win32Exception + FullyQualifiedErrorId : RCODE_REFUSED,Microsoft.DnsClient.Commands.ResolveDnsName
我查看了我的路由器从我的ISP获得的DNS,结果他们被命名为“anyresolver1.comhem.se”(IP 83.255.255.1)。 当我将它们放入列表中时,一切都按预期工作!
好吧,几乎所有东西。 正如在下面的评论中指出的, nslookup仍然不起作用:
nslookup DNS request timed out. timeout was 2 seconds. Default Server: UnKnown Address: 192.168.0.18 > set d2 > ubuntu.com Server: UnKnown Address: 192.168.0.18 ------------ SendRequest(), len 33 HEADER: opcode = QUERY, id = 2, rcode = NOERROR header flags: query, want recursion questions = 1, answers = 0, authority records = 0, additional = 0 QUESTIONS: ubuntu.com.home, type = A, class = IN ------------ DNS request timed out. timeout was 2 seconds. timeout (2 secs) SendRequest failed ------------ SendRequest(), len 33 HEADER: opcode = QUERY, id = 3, rcode = NOERROR header flags: query, want recursion questions = 1, answers = 0, authority records = 0, additional = 0 QUESTIONS: ubuntu.com.home, type = AAAA, class = IN ------------ DNS request timed out. timeout was 2 seconds. timeout (2 secs) SendRequest failed ------------ SendRequest(), len 28 HEADER: opcode = QUERY, id = 4, rcode = NOERROR header flags: query, want recursion questions = 1, answers = 0, authority records = 0, additional = 0 QUESTIONS: ubuntu.com, type = A, class = IN ------------ DNS request timed out. timeout was 2 seconds. timeout (2 secs) SendRequest failed ------------ SendRequest(), len 28 HEADER: opcode = QUERY, id = 5, rcode = NOERROR header flags: query, want recursion questions = 1, answers = 0, authority records = 0, additional = 0 QUESTIONS: ubuntu.com, type = AAAA, class = IN ------------ DNS request timed out. timeout was 2 seconds. timeout (2 secs) SendRequest failed *** Request to UnKnown timed-out >
但浏览互联网和parsing名称确实有效:
Resolve-DnsName -DnsOnly -Name ubuntu.com Name Type TTL Section IPAddress ---- ---- --- ------- --------- ubuntu.com A 600 Answer 91.189.94.40
总结一下 :使用正确的DNS设置! (:
nslookup命令并不总是testing客户端如何解决问题的最有用的工具。 虽然nslookup命令将连接到为该客户端configuration的DNS服务器之一,但不会自动进行故障转移。 与内置的Windowsparsing器不同。
如果您使用的是最新版本的Windows,则应该打开powershell,然后使用命令行工具Resolve-DnsName来使用标准的Windows API来parsing名称。