初始 DNS 配置该改哪里
信创桌面与服务器的 DNS 通常由 NetworkManager 下发:真正的配置位置在连接的 ipv4.dns 属性里,写入后由服务生成 /etc/resolv.conf。直接编辑 /etc/resolv.conf 看起来很有效,但连接重新激活或重启网络后会被覆盖回去,这是「配置不生效」的高频原因。理清「连接配置 → 生成 resolv.conf」这层关系,排查 DNS 问题就不容易跑偏。
基本信息
| 配置入口 | nmcli con mod <连接名> ipv4.dns,或 ifcfg 文件的 DNS1/DNS2 |
|---|---|
| 查看命令 | nmcli dev show | grep DNS、cat /etc/resolv.conf、resolvectl status |
| 生效方式 | nmcli con up <连接名> 或 nmcli con reload |
| 系统解析器 | NetworkManager、systemd-resolved 或直接写 resolv.conf,三选一 |
| 权限要求 | root 或具备网络配置授权 |
典型使用场景
- 新装系统配静态 IP:地址、网关、DNS 一并配好,避免能 ping 通 IP 但解析不了域名
- 内网域名优先:把内网 DNS 放第一位,公网 DNS 兜底
- 改错后恢复:手改 resolv.conf 无效时回到连接配置里改
- 排障定位:区分是解析问题还是链路问题,用 nslookup 指定服务器验证
- 批量交付:脚本统一注入 DNS,保证各机器解析策略一致
- 双网卡分工:管理网用内网 DNS,业务网单独指定解析服务器
配置与验证
配置与验证
nmcli con show # 确认连接名,别改错网卡
nmcli con mod 'ens33' ipv4.dns '10.0.10.2 223.5.5.5'
nmcli con mod 'ens33' ipv4.ignore-auto-dns yes # 不继承 DHCP 下发的 DNS
nmcli con up 'ens33' # 重新激活使配置生效
cat /etc/resolv.conf # 看生成结果
nmcli dev show ens33 | grep -i dns # 看连接实际生效的 DNS
resolvectl status 2>/dev/null | head -20 # 使用 resolved 时的详细状态
nslookup www.example.com 10.0.10.2 # 指定服务器直接验证解析配置位置对照
| 位置 | 作用 | 是否持久 |
|---|---|---|
| 连接 ipv4.dns | NetworkManager 的记录 | 持久,重启保留 |
| /etc/resolv.conf | 内核解析时实际读取 | 可能被覆盖,不属于源头 |
| /etc/sysconfig/network-scripts/ifcfg-* | 传统连接参数 | 使用 NetworkManager 时建议改用 nmcli 改 |
| /etc/systemd/resolved.conf | systemd-resolved 全局配置 | 持久,但仅在启用 resolved 时生效 |
| /etc/hosts | 本地静态解析 | 持久,优先级高于 DNS |
resolv.conf 是否被接管取决于本机实现:信创服务器主流由 NetworkManager 接管,因此在连接里配置才是正解。
如果解析结果与预期不符,先看 /etc/hosts 是否有同名静态记录,它的优先级高于 DNS 查询。