银河麒麟系统DNS缓存清理方法
银河麒麟系统因DNS缓存异常会导致网页打不开或解析报错。清理方法具体步骤如下:首先使用systemd-resolved刷新缓存,然后重启该服务,再重载NetworkManager,接着重启network服务,最后注释/etc/hosts中的干扰条目。按照上述步骤依次操作即可恢复网络。
银河麒麟系统突然打不开网页、软件源更新失败,或者域名解析报错——这类问题十有八九是DNS缓存里存了过期或错误的IP地址。别慌,这不是硬件故障,只需要针对性清理一下DNS缓存,网络就能恢复正常。下面这五步操作,按顺序执行,基本能解决问题。

用 systemd-resolved 刷新本地DNS缓存
这个方法适用于麒麟V10 SP3及以上版本的桌面版或服务器版——它们默认用 systemd-resolved 作为DNS解析器。执行命令后,内存里缓存的DNS记录会立即清空,不需要重启服务。
第一步:打开终端,先确认服务是否在运行:【sudo systemctl is-active systemd-resolved】。如果返回 active,说明服务正常;如果返回 inactive,那直接跳到下一步“重启 systemd-resolved 服务”。
第二步:执行刷新命令:【sudo systemd-resolve --flush-caches】。注意拼写——是 resolve,不是 resolves 或 resolver,敲错了会报 command not found。
第三步:验证是否生效:运行 【sudo systemd-resolve --statistics | grep "Cache"】,观察输出中 “Cache size” 是否归零或明显减少。如果没变化,接着往下走。
重启 systemd-resolved 服务
有时候 --flush-caches 命令没响应,或者提示 “Failed to flush cache”,甚至 systemctl status 显示服务崩溃了。这时候必须强制重启,才能把整个解析器状态重置干净。
方法一(推荐):
① 停止服务:【sudo systemctl stop systemd-resolved】
② 启动并设为开机自启:【sudo systemctl start systemd-resolved && sudo systemctl enable systemd-resolved】
③ 检查运行状态:【sudo systemctl status systemd-resolved | grep "active (running)"】,确保输出里有绿色的 active (running) 字样。
方法二(快捷):直接执行 【sudo systemctl restart systemd-resolved】。这个方式虽然快,但不会保证下次开机自动启动,只适合临时排查用。
重载 NetworkManager 刷新DNS配置
这个操作专门针对桌面环境(比如GNOME、KDE),前提是网络连接由 NetworkManager 管理。执行后,它会触发DNS配置重读,更新 /etc/resolv.conf 并刷新内部缓存,整个过程不会中断网络连接。
执行重载命令:【sudo systemctl reload NetworkManager】
查看日志确认DNS动作已触发:【journalctl -u NetworkManager | grep -i "dns" | tail -n 3】,应该能看到类似 “Updating DNS configuration” 的记录。
检查 /etc/resolv.conf 是否被更新为 127.0.0.53:【cat /etc/resolv.conf | grep "127.0.0.53"】。如果没匹配上,说明 NetworkManager 没接管DNS,这个方法无效,需要换别的路子。
重启 network 服务(传统网络栈适用)
如果服务器没启用 NetworkManager,或者系统是精简部署、手动配置网络的,那就要用传统方式。重启 network.service 会重建整个网络协议栈,包括DNS解析链路。
停止服务:【sudo systemctl stop network】
启动服务:【sudo systemctl start network】
检查 nameserver 是否已写入 resolv.conf:【grep nameserver /etc/resolv.conf】。如果输出为空,需要手动编辑 /etc/sysconfig/network-scripts/ifcfg-* 文件,补全DNS配置。
检查并注释 /etc/hosts 中干扰条目
最后一步,别忽略 /etc/hosts 文件。它本身不参与DNS缓存机制,但里面如果存在类似 “192.168.1.100 example.com” 这样的错误静态映射,系统会优先走 hosts 解析,导致域名始终指向错误的IP地址。
用文本编辑器打开:【sudo nano /etc/hosts】
逐行检查,有没有与当前故障域名匹配的条目——比如访问不了 www.baidu.com,就查找含 baidu.com 的行。
确认错误的行,在行首添加 # 号注释掉,保存退出。注意:千万不要直接删除整行,万一误删了系统关键映射(比如 127.0.0.1 localhost),后果更麻烦。
