关闭系统DNS缓存的方法取决于你使用的操作系统,下面分别介绍 Windows、macOS 和 Linux 的常见方法。
重要提示:修改系统服务或注册表可能会影响网络功能,建议操作前备份系统或创建还原点,如果你只是想临时清除缓存(而非永久关闭),可以优先使用清空命令(见文末补充)。
Windows 的 DNS 缓存由DNS Client 服务 控制,永久关闭该服务即可。
1、 按Win + R,输入services.msc 并回车。
2、 在服务列表中找到DNS Client(或中文名“DNS 客户端”)。
3、 右键点击它,选择属性。
4、启动类型 选择禁用。
5、 点击停止(使当前缓存的 DNS 立即失效)。
6、 点击应用 ->确定。
注意:关闭此服务后,Windows 将不再缓存任何 DNS 查询结果,每次访问网站都会直接向 DNS 服务器发起请求,可能会导致首次加载网页稍慢,某些依赖此服务的功能(如网络发现、部分 VPN 连接)可能会受影响。
1、 以管理员身份打开命令提示符(cmd)或 PowerShell。
2、 执行以下命令停止并禁用服务:
sc stop "dnscache"
sc config "dnscache" start= disabledmacOS 的 DNS 缓存由mDNSResponder 进程管理。macOS 没有提供图形化开关来永久关闭 DNS 缓存,但可以通过修改系统配置来间接禁用或限制缓存。
打开终端,执行对应版本的命令:
macOS Monterey (12) 及更新版本:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSRespondermacOS Big Sur (11) 或更早版本:
sudo killall -HUP mDNSResponder方法2:通过修改 plist 文件(不推荐,有风险)
需要编辑/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist,增加禁用缓存的参数。此方法需要关闭系统完整性保护(SIP),且每次系统更新后可能被重置,仅建议高级用户尝试,一般用户不建议操作。
Linux 的 DNS 缓存取决于发行版和使用的缓存服务,最常见的是systemd-resolved。
方法1:使用 systemd-resolved(Ubuntu 18.04+、Debian 10+、Fedora 等)
1、 编辑配置文件/etc/systemd/resolved.conf(需要 sudo)。
sudo nano /etc/systemd/resolved.conf2、 找到或添加以下行,确保取消注释并设置:
[Resolve]
Cache=no
# 如果没看到 Cache=,添加这一行3、 保存文件后,重启服务:
sudo systemctl restart systemd-resolved方法2:使用其他缓存服务(如 dnsmasq、nscd)
如果你使用的是dnsmasq 或nscd,可以停止并禁用它们的服务:
针对 dnsmasq sudo systemctl stop dnsmasq sudo systemctl disable dnsmasq 针对 nscd(较老系统常见) sudo systemctl stop nscd sudo systemctl disable nscd
清空 systemd-resolved 缓存:
sudo resolvectl flush-caches
清空 nscd 缓存:
sudo nscd -i hosts
Windows:在服务管理器中查看“DNS Client”服务状态是否为“已停止”且启动类型为“禁用”。
macOS:由于没有可视化开关,一般通过观察网络请求是否不再被缓存(例如修改 hosts 文件后立即生效)来判断。
Linux:检查systemd-resolved 的状态:
systemd-resolve --statistics # 或 resolvectl statistics 如果Cache size 一直为 0 且不增长,说明缓存已关闭。
性能下降:每次 DNS 查询都需要发送到远程服务器,增加延迟(特别是第一次访问)。
增加网络负载:重复请求同一域名会产生更多无效流量。
隐私/安全权衡:虽然关闭缓存可以减少本地数据残留,但通常系统缓存非常安全,如果担心隐私,清空缓存或使用加密 DNS(如 DNS over HTTPS/TLS)可能更合适。
建议:除非你有特殊需求(如调试网络问题、频繁修改 hosts 文件且希望立即生效),否则保持系统默认的 DNS 缓存开启是更优选择,临时清空缓存通常就能解决问题。
文章摘自:https://idc.huochengrm.cn/dns/25525.html
评论
单迪
回复在Windows系统中,通过运行ipconfig /flushdns命令可以关闭系统DNS缓存。