Appearance
Debian DNS 管理工具与配置
1. resolvconf
1.1. 概述
resolvconf 是一个轻量级工具,用于动态管理 /etc/resolv.conf 文件,解决多个网络服务(如 DHCP、VPN)同时修改 DNS 配置的冲突问题。
其核心任务是维护 /etc/resolv.conf,根据网络服务输入和静态配置生成最终文件。
常用命令如下:
resolvconf -u:强制更新/etc/resolv.conf;resolvconf -a <interface>:为接口添加 DNS 配置;resolvconf -d <interface>:删除接口的 DNS 配置;
1.2. 配置文件
配置目录在 /etc/resolvconf/resolv.conf.d/,用于存储静态或附加 DNS 配置,供 resolvconf 生成 /etc/resolv.conf 时使用。该目录下常见的文件有:
base:定义基本的静态 DNS 配置(如nameserver 1.1.1.1);head:指定/etc/resolv.conf开头内容(如注释);tail:追加末尾内容(如search example.com);
生成顺序:head → base → 动态配置 → tail。
动态接口配置存储在 /run/resolvconf/interface/ 目录,重启后消失。
1.3. 特点与优缺点
- 特点:
- 轻量,仅管理配置文件,无内置解析器;
- 支持脚本钩子,允许自定义行为;
- 优点:
- 简单易用,适合传统系统;
- 不依赖
systemd,兼容性强;
- 缺点:
- 功能有限,不支持 DNS over TLS、DNSSEC 等现代特性;
2. systemd-resolved
2.1. 概述
systemd-resolved 是 systemd 套件中的 DNS 管理组件,提供本地 DNS 存根解析器和管理功能,并支持缓存和加密等高级特性。
其核心任务是处理 DNS 查询并管理 /etc/resolv.conf。
工作方式:
- 接管
/etc/resolv.conf,将其链接到/run/systemd/resolve/stub-resolv.conf,默认监听127.0.0.53:53; - 根据网络接口分别管理 DNS 配置(支持每个接口使用不同的 DNS 服务器);
- 将 DNS 查询转发给上游服务器,并提供缓存功能;
2.2. 配置文件
输入来源包括网络服务(如 systemd-networkd、NetworkManager)或手动配置(/etc/systemd/resolved.conf)获取 DNS 信息。
2.3. 特点与优缺点
- 特点:
- 内置解析器,支持 DNS 缓存;
- 支持 DNS over TLS、DNSSEC;
- 与
systemd生态深度集成;
- 优点:
- 功能丰富,适合现代网络需求;
- 提供缓存和按接口配置;
- 缺点:
- 依赖
systemd,不适用于非systemd系统; - 配置较复杂;
- 依赖
2.4. 使用方法
安装与启用:
Bashsudo apt install systemd-resolvedBashsudo systemctl enable --now systemd-resolved检查状态:
Bashsystemctl status systemd-resolved检查 DNS 解析状态:
Bashresolvectl status
3. resolvconf 与 systemd-resolved 对比
| 特性 | resolvconf | systemd-resolved |
|---|---|---|
| 功能 | 管理 /etc/resolv.conf | 本地解析器 + 配置管理 |
| 依赖 | 无 systemd 依赖 | 依赖 systemd |
| 解析能力 | 无内置解析器 | 内置存根解析器,支持缓存 |
| 现代特性 | 不支持 DNS over TLS、DNSSEC | 支持 DNS over TLS、DNSSEC |
| 配置方式 | /etc/resolvconf/resolv.conf.d/ | /etc/systemd/resolved.conf |
| 适用场景 | 传统、简单系统 | 现代、复杂系统 |
| 默认监听 | 不监听 | 127.0.0.53 |
共存性:两者可共存,但需避免冲突,通常选择其一接管 /etc/resolv.conf。
4. Debian 12 的 DNS 管理
4.1. 默认行为
Debian 12 基础安装默认不启用 systemd-resolved,DNS 通过 /etc/resolv.conf 管理,由 DHCP 客户端(如 dhclient)或手动配置。但桌面环境安装时可能自动启用,并默认使用 NetworkManager 管理网络和 DNS。
| 版本 | resolvconf | systemd-resolved |
|---|---|---|
| Debian 9 | 默认安装 | 需手动安装 |
| Debian 11 | 默认安装但未激活 | 桌面环境默认激活 |
| Debian 12 | 仍提供但逐步淘汰 | 推荐使用的现代解决方案 |
4.2. 检查当前 DNS 管理工具
查看当前 DNS:
Bashcat /etc/resolv.conf检查是否为
systemd-resolved链接:Bashls -l /etc/resolv.conf检查
NetworkManager:Bashnmcli connection show检查
resolvconf安装:Bashdpkg -l | grep resolvconf
5. 通用概念与文件
5.1. /etc/resolv.conf
作用:存储 DNS 服务器地址和搜索域;
管理方式:
resolvconf:动态生成;systemd-resolved:符号链接至存根文件;- 手动:静态编辑(易被覆盖);
5.2. systemd 简介
定义:Linux 初始化系统和服务管理器,替代 System V init;
组件:
systemd:核心守护进程;systemctl:管理服务;journald:日志管理;resolved:DNS 管理;
特点:并行启动、依赖管理、资源控制;