linux 修改/etc/resolv.conf重启后被恢复了
时间: 2023-05-15 16:06:38 浏览: 391
这是因为系统在重启时会重新生成 /etc/resolv.conf 文件,覆盖掉你修改过的文件。如果你想要永久修改该文件,可以尝试修改 /etc/network/interfaces 文件中的 dns-nameservers 配置,或者使用 NetworkManager 等工具来管理网络配置。
相关问题
/etc/没有resolv.conf文件
### 解决 Linux 系统 `/etc/resolv.conf` 文件缺失的方法
当遇到 `/etc/resolv.conf` 文件缺失的情况时,可以通过以下方法来解决问题:
#### 方法一:创建并配置 `tail` 文件
如果系统中存在 `/etc/resolvconf/` 目录,则可以尝试通过创建 `tail` 文件的方式恢复 DNS 配置。具体操作如下:
1. 创建 `/etc/resolvconf/resolv.conf.d/tail` 文件[^1]。
2. 在该文件中添加所需的 DNS 服务器地址,例如:
```bash
nameserver 8.8.8.8
nameserver 8.8.4.4
```
3. 执行命令以应用更改:
```bash
sudo resolvconf -u
```
此方法适用于基于 Debian 的发行版(如 Ubuntu),能够有效防止 `/etc/resolv.conf` 被覆盖。
---
#### 方法二:手动编辑 `/etc/resolv.conf`
尽管某些情况下 `/etc/resolv.conf` 可能被标记为只读或链接文件,但仍可通过以下方式解决:
1. 如果 `/etc/resolv.conf` 是一个符号链接且指向不存在的目标文件,可先删除原链接:
```bash
sudo rm /etc/resolv.conf
```
2. 创建一个新的普通文件并写入 DNS 配置:
```bash
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf
```
3. 设置权限以确保其不会轻易被修改:
```bash
sudo chmod 644 /etc/resolv.conf
```
需要注意的是,在部分环境中直接编辑 `/etc/resolv.conf` 并不可靠,因为 NetworkManager 或其他服务可能会频繁重写该文件[^2]。
---
#### 方法三:重新配置 NetworkManager
对于使用 NetworkManager 进行网络管理的系统,可能需要调整其设置以保留自定义的 DNS 配置:
1. 使用文本编辑器打开 NetworkManager 配置文件:
```bash
sudo nano /etc/NetworkManager/NetworkManager.conf
```
2. 将 `[main]` 部分中的 `dns=dnsmasq` 替换为 `dns=default` 或者注释掉这一行:
```ini
[main]
dns=default
```
3. 重启 NetworkManager 服务使更改生效:
```bash
sudo systemctl restart NetworkManager
```
完成上述步骤后,再次检查 `/etc/resolv.conf` 是否正常生成以及其中的内容是否符合预期[^4]。
---
#### 方法四:安装必要的网络管理工具
有时由于缺少特定的网络管理组件而导致 `/etc/resolv.conf` 出现异常行为。此时建议执行以下操作:
1. 安装 `resolvconf` 工具包(如果没有预装的话):
```bash
sudo apt update && sudo apt install resolvconf
```
2. 同步现有 DNS 配置到实际使用的 `/etc/resolv.conf` 中:
```bash
sudo service resolvconf start
```
这种方法特别适合于那些因软件卸载或其他原因造成基础功能不全的情形[^3]。
---
### 总结
以上四种方案分别针对不同场景提供了修复措施。通常推荐优先采用 **方法一** 和 **方法三** 来处理此类问题,因其更加稳定可靠;而仅在特殊条件下才考虑运用其余两种途径作为补充手段。
/etc/resolvconf/update.d/libc: Warning: /etc/resolv.conf is not a symbolic link to /run/resolvconf/resolv.conf
### 如何修复 `/etc/resolv.conf` 不是指向 `/run/resolvconf/resolv.conf` 的符号链接警告
在某些 Linux 发行版(如 Debian 和 Ubuntu),如果 `/etc/resolv.conf` 不是一个指向 `/run/resolvconf/resolv.conf` 的符号链接,则会触发 `resolvconf` 脚本发出警告。这是因为 `resolvconf` 工具期望该文件作为其管理的目标,而不是一个独立的静态文件。
以下是解决问题的具体方法:
#### 方法一:重新创建符号链接
可以通过删除现有的 `/etc/resolv.conf` 并将其替换为指向 `/run/resolvconf/resolv.conf` 的符号链接来解决此问题。
```bash
sudo mv /etc/resolv.conf /etc/resolv.conf.backup
sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
```
上述命令的作用如下:
- 使用 `mv` 将当前的 `/etc/resolv.conf` 移动到备份位置。
- 创建一个新的符号链接 `/etc/resolv.conf` 指向 `/run/resolvconf/resolv.conf`[^1]。
#### 方法二:手动更新 `resolvconf`
有时可能是因为 `resolvconf` 未正确初始化或网络服务未能正常通知它而导致问题。可以尝试重启相关服务以恢复默认行为。
```bash
sudo systemctl restart resolvconf.service
```
这一步骤将确保 `resolvconf` 正确地接管 `/etc/resolv.conf` 的管理权限,并消除潜在冲突[^1]。
#### 方法三:检查其他工具干扰
当系统上存在多个试图控制 `/etc/resolv.conf` 的程序时(例如 `NetworkManager`, `systemd-resolved` 或者 `rdnssd`),可能导致竞争状态。建议禁用不必要的服务以减少冲突风险。
```bash
sudo systemctl disable --now rdnssd.service
sudo systemctl disable --now systemd-resolved.service
```
通过停用这些冗余的服务实例,可以让 `resolvconf` 成为主要管理者而不再引发错误提示[^2]。
#### 验证更改效果
完成以上操作之后,请验证新的设置是否生效:
```bash
ls -l /etc/resolv.conf
cat /etc/resolv.conf
```
第一个命令应显示 `/etc/resolv.conf -> /run/resolvconf/resolv.conf`;第二个命令则展示由 `resolvconf` 动态生成的内容列表[^3]。
---
### 总结
为了彻底解决 `/etc/resolv.conf` 不是符号链接至 `/run/resolvconf/resolv.conf` 导致的警告消息,推荐按照前述三种方式逐一排查原因并采取相应措施加以修正。最终目标是要让 `resolvconf` 完全掌控住 DNS 解析配置流程,从而维持系统的稳定性和一致性。
问题
阅读全文
相关推荐















