我正在尝试回答以下问题:如果具有多个networking接口,网关和DNS服务器的计算机(例如以太网适配器的接口和VPN连接的接口)尝试与自己通信,但不通过“localhost” 的; 而是通过自己的(本地或合格的)主机名。 哪个接口(或者说,哪个接口的IP地址)将被使用?
问题的背景是,在这种情况下,有时会使用错误的接口(通常,VPN是“错误”的接口),这会导致我们的软件出现问题,例如VPN连接中断。 对于这些情况,我想知道如何影响名称parsing,以便以太网适配器的IP是首选。
我已经改变了不同接口的路由度量,但是这并没有给我任何明显的可观察的行为。 一个笔记本电脑(这是AD的一部分),我做了这个实验,VPN接口的链路本地IP和以太网适配器的IP路由的路由度量最初有相同的度量,例如“路由打印“将显示这两条路线(当然还有更多):
Active Routes: Network Destination Netmask Gateway Interface Metric 1.2.3.4 255.255.255.255 On-link 1.2.3.4 276 2.3.4.5 255.255.255.255 On-link 2.3.4.5 276
假设1.2.3.4是VPN接口的IP,2.3.4.5是networking适配器的IP。 当我用本地或合格的主机名钉住机器时,它将首先parsingVPN适配器的IP。 所以我玩弄了降低或增加一个或另一个接口的指标。 不幸的是,我没有得到明显可观的行为,但我突然得到的是错误。 如果parsing了VPN IP,ping会失败,并显示错误消息,错误信息表明主机2.3.4.5(以太网IP!)响应“目标主机不可达”:
C:\Users\me>ping myhost Pinging myhost.my.company.domain [1.2.3.4] with 32 bytes of data: Reply from 2.3.4.5: Destination host unreachable
所以我的猜测是,由于VPN IP已经解决了,使用了VPN的网关,而VPN当然不知道其他的IP。
下一个ping将总是parsing以太网适配器的IP,并会正常工作
C:\Users\me>ping myhost Pinging myhost.my.company.domain [1.2.3.4] with 32 bytes of data: Reply from 1.2.3.4: bytes=32 time<1ms TTL=128 [...]
甚至在将度量设置回原来的(相同的)值之后,也发生了这种情况。 我想到,我可能在改变到本地IP的路由时出错,但是我应该改变到DNS服务器的路由(或以其他方式改变DNS服务器的优先级),但是现在我决定了停止试验,并开始阅读之前,我搞砸了我的configuration。 似乎我的谷歌foo今天很糟糕,所以我最终在这里发布。
任何帮助(或指向正确的文档)赞赏。 更改主机文件可能会给我想要的,但我更喜欢更便携的解决scheme(最重要的是,我想了解发生了什么!)。
除了路由度量之外,Windows还有一个networking连接优先级的设置。
要更改连接优先级 :
Network and Sharing Center > Adapter Settings Advanced > Advanced Settings Adapter and Bindings选项卡中,将首选连接重新sorting 然后更改界面指标 ,即您的首选路线的指标较低。
Ethernet adapter > Properties > TCP/IPv4 > Properties General > Advanced Automatic metric Interface metric添加值 刷新路由表,通过打开cmd窗口并input:
route /f
然后重新启动 Windows,以确保指标生效。 路由表应该被重build并且分配给路由的度量。
此时,如果仍有问题,请检查您的IPv6指标。
如果接口在重新启动时恢复为自动,则可能需要添加持久路由:
route add -p [destination] [mask] [gateway] [metric] if [interface]