下面介绍 Ubuntu 系统中如何配置 systemd-resolved 作为 DNS 服务,并对每一步配置进行详细说明,确保过程严谨且易于理解。😊
一、前提说明
Ubuntu 系统中默认采用 systemd-resolved 进行域名解析。该服务通过配置文件和命令行工具 <font color="red">resolvectl</font>
来管理 DNS 解析行为。我们将通过修改配置文件、重启服务以及使用命令验证配置状态来实现目标。
二、主要配置文件与命令说明
1. 修改配置文件
/etc/systemd/resolved.conf
是 systemd-resolved 的主配置文件。在该文件中可设置 DNS 服务器地址、域名、以及缓存等参数。
示例配置文件:
# /etc/systemd/resolved.conf
[Resolve]
# 指定上游DNS服务器
DNS=<font color="red">8.8.8.8 8.8.4.4</font>
# 指定默认域名搜索列表
Domains=~example.com
# 开启DNSSEC验证
DNSSEC=allow-downgrade
# 设置多播DNS解析服务
MulticastDNS=yes
解释:
<font color="red">DNS</font>
:指定上游 DNS 服务器地址,本例中使用公共DNS服务器。<font color="red">Domains</font>
:设置默认的域名搜索后缀,此处配置为example.com
。<font color="red">DNSSEC</font>
:开启 DNSSEC 验证,allow-downgrade
表示在验证失败时降级。<font color="red">MulticastDNS</font>
:启用/禁用多播DNS功能,帮助解析本地网络内设备名称。
2. 重启 systemd-resolved 服务
修改配置文件后,需要重启服务以使配置生效:
sudo systemctl restart systemd-resolved
解释:
- 使用
systemctl restart
命令重启 systemd-resolved,确保新配置加载生效。
3. 检查服务状态
通过以下命令检查 systemd-resolved 的运行状态:
sudo systemctl status systemd-resolved
解释:
- 显示当前服务的状态、运行时间以及是否有错误信息,确保服务正常运行。
4. 使用 resolvectl 工具
resolvectl
是管理 DNS 解析的命令行工具,可以查看当前 DNS 配置与解析状态。
resolvectl status
解释:
- 输出详细的 DNS 服务器、域名、DNSSEC 状态等信息,便于调试和验证配置效果。
三、详细工作流程与说明
下面给出 systemd-resolved DNS 配置的工作流程思维导图,清晰展示每一步的作用及配置流程:
flowchart TD
A[编辑 <font color="red">/etc/systemd/resolved.conf</font>] --> B[配置上游DNS服务器、域名、DNSSEC等参数]
B --> C[保存配置文件]
C --> D[重启 systemd-resolved 服务]
D --> E[使用 <font color="red">resolvectl status</font> 验证配置]
E --> F[DNS解析服务正常运行]
解释:
- A → B:编辑配置文件,填写所需的 DNS 参数。
- C → D:重启服务确保新配置生效。
- E:通过工具验证是否配置正确。
- F:最终实现 DNS 解析服务的正常运行。
四、常用命令及详细说明表
命令/配置项 | 作用 | 解释 |
---|---|---|
/etc/systemd/resolved.conf | 主配置文件,设置上游DNS、域名搜索、DNSSEC 等参数 | 通过修改此文件实现自定义DNS解析设置 |
DNS=<font color="red">8.8.8.8 8.8.4.4</font> | 设置上游DNS服务器地址 | 使用公共DNS服务器,可以根据实际需求修改地址 |
Domains=~example.com | 指定默认域名搜索列表 | 当解析不带域名的主机名时自动添加后缀 |
DNSSEC=allow-downgrade | 开启DNSSEC安全验证,验证失败时降级 | 保证DNS数据完整性,提高安全性 |
MulticastDNS=yes | 启用多播DNS解析 | 支持局域网内设备名称解析 |
sudo systemctl restart systemd-resolved | 重启systemd-resolved服务 | 使配置文件中修改的参数生效 |
sudo systemctl status systemd-resolved | 查看服务状态 | 检查服务是否正常运行,是否有错误输出 |
resolvectl status | 查看当前 DNS 解析配置与状态 | 验证DNS服务器、域名和DNSSEC状态等配置,便于排查问题 |
五、调试与验证建议
验证解析效果
通过ping
或dig
命令测试域名解析效果:ping example.com dig example.com
解释:
- 通过
ping
检查域名是否能正确解析成 IP 地址。 - 通过
dig
获取详细解析过程,方便排查 DNS 解析问题。
- 通过
查看日志
如遇异常可查看日志文件,了解详细错误信息:journalctl -u systemd-resolved -e
解释:
- 日志输出有助于分析 DNS 解析过程中可能出现的错误,便于及时处理。
通过上述配置和步骤,我们可以实现 Ubuntu 中 systemd-resolved 的自定义 DNS 服务设置,确保系统网络解析稳定高效。每一步命令和配置均经过详细解释,希望对实际应用具有指导意义。👍