麒麟系统域名解析失败时,应依次检查并配置dns:一、临时修改/etc/resolv.conf;二、持久化设置网卡dns;三、修正/nsswitch.conf中hosts行添加dns;四、networkmanager图形配置;五、启用systemd-resolved服务。

如果您在麒麟操作系统中遇到域名无法解析的问题,例如能 ping 通 IP 地址但无法解析 www.baidu.com 等域名,则很可能是 DNS 配置未生效或解析顺序异常。以下是多种可独立实施的 DNS 设置方法:
一、直接修改 /etc/resolv.conf(临时生效)
该方法通过手动写入 nameserver 条目快速指定 DNS 服务器,适用于测试或临时调试,但系统重启或网络服务重载后可能被覆盖。
1、打开终端,执行命令查看当前 DNS 配置:cat /etc/resolv.conf
2、使用管理员权限编辑该文件:sudo nano /etc/resolv.conf
3、在文件末尾添加至少一行 nameserver,例如国内常用公共 DNS:nameserver 114.114.114.114
4、可追加第二行备用 DNS:nameserver 223.5.5.5
5、保存文件并退出编辑器(nano 中按 Ctrl+O 回车保存,Ctrl+X 退出)。
二、修改网卡配置文件(推荐用于静态网络)
该方式将 DNS 设置绑定至特定网络接口,由 NetworkManager 或 network.service 在启动时自动写入 /etc/resolv.conf,具备持久性且不易被覆盖。
1、确认网卡名称,执行:ip link show 或 ls /sys/class/net/
2、编辑对应网卡配置文件,例如 ens33:sudo nano /etc/sysconfig/network-scripts/ifcfg-ens33
3、在文件末尾新增两行:DNS1=114.114.114.114 和 DNS2=223.6.6.6
4、保存后重启网络服务:sudo systemctl restart network
5、验证是否已同步至 resolv.conf:cat /etc/resolv.conf | grep nameserver
三、配置 /etc/nsswitch.conf 解析优先级(关键修复项)
即使 /etc/resolv.conf 已正确填写,若 /etc/nsswitch.conf 中 hosts 行缺失 dns,系统仍将跳过 DNS 查询,仅依赖 /etc/hosts 文件,导致域名解析失败。
1、检查当前 hosts 解析策略:grep hosts /etc/nsswitch.conf
2、若输出为 hosts: files myhostname,则需补充 dns。
3、编辑该文件:sudo nano /etc/nsswitch.conf
4、将原 hosts 行修改为:hosts: files dns myhostname
5、保存后无需重启服务,后续所有域名解析调用即启用 DNS 查询路径。
四、通过 NetworkManager 连接配置(桌面环境适用)
该方法适用于使用图形界面且 NetworkManager 管理网络连接的麒麟桌面版,配置保存于独立连接文件,不受系统级脚本干扰。
1、进入 NetworkManager 配置目录:sudo nautilus /etc/NetworkManager/system-connections/
2、找到当前激活的连接配置文件(如 “Wired connection 1”),右键用文本编辑器打开。
3、在文件末尾新增段落:[ipv4]
4、在其下添加三行:dns=114.114.114.114;223.5.5.5、dns-search=、method=auto
5、保存文件,然后执行:sudo systemctl restart NetworkManager
五、启用 systemd-resolved 服务(V10 及更新版本推荐)
systemd-resolved 是现代 Linux 发行版推荐的 DNS 管理服务,支持缓存、LLMNR、mDNS,并与 NetworkManager 深度集成,可实现统一、稳定的 DNS 策略控制。
1、编辑 resolved 主配置:sudo nano /etc/systemd/resolved.conf
2、取消注释并设置 DNS 行:DNS=114.114.114.114 223.5.5.5
3、取消注释并设置 Domains 行:Domains=~.
4、启用并启动服务:sudo systemctl enable --now systemd-resolved
5、确保 /etc/resolv.conf 指向 resolved 的 stub 接口:sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf










