networkmanager 和 resolv.conf 可能有覆盖需要配置DNS

在 Linux 系统中,NetworkManager/etc/resolv.conf 的 DNS 配置可能因优先级或自动覆盖导致冲突。以下是详细解决方案:


1. 确认当前 DNS 管理机制
首先检查 /etc/resolv.conf 是否为符号链接,确定由谁管理 DNS:

ls -l /etc/resolv.conf

• 输出示例:

lrwxrwxrwx 1 root root 39 Jan 1 00:00 /etc/resolv.conf -> ../run/NetworkManager/resolv.conf

若指向 NetworkManagersystemd-resolved,则 DNS 由这些服务动态管理。


2. 方法一:通过 NetworkManager 配置静态 DNS
2.1 使用 nmcli 修改连接配置

# 查看当前连接名称
nmcli con show

# 为指定连接设置静态 DNS(例如使用 Google DNS)
nmcli con mod <连接名称> ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con mod <连接名称> ipv4.ignore-auto-dns yes   # 禁用自动 DNS

# 重启连接使配置生效
nmcli con down <连接名称> && nmcli con up <连接名称>

2.2 手动编辑 NetworkManager 配置文件
编辑连接的配置文件(位于 /etc/NetworkManager/system-connections/):

[ipv4]
dns=8.8.8.8;8.8.4.4;
ignore-auto-dns=true
method=auto

3. 方法二:禁用 NetworkManager 对 DNS 的覆盖
修改 /etc/NetworkManager/NetworkManager.conf,禁用 DNS 管理:

sudo nano /etc/NetworkManager/NetworkManager.conf

添加或修改以下配置:

[main]
dns=none

重启 NetworkManager:

sudo systemctl restart NetworkManager

之后手动编辑 /etc/resolv.conf 设置 DNS:

nameserver 8.8.8.8
nameserver 8.8.4.4

4. 方法三:使用 systemd-resolved(替代方案)
若系统使用 systemd-resolved,配置方法如下:

# 启用并启动服务
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved

# 设置全局 DNS
sudo resolvectl dns <接口名> 8.8.8.8 8.8.4.4

# 生成静态 resolv.conf(可选)
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

5. 验证 DNS 配置

# 检查当前 DNS 服务器
systemd-resolve --status | grep 'DNS Servers'cat /etc/resolv.conf

# 测试 DNS 解析
nslookup example.com
dig example.com

总结

场景推荐方法注意事项
需要动态管理多网络环境通过 nmcli 配置每连接的 DNS避免手动修改 /etc/resolv.conf
需要完全手动控制 DNS禁用 NetworkManager 的 DNS 管理需自行处理网络切换时的 DNS 更新
使用 systemd 生态启用 systemd-resolved确保服务优先级高于 NetworkManager

通过上述方法,可避免 NetworkManager/etc/resolv.conf 的 DNS 配置冲突,确保系统稳定使用指定 DNS 服务器。

<think>好的,用户之前问过如何在CentOS 9上配置网关,现在他们接着问如何配置resolv.conf。我需要先回顾之前的对话,确保回答的一致性。用户可能是在配置网络设置的过程中,先设置了网关,现在需要设置DNS,所以接下来的步骤应该是相关的。 首先,我得确认CentOS 9中resolv.conf配置方式。因为从CentOS 7开始,系统使用NetworkManager管理网络,传统的直接编辑/etc/resolv.conf可能会被覆盖,所以需要指出正确的方法。用户可能不太清楚这一点,直接修改resolv.conf会导致配置丢失,应该引导他们使用NetworkManager配置方法,比如nmcli或者修改配置文件。 然后,我需要分步骤说明,可能包括使用nmcli命令、修改NetworkManager配置文件,以及临时修改resolv.conf的方法。同时要提到注意事项,比如重启服务后配置是否持久,以及如何防止NetworkManager覆盖resolv.conf。用户可能需要持久化的配置,所以重点放在推荐的方法上。 另外,用户可能DNS配置不太熟悉,需要解释一些关键点,比如多个DNS服务器的添加,搜索域的作用,以及如何测试配置是否生效。提供验证步骤,比如使用nslookup或dig命令,可以帮助用户确认他们的配置是否正确。 还要注意用户可能遇到的问题,比如配置后不生效,这时候需要检查NetworkManager是否管理DNS,或者是否有其他服务干扰。同时,提醒用户备份配置文件,避免出错。 最后,保持回答结构清晰,分步骤说明,使用代码块展示命令,确保用户能够跟随操作。同时使用中文,避免专业术语过于复杂,让新手也能理解。</think>在CentOS 9中配置DNS解析(`/etc/resolv.conf`)的完整指南: --- ### 一、理解关键配置文件 - **主配置文件**:`/etc/resolv.conf`(由NetworkManager自动生成,不建议直接修改) - **控制文件**:`/etc/NetworkManager/conf.d/dns.conf`(配置DNS管理策略) - **连接配置文件**:`/etc/NetworkManager/system-connections/*.nmconnection` --- ### 二、推荐配置方法(通过NetworkManager) #### 方法1:使用`nmcli`命令行工具 1. **查看当前连接名称** ```bash nmcli connection show # 输出示例:NAME=ens192, UUID=xxxxxx... ``` 2. **添加DNS服务器** ```bash sudo nmcli connection modify "ens192" ipv4.dns "8.8.8.8 8.8.4.4" # 支持同时指定多个DNS,空格分隔 ``` 3. **添加DNS搜索域** ```bash sudo nmcli connection modify "ens192" ipv4.dns-search "example.com mylab.local" ``` 4. **应用配置** ```bash sudo nmcli connection down "ens192" && sudo nmcli connection up "ens192" ``` --- #### 方法2:手动编辑连接配置文件 1. **打开对应连接的配置文件** ```bash sudo vim /etc/NetworkManager/system-connections/ens192.nmconnection ``` 2. **在`[ipv4]`段添加配置** ```ini [ipv4] dns=8.8.8.8,8.8.4.4 # 注意使用英文逗号分隔 dns-search=example.com; ignore-auto-dns=true # 禁用DHCP提供的DNS ``` 3. **重载配置** ```bash sudo nmcli connection reload sudo nmcli connection up "ens192" ``` --- ### 三、验证配置结果 ```bash cat /etc/resolv.conf # 应显示类似: # nameserver 8.8.8.8 # nameserver 8.8.4.4 # search example.com ``` --- ### 四、高级配置技巧 #### 1. 禁用DNS覆盖(保留手动修改) 创建配置文件: ```bash sudo tee /etc/NetworkManager/conf.d/90-dns-none.conf <<EOF [main] dns=none EOF ``` 然后手动编辑`/etc/resolv.conf`(不推荐) #### 2. 测试DNS解析 ```bash nslookup google.com dig @8.8.8.8 centos.org ``` --- ### 五、临时修改(重启失效) ```bash sudo echo "nameserver 1.1.1.1" >> /etc/resolv.conf ``` --- #### 重要注意事项: 1. 在CentOS 9中,默认由NetworkManager管理`resolv.conf`,直接编辑可能覆盖 2. 使用`nmcli`修改的配置会持久化,重启后仍然有效 3. 当同时使用DHCP静态DNS时,需设置`ignore-auto-dns=true` 4. 建议始终通过NetworkManager工具进行配置,避免系统更新导致配置丢失
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的土拨鼠呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值