Windows服务器忽略专用接口上的DNSparsing

我有一个Windows 2012服务器有两个接口 – 公共互联网面临和私人。

专用接口使用我们的内部DNS服务器。 这个接口没有网关。 静态IP – 不是DHCP。

我想禁用公共接口,因为我们使用传出stream量的代理。

禁用它,我发现DNSparsing失败:

  • 我无法ping通foo.external.com – 找不到主机

  • 但是,我可以nslookup,注意到它连接到我们的内部DNS,并成功parsingfoo.external.com

  • ipconfig / displaydns显示正确的条目。 我完全困惑为什么ping不只是使用这个条目。

  • 如果我手动添加一个条目到本地主机文件,对于“1.1.1.1 foo”,作为一个实验,并尝试ping富,它失败 – 无法parsing主机。 同foo.external.com和“foo.external.com”。 屏蔽“foo.external.com”或“foo.external.com”。 也失败了。

  • 但是,如果我重新启用公共界面,那么一切正常。 包括hosts文件。 我可以ping“富”(分辨率方面)。 禁用它,并停止再次工作。

我试过所有的重新启动,ipconfig / flushdns,nbtstat -R的东西。

a)为什么ping(和我们的应用程序)在公共接口被禁用时无法正确地解决问题,尽pipeWindows能够对其DNS服务器说话并caching结果(如ipconfig / displaydns所示)。

b)为什么专用接口的hosts文件被忽略?

非常感谢。

一个快速的谷歌search返回这个用户有同样的问题:

用户进行了Wireshark捕获,发现当试图ping主机时,没有执行DNS查询。

这种行为的解释是:

我相信nslookup在DNS端口上打开winsock连接并发出查询,而ping使用DNS客户端服务。 你可以尝试停止这项服务,看看这是否有所作为。

一些将重新初始化各种networking状态的命令:

将WINSOCK条目重置为安装默认值: netsh winsock reset catalog
将TCP / IP堆栈重置为安装默认值: netsh int ip reset reset.log
刷新DNSparsing器caching: ipconfig /flushdns
续订DNS客户端注册并刷新DHCP租约: ipconfig /registerdns
刷新路由表: route /f (需要重启)