升级 Ubuntu 20.04 后网络管理器覆盖 resolv.conf 怎么锁定?

文章导读
升级 Ubuntu 20.04 后,/etc/resolv.conf 被覆盖是因为该文件通常是由 systemd-resolved 服务管理的符号链接。要锁定或永久修改 DNS 配置,不建议直接编辑 resolv.conf。正确方法是修改/etc/systemd/resolved.conf 文件中的 DNS 设置,然后重启 systemd-resolved 服务。若需彻底锁定文件防止被修改,可禁用
📋 目录
  1. 别再乱改 resolv.conf 了!搞懂 Ubuntu 20.04 的 systemd-resolved 才是解决 DNS 问题的关键-CSDN 博客
  2. Ubuntu 20.04 DNS 解析原理,解决 resolv.conf 被覆盖问题_ubuntu resolv.conf-CSDN 博客
  3. Ubuntu 系统 ECS 重启后"/etc/resolv.conf"被还原怎么办?
  4. 从手动到自动:Ubuntu 20.04 LTS 使用 Netplan 配置 DNS 服务器的完整指南 (含 DHCP/静态 IP 两种模式)
  5. FAQ
A A

升级 Ubuntu 20.04 后,/etc/resolv.conf 被覆盖是因为该文件通常是由 systemd-resolved 服务管理的符号链接。要锁定或永久修改 DNS 配置,不建议直接编辑 resolv.conf。正确方法是修改/etc/systemd/resolved.conf 文件中的 DNS 设置,然后重启 systemd-resolved 服务。若需彻底锁定文件防止被修改,可禁用 systemd-resolved 服务,将 resolv.conf 改为普通文件,并使用 chattr +i 命令添加不可修改属性。此外,也可通过 Netplan 配置文件统一管理系统网络和 DNS 设置,从而实现持久化配置。

别再乱改 resolv.conf 了!搞懂 Ubuntu 20.04 的 systemd-resolved 才是解决 DNS 问题的关键-CSDN 博客

1. 为什么修改 resolv.conf 不再有效?在传统的 Linux 系统中,/etc/resolv.conf 是 DNS 解析的核心配置文件,直接管理着系统的名称解析行为。然而,从 Ubuntu 18.04 开始引入 systemd-resolved 服务后,这一机制发生了根本性变化。关键变化点:/etc/resolv.conf 现在通常只是一个指向/run/systemd/resolve/stub-resolv.conf 的符号链接 真正的 DNS 解析工作由 systemd-resolved 服务在后台管理 直接修改 resolv.conf 会被系统自动覆盖或完全忽略 $ls-l /etc/resolv.conf lrwxrwxrwx 1 root root 39 Apr 12 10:15 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf 一键获取完整项目代码 bash 注意:强行删除符号链接并创建静态 resolv.conf 文件会导致系统使用不完整的解析配置,可能引发更复杂的 DNS 问题。

Ubuntu 20.04 DNS 解析原理,解决 resolv.conf 被覆盖问题_ubuntu resolv.conf-CSDN 博客

Ubuntu 20.04 DNS 解析原理,解决 resolv.conf 被覆盖问题 问题:开机后不能上网,ping baidu.com 不能 ping 通,错误为:ping: baidu.com: 域名解析暂时失败 修改/etc/resolv.conf 文件,添加 nameserver 8.8.8.8 再 ping baidu.com, 可以 ping 通,可以正常上网。但是,当重新启动机器后,/etc/resolv.conf 文件被覆盖为旧的文件,要想上网,还需要重新修改文件内容。解决问题的方法很简单,只需要看第 7 步即可。即修改/etc/systemd/resolved.conf,添加 DNS=8.8.8.8: 这里记录一下我解决问题的过程:解决问题的思路:1. 查寻 /etc/resolv.conf, 是一个文件链接。user@node2:~$ ls -l /etc/resolv.conf lrwxrwxrwx 1 root root 39 Apr 23 17:40 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf AI 写代码 sh 1 2 在/run/systemd/resolve 目录,有 2 个文件,它们每次开机时都会重新生成 (看文件时间)

Ubuntu 系统 ECS 重启后"/etc/resolv.conf"被还原怎么办?

Ubuntu 系统 ECS 重启后"/etc/resolv.conf"被还原怎么办?问题描述 在重启 Ubuntu 系统的 ECS 或者重启网络相关服务后,手动修改的/etc/resolv.conf 文件被刷新,nameserver 字段被还原成 127.0.0.53。图 1 问题现象 根因分析 Ubuntu 系统相关版本默认使用 systemd-resolved 服务维护 DNS,重启云服务器或者重启网络相关服务会导致/etc/resolv.conf 文件被刷新成 systemd-resolved 服务维护的 127.0.0.53 地址。处理方法 在处理前,建议先禁用 systemd-resolved 服务。方法一:手动修改/etc/resolv.conf 文件。以 root 用户登录 ECS。关闭并禁用 systemd-resolved 服务。systemctl stop systemd-resolved systemctl disable systemd-resolved 默认的/etc/resolv.conf 是软链接,删除重建为普通文件。rm -rf /etc/resolv.conf 编辑/etc/resolv.conf,增加相关 DNS 配置。

从手动到自动:Ubuntu 20.04 LTS 使用 Netplan 配置 DNS 服务器的完整指南 (含 DHCP/静态 IP 两种模式)

他一开始的解决思路,也是绝大多数 Linux 老手会走的路——直接去修改/etc/resolv.conf,把 DNS 服务器指向 8.8.8.8,问题瞬间解决。但好景不长,系统一重启或者运行了某些网络服务,这个文件又悄无声息地变回了原样,问题卷土重来。这种“打地鼠”式的修复,在 Ubuntu 18.04 之后,尤其是 20.04 LTS 及更新的版本里,变得越来越常见。核心原因就在于,网络管理的范式已经悄然从传统的 ifconfig、/etc/network/interfaces,转向了由 systemd-networkd 或 NetworkManager 驱动、并由 Netplan 统一配置的新体系。如果你还在手动编辑 resolv.conf,那你可能一直在和系统的“自动恢复”功能作斗争。这篇文章,就是为你准备的。

FAQ

为什么直接修改/etc/resolv.conf 文件重启后会失效?

升级 Ubuntu 20.04 后网络管理器覆盖 resolv.conf 怎么锁定?

因为在 Ubuntu 20.04 中,/etc/resolv.conf 通常是一个指向/run/systemd/resolve/stub-resolv.conf 的符号链接,由 systemd-resolved 服务动态管理,重启后会被自动还原。

如何永久配置 Ubuntu 20.04 的 DNS 服务器?

可以通过修改/etc/systemd/resolved.conf 文件,在 [Resolve] section 下添加 DNS=IP 地址,然后重启 systemd-resolved 服务;或者使用 Netplan 配置文件进行声明式网络配置。

如何防止/etc/resolv.conf 文件被系统自动覆盖?

可以禁用 systemd-resolved 服务,删除原有的符号链接,创建普通的 resolv.conf 文件,并使用 chattr +i 命令给文件添加不可修改属性来锁定。