使用 `resolvectl` 配置 DNS 的技术文档
简介
resolvectl
是 systemd-resolved
服务的命令行管理工具,用于配置和管理 Linux 系统的 DNS 解析。通过 resolvectl
,用户可以为特定网络接口设置静态 DNS 服务器、查看 DNS 状态或清除缓存等。
本文档将重点介绍如何使用 resolvectl
为指定网络接口(如 enp0s3
)配置静态 DNS 服务器地址(如 8.8.8.8
)。
前提条件
- 系统要求:
需运行基于systemd
的 Linux 发行版(如 Ubuntu 20.04+、Fedora 32+、Debian 10+)。
命令语法
resolvectl dns [INTERFACE] [DNS_SERVER_IP...]
[INTERFACE]
: 目标网络接口名称(如enp0s3
、eth0
、wlan0
)。[DNS_SERVER_IP...]
: 一个或多个 DNS 服务器 IP 地址,用空格分隔。
示例:为 enp0s3
设置 DNS
sudo resolvectl dns enp0s3 8.8.8.8
验证配置
查看接口 DNS 配置
resolvectl status enp0s3
输出示例:
Link 2 (enp0s3)
Current Scopes: DNS
Protocols: +DefaultRoute ...
Current DNS Server: 8.8.8.8
DNS Servers: 8.8.8.8
测试 DNS 解析
nslookup example.com
# 或
dig example.com
持久化配置
通过 resolvectl
直接设置的 DNS 为临时配置,重启后失效。如需永久生效,需结合网络管理工具:
Netplan(Ubuntu/Debian)
- 编辑 Netplan 配置文件(如
/etc/netplan/01-netcfg.yaml
):network: version: 2 ethernets: enp0s3: nameservers: addresses: [8.8.8.8]
- 应用配置:
sudo netplan apply
6. 高级操作
设置多个 DNS 服务器
sudo resolvectl dns enp0s3 8.8.8.8 8.8.4.4 2001:4860:4860::8888
清除 DNS 缓存
sudo resolvectl flush-caches
恢复默认 DNS
sudo resolvectl revert enp0s3