news 2026/5/5 16:43:42

别再乱改/etc/resolv.conf了!Ubuntu 20.04 DNS配置的正确姿势:systemd-resolved保姆级教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再乱改/etc/resolv.conf了!Ubuntu 20.04 DNS配置的正确姿势:systemd-resolved保姆级教程

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解析已经演变成一个多层架构:

应用程序 → stub-resolv.conf (127.0.0.53) → systemd-resolved → 上游DNS

关键文件说明:

文件路径作用是否应该修改
/etc/resolv.conf符号链接到stub-resolv.conf❌ 绝对不要
/run/systemd/resolve/stub-resolv.conf本地stub解析器配置❌ 自动生成
/run/systemd/resolve/resolv.conf实际上游DNS服务器列表❌ 自动生成
/etc/systemd/resolved.conf主配置文件✅ 应该修改这里

理解这个架构后,我们就能明白为什么直接修改resolv.conf会失效——它只是整个链条中最末端的环节。

3. 正确配置DNS的三种方法

3.1 方法一:修改resolved.conf主配置文件

这是最推荐的方式,编辑/etc/systemd/resolved.conf

[Resolve] DNS=8.8.8.8 1.1.1.1 FallbackDNS=9.9.9.9 Domains=~.

参数说明:

  • DNS:主DNS服务器列表(空格分隔)
  • FallbackDNS:备用DNS服务器
  • Domains=~.:对所有域名生效

修改后需要重启服务:

sudo systemctl restart systemd-resolved

3.2 方法二:使用resolvectl临时配置

对于测试或临时修改,可以使用resolvectl工具:

# 设置DNS服务器 sudo resolvectl dns eth0 8.8.8.8 # 查看当前配置 resolvectl status # 清空DNS缓存 sudo resolvectl flush-caches

注意:这种方式重启后会失效,适合临时调试使用

3.3 方法三:通过Netplan配置(云服务器常见)

在/etc/netplan/目录下的yaml文件中添加:

network: version: 2 ethernets: eth0: nameservers: addresses: [8.8.8.8, 1.1.1.1]

应用配置:

sudo netplan apply

4. 高级技巧与故障排查

4.1 诊断DNS问题的方法

当遇到DNS解析失败时,可以按照以下步骤排查:

  1. 检查当前使用的DNS服务器:

    resolvectl status | grep 'DNS Servers'
  2. 测试DNS查询:

    dig example.com @8.8.8.8
  3. 查看DNS缓存:

    resolvectl statistics
  4. 检查服务状态:

    systemctl status systemd-resolved journalctl -u systemd-resolved -n 50

4.2 多网络接口的DNS配置

当系统有多个网络接口时,可以为每个接口指定不同的DNS:

sudo resolvectl dns eth0 8.8.8.8 sudo resolvectl dns wlan0 192.168.1.1

4.3 禁用systemd-resolved(不推荐)

虽然不推荐,但在某些特殊情况下可能需要禁用:

sudo systemctl disable --now systemd-resolved sudo rm /etc/resolv.conf sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

警告:这会使系统失去DNS缓存等功能,仅限高级用户使用

5. 容器环境中的特殊考量

在Docker等容器环境中,DNS配置更为复杂。推荐的做法是:

  1. 在主机上正确配置systemd-resolved
  2. 启动容器时使用--dns参数:
    docker run --dns 8.8.8.8 -it ubuntu
  3. 或者在docker-compose中配置:
    services: app: dns: - 8.8.8.8 - 1.1.1.1

对于Kubernetes环境,需要修改kubelet的--resolv-conf参数指向正确的resolv.conf文件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 16:41:56

独立开发者如何借助 Taotoken 管理多个项目的 AI 调用密钥

独立开发者如何借助 Taotoken 管理多个项目的 AI 调用密钥 1. 多项目密钥管理的核心挑战 独立开发者通常需要同时维护多个项目,每个项目可能使用不同的大模型或需要独立的用量限额。传统方式下,开发者需要为每个项目单独申请和管理不同厂商的 API Key&…

作者头像 李华
网站建设 2026/5/5 16:41:28

实战演练:基于Python Django在快马平台搭建电商后台管理系统

最近在做一个电商后台管理系统的项目,正好用Python Django框架实现了完整功能,整个过程在InsCode(快马)平台上完成,体验非常流畅。下面分享下具体实现思路和关键点: 项目架构设计 采用Django经典的MTV模式,数据库选用M…

作者头像 李华
网站建设 2026/5/5 16:39:34

终极免费激活方案:KMS智能脚本一键解决Windows和Office激活难题

终极免费激活方案:KMS智能脚本一键解决Windows和Office激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows激活弹窗烦恼吗?是否遇到过Office突然变成只…

作者头像 李华
网站建设 2026/5/5 16:38:03

Zotero Duplicates Merger终极指南:5分钟彻底清理文献库重复项

Zotero Duplicates Merger终极指南:5分钟彻底清理文献库重复项 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger 你是否曾经为Zotero…

作者头像 李华
网站建设 2026/5/5 16:36:37

从Firebase到自托管:Julep AI Agent开源部署与工作流构建实战

1. 项目概述:从“Firebase for AI Agents”到开源自托管如果你在过去一年里尝试过构建基于大语言模型的智能应用,大概率会和我有同样的感受:让一个AI“记住”上下文、按步骤执行复杂任务、并稳定地调用外部工具,远比想象中要难。我…

作者头像 李华
网站建设 2026/5/5 16:36:01

终极指南:如何免费永久激活Windows和Office的智能KMS脚本

终极指南:如何免费永久激活Windows和Office的智能KMS脚本 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows激活弹窗烦恼吗?是否遇到过Office突然变成只读模式…

作者头像 李华