怎么用命令行清理DNS缓存:Windows、macOS与Linux实操指南
网页打不开、用命提示“无法访问此网站”,令行但换个浏览器或手机热点又正常,清理这类情况很多时候不是实操网络断了,而是指南本机DNS缓存里存着过期的解析记录。域名对应的用命IP地址变了,系统还在用旧地址去连接,令行自然就连不上。清理图形界面里刷新DNS的实操按钮并不总是好找,命令行反而是指南最直接、最可控的用命方式。下面按系统分别说明怎么用命令行清理DNS缓存,令行并给出验证方法和常见失败分支。清理
先明确一点:清理DNS缓存只解决“解析记录过期或损坏”这一类问题。实操如果是指南路由器故障、运营商线路中断、目标网站本身宕机,清缓存不会有任何效果。它的作用是让本机丢掉旧的域名到IP的映射,下次访问时重新向DNS服务器查询。理解这一点,能帮你判断什么时候该用、什么时候不该用。
Windows:ipconfig 是最常用的入口
Windows 系统自带 ipconfig 命令,清理DNS缓存的操作叫 flushdns。以管理员身份打开命令提示符或 PowerShell(开始菜单搜索“cmd”,右键选择“以管理员身份运行”),输入以下命令并回车:
ipconfig /flushdns
成功时会返回一行提示,大意是“已成功刷新 DNS 解析缓存”。如果提示“请求的操作需要提升”,说明当前窗口没有管理员权限,关掉重开即可。注意命令里的斜杠是反斜杠还是斜杠并不影响,但空格必须保留,写成 ipconfig/flushdns 会报错。
执行完可以顺便查看当前缓存内容,确认是否真的被清空:ipconfig /displaydns。这条命令会列出本机缓存的域名记录。清理后立刻执行,通常只会看到少量系统自身产生的条目,而之前访问过的网站记录应该消失。如果列表依旧很长,多半是命令没执行成功,回头检查权限和拼写。
还有一种情况:清完缓存后问题依旧。这时可以再执行 ipconfig /release 和 ipconfig /renew 重新获取IP地址,或者检查是否被 hosts 文件、代理软件、安全软件的DNS防护劫持了解析。hosts 文件位于系统目录下,里面的静态映射优先级高于DNS缓存,清缓存对它无效。
macOS:按系统版本选择对应命令
macOS 清理DNS缓存的命令随版本变化较大,这是很多人踩坑的地方。较新的 macOS(大约从 10.11 及以后)使用:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
输入后会要求输入当前用户密码,注意输入时屏幕不显示字符,这是正常现象,输完直接回车。前半句清理目录服务缓存,后半句通知 mDNSResponder 进程重新加载,两者配合才算完整。只执行其中一条,效果可能不彻底。
如果你使用的是更老的系统版本,命令不一样,例如部分旧版本用 sudo killall -HUP mDNSResponder 即可。由于版本差异较大,具体以你所用系统版本的官方说明或系统界面为准,不必强行套用。执行成功后通常没有任何输出,没有报错就是成功。想验证的话,可以先用 dig 或 nslookup 查询某个域名,再清缓存后重新查询,对比返回结果和查询耗时。
需要提醒:sudo 意味着以管理员权限运行,不要从网上复制来路不明的命令随意粘贴,尤其是带删除、重定向操作的。DNS清理相关的命令本身是安全的,但养成核对命令的习惯没有坏处。
Linux:取决于你用的解析服务
Linux 发行版众多,没有一条通用命令。关键要看系统实际在用哪个 DNS 缓存服务。常见的有 systemd-resolved、nscd、dnsmasq 等。
sudo systemd-resolve --flush-caches,部分新版本命令名改为 resolvectl flush-caches。执行后可用 resolvectl statistics 查看缓存条目数是否归零。sudo systemctl restart nscd,或 sudo nscd -i hosts 只清理 hosts 缓存。sudo systemctl restart dnsmasq。判断自己在用哪种服务,可以先执行 systemctl status systemd-resolved 看状态,或者查看 /etc/resolv.conf 里的 nameserver 指向。配置文件的内容以你当前系统的实际显示为准,不同发行版差异明显。
清理后仍无效怎么办
如果命令行执行成功、缓存也确认清空了,网页还是打不开,按顺序排查这几项:换一个公共DNS服务器试试(在网络设置里手动填写,具体入口以系统界面为准);检查系统时间是否正确,时间偏差过大会导致部分解析和证书校验失败;关闭VPN、代理和带DNS过滤的安全软件再试;用 nslookup 域名 直接查询,看能否拿到IP。若命令行查询正常但浏览器异常,问题多半在浏览器缓存或插件,而不是系统DNS缓存。
小结一下:Windows 用 ipconfig /flushdns,macOS 用 dscacheutil 配合 killall,Linux 按实际解析服务选择对应命令,执行前确认权限、执行后验证结果。把这几条记下来,下次遇到“域名解析异常”就不用重启路由器碰运气了。