我在Windows 7上有一个用户试图访问一个DNS名称为windows.cs的本地服务器。 我们有两个内部的DNS服务器。 DHCP服务器分配用户两个内部DNS服务器作为主要和次要,然后我们的ISP DNS作为第三个DNS服务器。
用户无时不能访问windows.cs网站。 如果我ping它,它说它不能parsing主机名。 我刷新DNScaching,然后当我显示DNScaching时,它具有以下内容:
windows.cs – 名称不存在
但是,如果我使用nslookup,默认查询主DNS服务器(我们的内部),我查询windows.cs,它返回正确的IP地址。
那么为什么Windows不能使用ping来parsing主机名,但是在使用nslookup工具的时候可以这么做呢? 我该如何解决这个问题?
从你所说的话来看,对windows.cs的请求是一次又一次地去往ISP的DNS服务器。 nxdomain的结果然后由Windows的DNS客户端caching,因此用于任何与Web浏览器的重试,ping等。清除caching(ipconfig / flushdns)应强制Windows DNS客户端重试查询,但是不能保证将不会再次进入ISP DNS服务器。
ping无法parsing主机名,但nslookup的原因可能是因为nslookup绕过Windows DNS客户端的低级工具。 它使用你告诉它的任何DNS服务器(默认情况下是第一个),并且即时进行查询。 您可以通过从nslookup提示符(其中host是IP或FQDN)键入server <host>来更改它查询的DNS服务器。
但是,Windows DNS客户端只会对不在其caching中(或已过期)的条目进行查询。 否则,它返回caching的结果。
Windows客户端使用ISP DNS服务器的原因并不明显。 也许它最近无法parsing本地服务器(可能是因为在另一个networking上),也许本地服务器返回错误。 或者,也许在高级TCP / IP设置> DNS下没有正确sorting。
就个人而言,我更喜欢只在工作站上使用本地DNS服务器地址(通过DHCP传播),以简化configuration并避免这样的问题。 我很想知道在台式机上设置ISP DNS服务器的基本原理。 我无法想象有任何有效的性能原因,只要在大多数networking(如果不添加第三个networking的话)上冗余度为2就足够了。
由于nslookup特性和错误, nslookup的结果与ping的结果不同 。 但是,它们与您的主要问题并不相关,因为您违反了规则,即您的备用代理DNS服务器必须提供与您的主DNS名称空间相同的DNS名称空间视图 。 您的ISP的代理DNS服务器不提供与您的LAN上的代理DNS服务器相同的DNS名称空间视图。
看来还有另外一个系统pipe理员已经和我的ISP提供并logging下来了,所以我必须使用它。 谬论。 ☺
TL; DR版本: IPv6在我的情况下导致DNS查询问题,取消激活它解决了DNS查询问题。
我在开发机器上遇到同样的问题。 每当我login到我们的公司networking,我无法解决内部主机名,所有外部主机名/ URI可以解决。 我没有检查在VPN连接上分配的DNS服务器,他们显示公司的DNS服务器被configuration为主要和次要的。 我也可以使用nslookup但必须通过server XXXX手动更改server XXXX才能获得DNSparsing。
最后,我发现IPv6导致了名称parsing的问题:在每个DNS查询中,查询的是IPv6 DNS,而不是IPv4公司的DNS服务器。 停用IPv6后,您必须ipconfig /flushdns否则以前查询的地址可能仍然无法parsing。