优先判断DNS管理机制:cat /etc/resolv.conf查看头部注释;若为systemd-resolved则编辑/etc/systemd/resolved.conf,填入DNS=114.114.114.114 223.5.5.5并重启服务;若为NetworkManager则用nmcli配置连接级DNS并设ignore-auto-dns yes。

您正在使用麒麟操作系统,需要通过终端命令快速、准确地修改系统DNS服务器地址,解决网页打不开、域名解析慢或部分网站无法访问的问题。不同版本和网络管理机制下,DNS配置路径差异显著,错误操作可能导致解析失效或配置被自动覆盖。
确认当前DNS管理机制
执行以下命令查看 /etc/resolv.conf 文件头部注释:
cat /etc/resolv.conf
若首行显示 # Generated by NetworkManager,说明DNS由NetworkManager接管;若显示 # Managed by systemd-resolved,则由systemd-resolved服务控制;若无任何生成标记且内容为手动写入的nameserver,则可能处于裸配置状态。这一步决定后续该走哪条路径,跳过此判断直接改文件可能导致配置被覆盖。
方法一:修改 systemd-resolved 配置(推荐用于V10 SP1+默认环境)
该方式直接控制麒麟OS默认启用的 systemd-resolved 服务,配置写入主文件后永久生效,优先级高于其他所有方法,适用于绝大多数现代部署场景。
第一步:用管理员权限打开配置文件:sudo vim /etc/systemd/resolved.conf
第二步:定位到[Resolve]段落,取消DNS=行前的#注释符,并填入至少两个可用DNS地址,多个地址用空格分隔,例如:DNS=114.114.114.114 223.5.5.5。若原FallbackDNS=行也被注释,一并取消并填入备用地址,如FallbackDNS=8.8.8.8 1.1.1.1——这能避免主DNS宕机时完全失联。
第三步:保存退出(vim中按ESC,输入:wq回车)。
第四步:重载并重启服务:sudo systemctl daemon-reload && sudo systemctl restart systemd-resolved。这一步不可跳过,否则新配置不会加载。
第五步:验证是否生效:systemd-resolve --status | grep "DNS Servers"。输出中必须明确显示您填入的IP地址,且不能为空行。
方法二:用 nmcli 配置 NetworkManager 连接级 DNS
当您在桌面环境中点击网络图标能弹出连接设置时,此方法最稳妥,它把DNS绑定到具体连接,避免被DHCP自动覆盖。
方法1:列出所有连接名称
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
nmcli con show,记下目标连接名,常见为“有线连接 1”或“Wired connection 1”。
方法2:为该连接设置DNS并禁用DHCP分发
nmcli con mod "有线连接 1" ipv4.dns "114.114.114.114 223.6.6.6"
【关键】必须禁用 DHCP 自动分发 DNS,否则上一步配置会在下次联网时被清空:nmcli con mod "有线连接 1" ipv4.ignore-auto-dns yes
方法3:重启连接使配置落地
nmcli con down "有线连接 1" && nmcli con up "有线连接 1"。这一步必须执行,否则DNS不会写入/etc/resolv.conf。
方法三:直接编辑 /etc/resolv.conf(仅限临时调试)
该方法可快速生效,但属于临时修改;若系统启用了 systemd-resolved 或 NetworkManager,该文件可能被自动覆盖,仅建议用于验证或调试场景。
1、以 root 权限打开文件:sudo vim /etc/resolv.conf
2、清空原有内容,写入两行有效 nameserver 条目,例如:
nameserver 114.114.114.114
nameserver 223.6.6.6
3、为防止被 NetworkManager 覆盖,可设置文件为不可修改:sudo chattr +i /etc/resolv.conf(如需后续修改,先执行sudo chattr -i /etc/resolv.conf)。

















