Fedora DNS 缓存刷新与排查
Fedora 上本地域名解析还是旧的,通常有以下几种常见原因和解决方法(按概率从高到低排序):
1. 最常见:浏览器或应用程序自己的缓存(2024–2026 年 Fedora 主流情况)
快速解决办法(推荐先试这个):
关闭浏览器 → 重新打开
或在浏览器中输入以下地址清缓存(以 Chrome 为例):
chrome://net-internals/#dns
点击 Clear host cache
chrome://net-internals/#sockets
点击 Flush socket pools(清连接池,推荐一起做)。
→ 这会清空 Chrome 内部保存的所有域名 DNS 记录,下次访问任何网站都会重新解析(包括你关心的那个域名)。
Firefox 目前没有直接清 DNS 缓存的界面,建议直接重启浏览器,或等几分钟(通常缓存很短)。
命令行测试是否真的是浏览器问题:
# 用系统自带工具测(基本不缓存)
dig example.com # 或你那个域名
host example.com
nslookup example.com # 8.8.8.8 # 强制用公共 DNS
# 如果上面三个是对的,但浏览器还是错的 → 浏览器缓存
2. 检查并刷新 systemd-resolved(Fedora 33+ 推荐方式,如果启用了它)
先判断你是否在使用 systemd-resolved:
systemctl status systemd-resolved
ls -l /etc/resolv.conf # 如果是指向 /run/systemd/resolve/stub-resolv.conf 就是用了
如果是用的,执行以下命令刷新缓存:
# 现代 Fedora 推荐写法(Fedora 35+ 更常用 resolvectl)
sudo resolvectl flush-caches
# 老一点的 Fedora 也可用这个(仍然兼容)
sudo systemd-resolve --flush-caches
查看是否真的有缓存:
resolvectl statistics
# 看 Cache Size 有没有你的域名相关记录
重启服务(核弹级,但很有效):
sudo systemctl restart systemd-resolved
3. 如果你装了 nscd(比较少见,但有些人会装)
# 检查是否安装并运行
systemctl status nscd
# 有的话直接清
sudo systemctl restart nscd
# 或者更精准只清 hosts 缓存
sudo nscd -i hosts
4. 其他常见坑(强烈建议逐个排除)
/etc/hosts 文件里有旧记录没删干净(最常被忽略)
cat /etc/hosts | grep 你那个域名
路由器/上级 DNS 缓存(尤其是家用路由器)
重启路由器,或者在路由器后台手动刷新 DNS 缓存(不同品牌界面不同)
NetworkManager 缓存问题(极少见)
sudo nmcli con reload
sudo nmcli con up 你当前的连接名 # 比如 "Wired connection 1"
你用的 DNS 服务器本身没同步(概率低,但要验证)
dig @8.8.8.8 你那个域名
dig @1.1.1.1 你那个域名
如果公共 DNS 已经正确了,那一定是你本地的问题。
总结常用一键排查命令(按顺序执行)
# 1. 最快排除浏览器
# 关掉所有浏览器重新开,或清 chrome://net-internals/#dns
# 2. 系统级清(如果用了 systemd-resolved)
sudo resolvectl flush-caches
# 3. 强制用公共 DNS 测试
dig +short 你域名 @8.8.8.8
# 4. 查看本地真实解析
getent hosts 你域名
# 5. 看 resolv.conf 到底用谁
cat /etc/resolv.conf
绝大多数 Fedora 用户遇到这种情况,关浏览器重开 或 resolvectl flush-caches 就能解决。