You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法配置备用DNS服务器:Network Manager不应用手动设置的DNS问题

解决Network Manager DNS配置不生效的问题

看起来你遇到了Network Manager DNS配置显示正常但实际解析异常的典型问题——这种情况通常是DNS服务链里某一环没有同步配置导致的,我给你梳理几个针对性的排查和解决步骤:

1. 强制Network Manager忽略DHCP提供的DNS

你选了「仅自动(DHCP)地址」,这个选项的逻辑是DHCP获取IP,但手动指定DNS,但很多时候Network Manager默认会叠加DHCP返回的DNS服务器。你可以通过命令强制忽略DHCP的DNS:

# 修改有线连接1的配置,忽略自动获取的DNS
nmcli con mod "有线连接1" ipv4.ignore-auto-dns yes
# 重启连接让配置生效
nmcli con down "有线连接1" && nmcli con up "有线连接1"

之后再用nmcli con show "有线连接1" | grep ipv4.dns确认你的10.1.0.16是否在配置里,同时nmcli con show "有线连接1" | grep ipv4.ignore-auto-dns应该显示yes。

2. 验证systemd-resolved的实际DNS路由

虽然systemd-resolve --status显示配置正确,但实际解析可能走了不同的链路。你可以用以下命令直接测试systemd-resolved的解析行为:

resolvectl query internal.address

如果输出里没有显示使用10.1.0.16作为DNS服务器,那说明systemd-resolved没有同步Network Manager的配置。此时可以重启systemd-resolved服务:

sudo systemctl restart systemd-resolved

重启后再用systemd-resolve --status查看对应有线连接的DNS服务器列表,确认10.1.0.16在首位。

3. 检查实际生效的resolv.conf文件

不要直接编辑/etc/resolv.conf——它通常是软链接到systemd-resolved或Network Manager管理的文件。你可以查看实际生效的配置:

# 查看systemd-resolved管理的真实resolv.conf
cat /run/systemd/resolve/resolv.conf

如果这个文件里没有10.1.0.16,说明配置没有同步到systemd-resolved,此时可以尝试让Network Manager直接接管resolv.conf:

# 修改Network Manager的全局DNS配置
sudo nmcli general set dns-mode default
# 重启Network Manager
sudo systemctl restart NetworkManager

之后再检查/etc/resolv.conf的软链接目标,应该指向/run/NetworkManager/resolv.conf,里面会包含你手动指定的DNS服务器。

4. 跟踪DNS解析的完整过程

如果以上步骤都没解决,用dig的跟踪功能定位问题环节:

dig internal.address +trace

这个命令会显示解析请求从根域名服务器到最终DNS服务器的完整路径,你可以看到请求是否真的发到了10.1.0.16。如果没有,可能是系统的DNS优先级配置有问题,检查/etc/nsswitch.conf里的hosts行,确保resolve或dns的顺序正确(通常hosts: files resolve dns是合理的)。

补充说明

你提到dig @10.1.0.16 internal.address能正常解析,说明DNS服务器本身是没问题的,问题肯定出在系统的DNS路由或配置同步环节,按照上面的步骤排查应该能解决。

内容的提问来源于stack exchange,提问作者Daniel Agans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:44:03