Windows如何决定在parsing名称时使用哪个DNS服务器?

Windows使用什么algorithm来决定要查询哪个DNS服务器来parsing名称?

比方说,我有几个接口,都是活动的,有些没有指定DNS服务器,有些是自动确定的,有些是手动指定的(在接口ipv4 AND interface ipv6中)。

我正在寻求这个一般问题的答案,希望我知道如何解决Windows Vista中的一个更具体的问题 – 我有两个接口,一个是较低的指标,一个是手动指定的DNS服务器。 nslookup使用这个 DNS服务器并正确parsing名称。 但是,所有其他应用程序都无法parsing名称,除非我手动为应用程序使用的其他接口指定DNS服务器。 一旦指定,nslookup也使用为其他接口指定的DNS服务器。

谢谢

如果我没有弄错,这是由networking连接文件夹的高级设置中的网卡绑定顺序决定的。 您可以通过更改各种NIC的绑定顺序并运行nslookup作为testing来validation它。

为了扩大我的回答,引用埃文所链接的文章 ,这里是从上述文章摘录:

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

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

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

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

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

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

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

本页介绍了Windows使用的执行DNS查询的algorithm。 它没有足够的深度给你所有你要找的答案,但有一段时间w /嗅探器,这篇文章应该是所有你需要确定在你的具体情况发生了什么。

Windows 10周年纪念版,并且必须按所需顺序更新每个接口的度量标准。

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

来源answers.microsoft.com

我用了10个局域网,20个用于WLAN,100个用于VPN接口(我更喜欢本地DNS在工作,这可能会反过来)。 请记住度量值较低=优先级较高

我有完全一样的问题。 我花了一天的时间试图找出答案。 现在我知道,它就像一个魅力。

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

那么你可以通过实践来检查它。

nslookup 192.168.3.6 

所以你看到你的电脑实际使用的服务器

问题是 – 从什么取决于什么DNS服务器窗口select使用,以及如何改变它。

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

qwerty2010的答案是对的,正确的。 但是,只有在控制面板中有NIC时才能使用它 – networking和共享中心 – 更改适配器设置 – nics列表

只有当你看到负责VPN客户端的networking时,你才可以使用graphics方式来指向你想要使用的dns服务器(在特定的nic上指定)的窗口。

所以你去networking和共享中心 – >更改适配器设置 – >高级 – >高级设置 – >和你想要使用的DNS向上移动的DNS。 (你需要把它举起来)。

但是,如果你使用Sh vpn客户端 – 你将不会有任何nics。

你是做什么。

您打开registry。

 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。

因为这可能会帮助你或其他人,你可以禁用列出的DNS的窗口循环使用,使dns的使用更容易预测。 尝试在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters ( 引用 )中设置RoundRobin=0以禁用dns round-robing。

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

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

它不是随机决定的。 你连接到一台路由器,它从拥有DNS服务器的公司获得IP。 他们得到您的请求,除非您手动将IP更改为另一个DNS,例如: OpenDns 。 或者,也许你决定拥有自己的DNS服务器。 那也行。 只要在networking中心inputIP地址,一切都会好的。 是的,你必须手动设置这些。

您也可以在C:\Windows\System32调整一个名为“hosts”的文件,但不能包含扩展名。 它允许您将URL请求redirect而不是发送到标准DNS。 到本地服务器(必须运行并监听端口80)