答案是:需按系统分别执行命令清理dns缓存。windows用管理员运行ipconfig /flushdns;macos ventura及以上用sudo killall -hup mdnsresponder,monterey及更早用sudo dscacheutil -flushcache; sudo killall -hup mdnsresponder;linux依服务运行情况执行systemd-resolve --flush-caches或重启dnsmasq/nscd;浏览器需在设置中清除缓存与cookie。

网页打不开、加载慢或跳转到错误地址时,很可能是本地电脑保存了过期或错误的域名解析记录,这些记录就存放在DNS缓存里;不清理它,浏览器和系统会继续用旧IP去连接,导致问题持续存在。
Windows:用管理员权限运行 ipconfig /flushdns
这是最直接、最常用的方法,适用于所有现代Windows版本(Win7至Win11),但必须以管理员身份运行,否则命令会执行失败且无提示。
第一步:按 Win + R 打开“运行”对话框。
第二步:输入 cmd,然后同时按 Ctrl + Shift + Enter —— 这一步不能只按回车,否则是普通权限,【ipconfig /flushdns 将静默失败】。
第三步:在弹出的黑色窗口中,准确输入 ipconfig /flushdns(注意斜杠是英文半角,前后无空格),回车。
第四步:看到“已成功刷新 DNS 解析器缓存”即完成。若返回“拒绝访问”或无任何输出,说明权限不足,需重试第二步。
macOS:按系统版本选终端命令
macOS 不同版本底层机制不同,统一用 killall 命令可能无效,必须区分处理。
方法一(Ventura 13.0 及更新系统):
打开终端 → 输入 sudo killall -HUP mDNSResponder → 回车 → 输入登录密码(不显示字符,输完直接回车)。
方法二(Monterey 12.x 及更早系统):
在终端中依次执行两行命令:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
两次都需输入密码,缺一不可。
注意:执行后无成功提示,但可通过 dscacheutil -cachedump -entries Host 查看缓存是否变为空来验证。
Linux:先确认服务类型再清除
Linux 是否有系统级DNS缓存,取决于你是否启用了特定服务;没启用就不用清,强行操作无效。
① 先检查 systemd-resolved 是否运行:
systemctl is-active systemd-resolved → 若返回 active,继续下一步;若返回 inactive,跳过此方法。
② 清除缓存:
sudo systemd-resolve --flush-caches
③ 若返回“command not found”,说明系统用的是 dnsmasq:
先查状态:sudo systemctl is-active dnsmasq → 若为 active,则执行:sudo systemctl restart dnsmasq。
④ 若用的是 nscd:
sudo nscd -i hosts —— 这个命令只清 hosts 缓存,【不会影响 DNS 查询结果】。
验证缓存是否真清空
Windows 用户可在同一管理员命令提示符中,执行:
ipconfig /displaydns
若输出末尾显示“DNS 解析程序缓存为空。”,说明清理生效。
macOS 用户执行:
sudo dscacheutil -cachedump -entries Host | head -10
若几乎无输出或仅剩 localhost 条目,即为成功。
Linux 用户对 systemd-resolved 执行:
systemd-resolve --statistics
观察 “Current Cache Size” 是否接近 0。











