麒麟系统DNS解析异常时,应依次执行五步操作:一、用systemd-resolved刷新缓存;二、重启该服务;三、重载NetworkManager;四、重启network服务;五、检查并注释/etc/hosts中错误条目。
银河麒麟系统出现网页打不开、软件源更新失败或域名解析异常时,大概率是DNS缓存中存了过期或错误的IP地址,必须针对性清理才能恢复网络访问能力。
该方法适用于麒麟V10 SP3及以上桌面/服务器版,默认启用 systemd-resolved 作为DNS解析器,执行后立即清空内存中缓存的DNS记录,无需重启服务。
第一步:打开终端,确认服务运行状态:【sudo systemctl is-active systemd-resolved】。若返回 active 表示服务正常;若为 inactive,则跳过本方法,直接进入“重启 systemd-resolved 服务”步骤。
第二步:执行刷新命令:【sudo systemd-resolve --flush-caches】。注意命令中 resolve 拼写为 resolve,不是 resolves 或 resolver,输错将报 command not found。
第三步:验证是否生效,运行 【sudo systemd-resolve --statistics | grep "Cache"】,观察输出中 “Cache size” 是否归零或明显减少。
当 --flush-caches 命令无响应、提示 “Failed to flush cache” 或 systemctl status 显示 service crashed 时,必须强制重启服务以重置整个解析器状态。
方法一(推荐):
① 停止服务:【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】,但该方式不保证服务在下次开机自动启动,仅适合临时排查。
此操作专用于桌面环境(如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,该方法无效。
适用于未启用 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 不参与DNS缓存机制,但若其中存在形如 “192.168.1.100 example.com” 的错误静态映射,系统会优先走 hosts 解析,导致域名始终指向错误IP。
用文本编辑器打开:【sudo nano /etc/hosts】
逐行检查是否有与当前故障域名匹配的条目,例如访问不了 www.baidu.com,就查找含 baidu.com 的行。
对确认错误的行,在行首添加 # 号注释掉,保存退出。切勿直接删除整行,防止误删系统关键映射(如 127.0.0.1 localhost)。