wake-up-neo.com

Windows如何确定解析名称时使用哪个DNS服务器?

Windows使用哪种算法来决定要查询哪个DNS服务器以解析名称?

假设我有多个接口,所有接口都处于活动状态,一些未指定dns服务器,有些被告知要自动确定,有些则手动指定(在ipv4和接口ipv6接口中)。

我正在寻求这个一般问题的答案,希望我知道如何解决Windows Vista中的一个更具体的问题-我有两个接口,一个是较低指标,一个是手动指定的DNS服务器。 nslookup使用[〜#〜] this [〜#〜] DNS服务器并正确解析名称。但是,所有其他应用程序都无法解析名称,除非我手动为其他接口指定DNS服务器,然后这些应用程序将使用该服务器。指定后,nslookup还将使用为此接口指定的DNS服务器。

谢谢

46
Artefacto

如果我没有记错的话,它是由网络连接文件夹中“高级设置”中的NIC)绑定顺序确定的。您可以通过更改各种NIC的绑定顺序并以一个测试。

为了扩展我的答案,引用 Evan链接的文章 ,这是该文章的摘录:

DNS客户端服务按以下顺序查询DNS服务器:

  1. DNS客户端服务将名称查询发送到首选适配器的DNS服务器列表上的第一台DNS服务器,并等待一秒钟以进行响应。

  2. 如果DNS客户端服务在一秒钟内未收到第一台DNS服务器的响应,则会将名称查询发送到仍在考虑中的所有适配器上的第一台DNS服务器,并等待两秒钟以进行响应。

  3. 如果DNS客户端服务在两秒钟内未收到任何DNS服务器的响应,则DNS客户端服务会将查询发送到仍在考虑中的所有适配器上的所有DNS服务器,并等待另外两秒钟以响应。

  4. 如果DNS客户端服务仍然没有收到来自任何DNS服务器的响应,它将名称查询发送到仍在考虑中的所有适配器上的所有DNS服务器,并等待四秒钟以进行响应。

  5. 如果DNS客户端服务未从任何DNS服务器接收到响应,则DNS客户端会将查询发送到仍在考虑中的所有适配器上的所有DNS服务器,并等待八秒钟以获取响应。

步骤1中的首选适配器是在绑定顺序中首先列出的适配器。

30
joeqwerty

在Windows 10中,必须按所需顺序更新每个接口的度量。

  1. 转到控制面板>网络和Internet>网络连接
  2. 右键单击所需的连接(高优先级连接)
  3. 单击属性> Internet协议版本4
  4. 单击属性>高级
  5. 取消选中“自动指标”
  6. 在“接口指标”中输入10
  7. 点击确定

参考文献:

我在局域网中使用了10个,在WLAN中使用了20个,对VPN接口使用了100个(我更喜欢在工作中使用本地DNS,其他情况可能是相反的)。请记住 较低的指标=较高的优先级

请参阅Microsoft支持中的本文 (IPv4路由的自动度量功能的说明

我怀疑这可行,因为路由选择的一部分是然后将接口的源IP设置为具有最高度量优先级(最低编号),因为您没有为所有连接使用相同的IP地址,而双宿主BGP连接会使用相同的源IP,但选择不同的下一跳网关暂挂目标IP。

对于Server,请安装DNS服务并进行有目的/智能的操作,我不同意在Server OS上执行此操作。

17
Jacob Evans

此页面 描述Windows用于执行DNS查询的算法。它的深度不足以为您提供所有正在寻找的答案,但是花点时间嗅探一下,这篇文章应该是您确定特定情况下所需要发生的一切。

8
Evan Anderson

我有完全一样的问题。我花了一天的时间来弄清楚。现在我知道了,它就像一种魅力。

如果您有多个网卡,并且在每个网卡中都指定了DNS服务器。您知道最后将使用什么DNS服务器吗?

好吧,您可以通过练习进行检查。

nslookup 192.168.3.6

这样您就可以看到您的PC实际使用的服务器

问题是-从什么取决于哪个DNS服务器窗口选择使用以及如何更改它。

当我们使用VPN客户端时,我们特别需要它。

qwerty201 中的 answer 是正确的。但是,只有在控制面板中有NIC-网络和共享中心-更改适配器设置-NIC列表时,

仅当您看到负责您的VPN客户端的网卡时,您才可以使用图形方式将您想要使用的dns服务器(在特定网卡上指定)指向Windows。

因此,您转到网络和共享中心->更改适配器设置->高级->高级设置->,然后将您要使用的DNS移至NIC上。 (向上,您需要将其抬起)。

但是,例如,如果您使用Shrew vpn客户端-您将没有任何网卡。

你是做什么。

您打开注册表。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

然后您在子文件夹0000、0001等中查找

DriverDesc = Shrew Soft Virtual Adapter

精细。然后复制到剪贴板

NetCfgInstanceId = {B498E7DE-7257-48F6-AD32-60E470030F05}

现在你去

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage]

然后您打开key = Bind。您会看到这样的列表

\Device\{1DF89CE3-CAAD-4EB7-A53F-AD16BC1D5EFD}
\Device\{70126DBE-B44D-4392-9417-0CABD6E384B1}
\Device\{D5127F8E-E7BB-4661-AE5A-A922614173D0}
\Device\{C44039AB-6801-4A9B-A736-3B12782FF411}
\Device\{85231D0F-CD05-4774-A983-632C5D83AC62}
\Device\{7E87BC81-8C58-4E05-9FA0-7897A6AA5CCE}
\Device\{3A1A3EFC-A9DE-4BCA-BAF6-81C7074487E0}
\Device\{8D41EDFC-04AC-4537-B5D5-0D54EB51A023}

您所要做的就是放到顶部

\Device\{B498E7DE-7257-48F6-AD32-60E470030F05}
\Device\{1DF89CE3-CAAD-4EB7-A53F-AD16BC1D5EFD}
\Device\{70126DBE-B44D-4392-9417-0CABD6E384B1}
\Device\{D5127F8E-E7BB-4661-AE5A-A922614173D0}
\Device\{C44039AB-6801-4A9B-A736-3B12782FF411}
\Device\{85231D0F-CD05-4774-A983-632C5D83AC62}
\Device\{7E87BC81-8C58-4E05-9FA0-7897A6AA5CCE}
\Device\{3A1A3EFC-A9DE-4BCA-BAF6-81C7074487E0}
\Device\{8D41EDFC-04AC-4537-B5D5-0D54EB51A023}

就这样。无需重启。

现在,当您使用vpn连接时,您的Windows将使用在shrew vpn nic中指定的DNS。

4
Alex

因为这可能对您或其他人有帮助,所以您可以禁用Windows循环使用列出的dns,以使dns的使用更加可预测。尝试设置RoundRobin=0 在里面 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parametersreference )禁用dns轮询。

还有一个旋转服务器的“超时”,您也可以尝试将其设置为 zero

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
 ServerPriorityTimeLimit=0
0
higuita