你有没有遇到过这种情况:刚改完网站域名解析,浏览器却还访问着旧服务器;或者公司内网某个服务地址变了,同事电脑能连上,你的却一直连不通?这时候,DNS缓存很可能就是“幕后黑手”。
DNS缓存藏在哪?
每次你输入网址,系统不会每次都去问远程DNS服务器,而是先查本地缓存——Windows、macOS、Linux甚至浏览器自己都会存一份。这些缓存不是永久的,但有效期(TTL)可能从几分钟到几小时不等,期间你看到的IP地址就固定了。
Windows怎么查?
打开命令提示符(CMD)或 PowerShell,输入:
ipconfig /displaydns回车后会刷出长长一串记录,每条都包含域名、记录类型(A、CNAME等)、解析出的IP、剩余存活时间(TTL)。比如看到 www.example.com 对应的是老IP,且 TTL 还剩 120 秒,那再等两分钟试试,或者直接清掉缓存。
macOS 和 Linux 呢?
macOS(12及以上)用的是 mDNSResponder,查缓存得靠点技巧:
sudo killall -INFO mDNSResponder这命令不会重启服务,只是让系统把当前缓存日志输出到 /var/log/system.log,你可以接着用:
log show --predicate 'subsystem == "com.apple.mDNSResponder"' --last 1m | grep 'Resolve'Linux 大多用 systemd-resolved(Ubuntu 18.04+、Fedora 等),运行:
systemd-resolve --statistics能看到缓存总量、命中率;要查具体某条:
systemd-resolve --lookup example.com浏览器也有缓存!
Chrome 和 Edge 地址栏输入:chrome://net-internals/#dns,点“Clear host cache”就能清掉浏览器层的DNS缓存。Firefox 则在 about:networking#dns 页面操作。
分析时注意啥?
别光看IP对不对,重点看三点:
– 记录类型是否符合预期(比如你查 mail.example.com,结果却是 CNAME 指向另一个域名,就得顺藤摸瓜);
– TTL 剩余时间,太短说明上游刚更新,太长可能拖慢故障响应;
– 同一域名多个A记录(负载均衡场景),看看本地到底用了哪几个,是否分布均匀。
家里路由器也缓DNS,有些型号在管理后台能看“DNS缓存表”,登录 192.168.1.1 类似地址翻翻“高级设置→DNS”就能找到。如果公司网络总连错内网地址,不妨也问问IT同事,他们可能在出口防火墙或DNS服务器上做了缓存策略。