熟悉 DNS 解析原理的朋友都知道,为了减少服务器的压力和客户端的重复劳动,DNS 客户端在获取到递归结果后都会将 FQDN 对应的 IP 缓存到本地进行存储。之所以进行缓存我认为主要有两个原因:
- 公网域名的 IP 不会随时变化,就算有 CDN 也可以进行一定时间的缓存
- 将 IP 缓存下来可以免去解析过程,节约查询时间
但在有些情况下,DNS 缓存机制也会给我们的工作造成一些困扰。例如:前端开发的测试工作,除了清理浏览器缓存,还要清理 DNS 缓存以保证解析到正确的 IP 上。对于像我这样的 IT Pro 来说,在排错的时候也经常会忽略 DNS 缓存造成的影响。
当然,我们可以使用 ipconfig /displaydns 命令来查看缓存命中的是否是正确 IP,但输出的本文结果实在太长了点。不过这也难不倒我们,在必要时,我们其实可以使用 PowerShell 来查看 DNS 缓存中 FQDN 所对应的 IP 地址:
Get-DnsClientCache -Entry sysgeek.cn
注意:Get-DnsClientCache PowerShell cmdlet 只适用于 Windows 8 和 Server 2012 及更新版本。
要获取更详细的用法可以使用如下命令查看帮助信息:
Get-Help Get-DnsClientCache -Detailed