要确认麒麟操作系统当前实际生效的DNS服务器地址,需依次检查/etc/resolv.conf、systemd-resolved服务状态及配置、NetworkManager连接设置、网卡配置文件以及/nsswitch.conf中的hosts解析顺序。

如果您需要确认麒麟操作系统当前实际生效的DNS服务器地址,则必须检查系统中多个可能被读取的配置文件与服务状态。以下是查询此配置的具体步骤:
一、查看 /etc/resolv.conf 文件内容
该文件是系统解析域名时最直接读取的DNS配置源,多数命令行工具(如 ping、curl、nslookup)均以此为默认依据。但需注意,该文件可能是符号链接或由服务动态生成,其内容未必代表最终生效配置。
1、在终端中执行命令:cat /etc/resolv.conf
2、观察输出是否包含 nameserver 行,例如 nameserver 114.114.114.114
3、若首行含注释如 # Generated by NetworkManager 或 # Managed by systemd-resolved,则表明该文件由对应服务控制,真实配置位于其他位置。
二、检查 systemd-resolved 服务状态及配置
麒麟OS V10 SP1 及后续版本默认启用 systemd-resolved 服务,/etc/resolv.conf 往往是其符号链接。此时 DNS 实际由 /etc/systemd/resolved.conf 控制,且可通过 resolved 查询接口获取运行时配置。
1、确认服务是否运行:systemctl is-active systemd-resolved
2、若返回 active,执行:systemd-resolve --status
3、在输出中查找 DNS Servers: 和 Current DNS Server: 字段,其值即为当前生效的上游DNS。
4、同时查看主配置文件:cat /etc/systemd/resolved.conf | grep -E "^(DNS|FallbackDNS)="
三、验证 NetworkManager 管理的连接级 DNS 设置
当系统使用图形界面且网络由 NetworkManager 管理时,DNS 配置优先从连接定义中读取,并可能覆盖 /etc/resolv.conf。该方式对桌面用户最为常见,且配置独立于物理网卡。
1、列出所有网络连接:nmcli connection show
2、选取当前激活的连接(如 有线连接 1 或 Wired connection 1),执行:nmcli connection show "有线连接 1" | grep -i dns
3、重点检查 ipv4.dns、ipv4.ignore-auto-dns 和 ipv4.dhcp-client-id 字段值。
4、若需查看完整 IPv4 配置块,运行:nmcli -f ipv4 connection show "有线连接 1"
四、检查网卡配置文件中的静态 DNS 定义
对于关闭 NetworkManager、启用传统 network.service 的服务器环境,DNS 设置通常写入网卡脚本文件,该配置在系统启动或网络服务重载时写入 /etc/resolv.conf,具备高持久性。
1、确认网卡名称:ip -br link | awk '{print $1}'
2、查找对应配置文件路径,常见位置为:/etc/sysconfig/network-scripts/ifcfg-网卡名
3、查看其中 DNS 相关字段:grep -E "^DNS[12]=" /etc/sysconfig/network-scripts/ifcfg-ens33
4、若存在 DNS1= 或 DNS2= 行,其值即为此接口绑定的 DNS 地址。
五、审查 /etc/nsswitch.conf 中的 hosts 解析顺序
即使 DNS 服务器地址已正确写入,若 /etc/nsswitch.conf 中 hosts 行未包含 dns,系统仍将跳过 DNS 查询,仅依赖 /etc/hosts 文件,导致看似“DNS 配置存在却无法解析域名”。
1、执行命令查看当前策略:grep ^hosts /etc/nsswitch.conf
2、标准应为:hosts: files dns myhostname
3、若输出中缺失 dns(例如仅显示 hosts: files myhostname),则 DNS 解析路径未启用。
4、该文件不决定 DNS 地址本身,但决定系统是否调用 DNS 服务进行查询。

















