Windows使用什么算法来决定它将查询哪个DNS服务器以解析名称?
假设我有几个接口,它们都是活动的,有些没有指定dns服务器,有些被告知自动确定,还有一些是手动指定的(在接口ipv4和接口ipv6中)。
我要求回答这个一般性问题,希望我知道如何在Windows中解决一个更具体的问题--我有两个接口,一个是较低的度量,另一个是手动指定的DNS服务器。nslookup使用此DNS服务器并正确解析名称。但是,除非我手动为其他接口指定DNS服务器,否则所有其他应用程序都无法解析该名称,然后应用程序将使用该服务器。nslookup还使用为此另一个接口指定的DNS服务器。
谢谢
发布于 2009-11-13 04:08:38
如果我没有弄错,它是由网络连接文件夹中的高级设置中的NIC绑定顺序决定的。您可以通过更改各种NIC的绑定顺序并作为测试运行nslookup来验证它。
为了详述我的回答,引用埃文联系的那篇文章埃文联系的那篇文章的话,以下是上述文章的摘录:
DNS客户端服务按以下顺序查询DNS服务器:
步骤1中的首选适配器是先按绑定顺序列出的适配器。
发布于 2016-09-26 20:06:32
在Windows 10中,必须按所需顺序更新每个接口的度量。
参考文献:
我使用了10用于我的局域网,20用于WLAN,100用于VPN接口(我更喜欢本地DNS工作,这可能是对其他人相反)。记住较低公制=较高优先权。
请参阅MicrosoftSupportforIPv4 4路由自动度量特征的一种解释中的本文。
我怀疑这是因为路由选择的一部分是以最高的度量优先级(最低数量)设置接口的源IP,因为您没有对所有连接使用相同的IP地址,而双主BGP连接将使用相同的源IP,但选择不同的下一跳网关等待目的地IP。
对于Server,安装DNS服务并做一些有目的/智能的事情,我不同意在Server上这样做。
发布于 2020-04-02 21:27:32
为了具体回答这个问题,Windows使用与最高级别的网络接口相关联的第一个DNS记录(值较低的InterfaceMetric
具有更高的级别)。下面的示例显示了如何获取和更改该接口的排序值。当没有在接口上配置手动DNS服务器时,Windows依赖任何与网络接口关联的DHCP服务器提供的DNS服务器。
出现此问题的一个常见场景是,当您有一个或多个VPN为为该虚拟网络定义的资源提供DNS服务器时。
但是,由WiFi路由器分配的公共DNS服务器具有先例,或者声称主机不存在,或者使用意外的IP地址进行响应。
要解决这个问题,我们需要通过指定相关的“度量”来明确规定哪个网络接口应该优先。(目前,此指标似乎只能通过PowerShell .(见下文)
网络接口(如虚拟专用网)
变化度量
C:\> Get-NetIPInterface | Select-Object -Property InterfaceAlias, InterfaceMetric | Sort-Object -Property InterfaceMetric
InterfaceAlias InterfaceMetric
-------------- ---------------
vEthernet (DockerNAT) 15
Npcap Loopback Adapter 25
Ethernet 11 25
Local Area Connection* 1 25
Local Area Connection* 2 25
Npcap Loopback Adapter 25
Ethernet 2 35
Wi-Fi 55
Bluetooth Network Connection 65
Loopback Pseudo-Interface 1 75
MY VPN 200 <--- There's my NIC with my fave DNS
vEthernet (Default Switch) 5000
的度量
C:\> Set-NetIPInterface -InterfaceAlias "MY VPN" -InterfaceMetric 10
C:\> Get-NetIPInterface | Select-Object -Property InterfaceAlias, InterfaceMetric | Sort-Object -Property InterfaceMetric
InterfaceAlias InterfaceMetric
-------------- ---------------
MY VPN 10 <--- Awesome!!! My fave DNS is now on top!!
vEthernet (DockerNAT) 15
Npcap Loopback Adapter 25
Ethernet 11 25
Local Area Connection* 1 25
Local Area Connection* 2 25
Npcap Loopback Adapter 25
Ethernet 2 35
Wi-Fi 55
Bluetooth Network Connection 65
Loopback Pseudo-Interface 1 75
vEthernet (Default Switch) 5000
界面计量
测试效果
在本例中,在更改度量值之前,单击具有公共定义IP的本地资源将返回其公共IP (而不是我的VPN的DNS服务器返回的内部IP )。
> ping 10640-TEST
Pinging 10640-TEST.example.com [XX.163.171.155] with 32 bytes of data:
Reply from XX.163.171.155: bytes=32 time=80ms TTL=45
Reply from XX.163.171.155: bytes=32 time=76ms TTL=45
在更改网络接口上的度量之后,我现在看到从与我的VPN关联的DNS服务器返回的预期内部IP地址:
> ping 10640-TEST
Pinging 10640-TEST.example.com [192.168.100.44] with 32 bytes of data:
Reply from 192.168.100.44: bytes=32 time=42ms TTL=127
Reply from 192.168.100.44: bytes=32 time=52ms TTL=127
https://serverfault.com/questions/84291
复制相似问题