NetworkManager服务与network服务冲突引起resolv.conf被还原

本文介绍了解决因NetworkManager服务启动而导致的resolv.conf文件被还原问题的方法。通过禁用或卸载network服务来避免与NetworkManager服务的冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装新环境的时候发现dns不能被解析。

手动修改resolv.conf之后可以,但是重启后resolv.conf会被还原。

网上搜了一堆资料说是改/etc/sysconfig/network-scripts/下文件什么的也不好使。

最后没办法找机房的管理员帮我看了下。找到了问题

原因是由于启动了NetworkManager服务导致的 ,netwoekmanager会和network冲突导致resolv.conf被还原

解决办法是同时network服务并禁止开机自启,或者干脆卸载它

更多详情点这里

### 防止网络服务重启时 `/etc/resolv.conf` 被覆盖的方法 在 Linux 系统中,特别是基于 Debian 和 Red Hat 的发行版(如 Ubuntu 和 CentOS),每当网络服务重启或 DHCP 客户端重新获取 IP 地址时,`/etc/resolv.conf` 文件可能被覆盖。这是由于系统中的 `systemd-resolved`、`NetworkManager` 或其他网络管理工具会动态更新此文件[^3]。 以下是几种有效的解决方案,可防止 `/etc/resolv.conf` 在网络服务重启时被覆盖: #### 方法一:修改网卡配置文件以禁用自动 DNS 更新 对于使用传统网络脚本的系统(如 CentOS/RHEL),可以通过编辑网卡配置文件来禁用自动 DNS 更新。打开对应网卡的配置文件: ```bash sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 ``` 添加或修改以下参数以关闭自动 DNS 获取功能: ```plaintext PEERDNS=no ``` 保存后重启网络服务以使更改生效: ```bash sudo systemctl restart network ``` 这一步骤适用于那些通过 DHCP 自动分配 DNS 配置的情况,确保会因为 DHCP 协议而覆盖 `/etc/resolv.conf`[^4]。 #### 方法二:配置 `systemd-resolved` 并绑定至静态 DNS 在现代 Ubuntu 系统中,默认启用了 `systemd-resolved` 来集中管理 DNS 请求。要避免 `/etc/resolv.conf` 被频繁更新,可以将它指向一个固定路径,并手动指定 DNS 服务器。 1. 编辑 `resolved` 的配置文件: ```bash sudo nano /etc/systemd/resolved.conf ``` 2. 找到 `[Resolve]` 部分并取消注释 `DNS=` 行,输入希望使用的 DNS 服务器地址,例如 Google Public DNS: ```ini [Resolve] DNS=8.8.8.8 8.8.4.4 FallbackDNS= Domains=~. Cache=yes DNSSEC=no ``` 3. 将 `/etc/resolv.conf` 改为硬链接而非符号链接: ```bash sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf ``` 4. 重启 `systemd-resolved` 服务以应用更改: ```bash sudo systemctl restart systemd-resolved ``` 完成这些步骤后,即使网络服务重启,也会再影响 `/etc/resolv.conf` 的内容[^3]。 #### 方法三:使用静态文件替代符号链接 如果想依赖于任何自动化机制,则可以直接替换 `/etc/resolv.conf` 符号链接为目标文件,并赋予只读权限。具体操作如下: 1. 备份现有 `/etc/resolv.conf` 文件: ```bash sudo mv /etc/resolv.conf /etc/resolv.conf.bak ``` 2. 创建一个新的静态文件作为真正的 `/etc/resolv.conf`: ```bash echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf ``` 3. 更改文件权限为只读状态,以防意外修改: ```bash sudo chmod 444 /etc/resolv.conf ``` 需要注意的是,这种做法虽然简单粗暴,但在某些场景下可能导致兼容性问题,比如部分应用程序期望 `/etc/resolv.conf` 是一个标准符号链接[^1]。 --- ### 总结 以上提供了三种同的策略用于解决 `/etc/resolv.conf` 被覆盖的问题。推荐优先尝试 **方法二**,因为它既保留了系统的灵活性又满足了稳定性的需求;而对于特殊环境或者老旧版本的操作系统来说,**方法一** 可能更加适用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值