Windows DNS 地址列表不会恢复

Windows DNS 地址列表不会恢复

我在运行 Ubuntu 的 Pine64 上设置了自己的 DNS 服务器 (Bind9)。在我的 Windows 10 电脑上,我将 DNS 的 IP 地址添加到了 的顶部DNS server addressesAdvanced TCP/IP Settings我的 ISP 提供的“真实”DNS 服务器也以较低的优先级添加,旨在作为后备(见屏幕截图)。

Windows DNS 设置

只要我自己的 DNS 响应,一切都可以按照此配置完美运行。

但是,如果我关闭自己的 DNS 服务器,Windows 将无法解析名称。这会导致nslookupDNS 请求超时。

根据微软的文档,如果第一个 DNS 不起作用,它应该尝试列表中的下一个:

在大多数情况下,客户端计算机会联系并使用其首选 DNS 服务器,即其本地配置列表中的第一个 DNS 服务器。当首选服务器不可用时,将联系并使用列出的备用 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
>

但浏览互联网和解析名称却有效:

Resolve-DnsName -DnsOnly -Name ubuntu.com

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
ubuntu.com                                     A      600   Answer     91.189.94.40

把它们加起来:使用正确的 DNS 设置!(:

答案1

nslookup 命令并非总是测试客户端如何解析事物的最有用工具。虽然 nslookup 命令将连接到为该客户端配置的 DNS 服务器之一,但它不会自动进行故障转移。与内置的 Windows 解析器不同。

如果您使用的是较新版本的 Windows,则应该打开 powershell 并使用命令行Resolve-DnsName来使用标准 Windows API 来解析名称。

相关内容