DNS缓存服务怎么关闭?不同系统实操指南

你有没有遇到过:刚改完网站域名解析,浏览器却还显示旧页面?或者公司内网地址突然打不开,清了浏览器缓存也没用?这时候,问题很可能出在本地 DNS 缓存上——它像个小记事本,把最近查过的域名和对应 IP 记下来,省得反复问 DNS 服务器。但记太牢,反而会拖后腿。

Windows 怎么关 DNS 缓存?

Windows 自带的 DNS 客户端服务(Dnscache)默认开启,缓存时效通常为 30 分钟到数小时不等。想立刻清空或临时停掉它:

打开命令提示符(管理员权限),输入:

ipconfig /flushdns

这条命令不会关闭服务,只是清空当前缓存。如果想彻底停掉 DNS 缓存服务(比如排查网络问题时):

net stop dnscache

需要恢复时再运行:

net start dnscache

macOS 怎么关 DNS 缓存?

不同版本命令不一样,别硬套:

macOS Monterey(12)及更新版本:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

macOS Big Sur(11)到 Catalina(10.15):

sudo killall -HUP mDNSResponder

macOS Mojave(10.14)及更早:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

注意:这些命令是刷新缓存,不是永久禁用。macOS 没有常规方式“永久关闭”DNS 缓存服务,也不建议关——系统依赖它做本地 Bonjour 解析、iCloud 同步等。

Linux(常见发行版)怎么关?

Linux 不自带统一 DNS 缓存服务,是否启用取决于你装了什么。最常见的是 systemd-resolved(Ubuntu 17.04+、Fedora、Debian 10+ 默认启用):

查看状态:

sudo systemctl status systemd-resolved

临时停止:

sudo systemctl stop systemd-resolved

永久禁用(重启也不启动):

sudo systemctl disable systemd-resolved

顺手删掉软链接(避免 NetworkManager 冲突):

sudo rm /etc/resolv.conf
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

如果你用的是 dnsmasqunbound,就直接停对应服务,比如:sudo systemctl stop dnsmasq

浏览器也有自己的 DNS 缓存

Chrome、Edge、Firefox 都会单独缓存 DNS 查询结果,时间从 1 分钟到 1 小时不等。关系统缓存 ≠ 关浏览器缓存。

Chrome/Edge:在地址栏输入 chrome://net-internals/#dns,点「Clear host cache」;

Firefox:在地址栏输入 about:networking#dns,点「Clear DNS Cache」;

Safari:需先开启开发菜单(偏好设置 → 高级 → 勾选「在菜单栏中显示“开发”菜单」),然后「开发 → 清除 DNS 缓存」。

小提醒:关 DNS 缓存不是日常操作,它会让每次上网多花几毫秒去查域名。只有在调试、切换 DNS、验证解析生效时才需要动手。平时清一清浏览器缓存 + ipconfig /flushdns,基本够用。