我有一个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(需要重启)