Saf*_*ado 9 domain-name-system windows ping nslookup
我在 Windows 7 上有一个用户试图访问 DNS 名称为 windows.cs 的本地服务器。我们有两个内部 DNS 服务器。DHCP 服务器将两个内部 DNS 服务器分配给用户作为主要和次要的,然后我们的 ISP 的 DNS 作为第三级 DNS 服务器。
用户有时无法访问 windows.cs 网站。如果我 ping 它,它说它无法解析主机名。我刷新了 DNS 缓存,然后当我显示 dns 缓存时,它具有以下内容:
windows.cs - 名称不存在
然而,如果我使用 nslookup,它默认查询主 DNS 服务器(我们的内部服务器)并查询 windows.cs,它会返回正确的 IP 地址。
那么为什么 Windows 不能使用 ping 来解析主机名,而在使用 nslookup 工具时却可以呢?我该如何解决这个问题?
Ale*_*bes 12
从你所说的看来,windows.cs 的请求会时不时地发送到 ISP 的 DNS 服务器。然后,Windows 的 DNS 客户端会缓存 nxdomain 结果,因此可用于使用 Web 浏览器、ping 等进行的任何重试。清除缓存 (ipconfig /flushdns) 应强制 Windows DNS 客户端重试查询,但不能保证它不会再去 ISP DNS 服务器。
ping 无法解析主机名而 nslookup 可以解析的原因是因为 nslookup 是一种绕过 Windows DNS 客户端的低级工具。它使用您告诉它的任何 DNS 服务器(默认情况下是第一个),并即时执行查询。您可以通过server <host>
在 nslookup 提示符下键入来更改它查询的 DNS 服务器,其中 host 是 IP 或 FQDN。
但是,Windows DNS 客户端只会查询不在其缓存中(或已过期)的条目。否则它返回缓存的结果。
Windows 客户端使用 ISP DNS 服务器的原因并不是很明显。也许它最近无法解析本地服务器(可能是由于在另一个网络上),也许本地服务器正在返回错误。或者,可能在高级 TCP/IP 设置 > DNS 下没有正确排序。
我个人更喜欢只在工作站上使用本地 DNS 服务器地址(由 DHCP 传播),以简化配置并避免此类问题。我很想知道在台式机上设置 ISP DNS 服务器背后的基本原理。我无法想象有任何有效的性能原因,并且就大多数网络上的冗余而言,两个就足够了(如果不添加第三个)。