Ubuntu 20.04 DNS配置终极指南:告别手动修改resolv.conf的时代
每次重启后DNS设置就失效?修改/etc/resolv.conf却总被覆盖?这可能是Ubuntu用户最常遇到的网络配置痛点之一。在Ubuntu 20.04及更高版本中,传统的DNS配置方式已经发生了根本性变革,systemd-resolved服务成为了幕后主角。本文将带你彻底理解这套新机制,并掌握符合现代Linux系统的最佳实践。
1. 为什么直接修改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
这个软链接揭示了第一个重要事实:/etc/resolv.conf不再是你应该直接编辑的文件。它实际上指向了systemd-resolved服务管理的临时文件。如果你用vim打开这个文件,会看到明确的警告提示:
# This file is managed by man:systemd-resolved(8). Do not edit.
手动修改这个文件会导致几个问题:
- 修改会被系统定期覆盖
- 可能破坏systemd-resolved的转发逻辑
- 导致DNS缓存不一致
- 系统更新时可能产生冲突
真实案例:某开发者在Docker容器中同时修改resolv.conf和使用systemd-resolved,导致DNS查询出现随机失败,最终发现是两个配置机制相互冲突所致。
2. systemd-resolved架构深度解析
现代Ubuntu的DNS解

353

被折叠的 条评论
为什么被折叠?



