Linux中配置systemd-resolved的核心是统一DNS解析与缓存:先启用服务(sudo systemctl enable --now systemd-resolved),再将/etc/resolv.conf软链接至/run/systemd/resolve/stub-resolv.conf,最后在/etc/systemd/resolved.conf中配置DNS、FallbackDNS、Cache=yes等参数并重启服务。

Linux 系统中使用 systemd-resolved 管理 DNS 服务,核心是让它成为系统统一的解析入口和缓存代理。它不直接替代上游 DNS,而是作为本地“中间层”:应用查 127.0.0.53,它转发请求、缓存结果、处理多网卡优先级,并支持 DNSSEC 和 DoT(可选)。配置关键在三步:启用服务、接管 /etc/resolv.conf、设置上游 DNS 和缓存策略。
确认并启用 systemd-resolved 服务
多数现代发行版(Ubuntu 20.04+、Debian 12、Fedora 36+、Alibaba Cloud Linux 3.2104 U10 后需手动开启)已预装该服务,但未必启用。
- 检查状态:
systemctl is-active systemd-resolved,返回active表示运行中 - 若未启用,执行:
sudo systemctl enable --now systemd-resolved - 验证监听:
ss -tuln | grep ':53'应看到127.0.0.53:53(stub 模式),说明本地解析端口已就绪
让系统流量走 resolved 解析器
/etc/resolv.conf 必须指向 resolved 的 stub 文件,否则所有应用会绕过它直连上游 DNS,缓存和统一管理全部失效。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 检查链接:
ls -l /etc/resolv.conf,目标应为/run/systemd/resolve/stub-resolv.conf - 若不是,先删除旧文件:
sudo unlink /etc/resolv.conf - 重建软链:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf - 验证内容:
cat /etc/resolv.conf应含nameserver 127.0.0.53和options edns0
配置上游 DNS 和缓存行为
编辑主配置文件 /etc/systemd/resolved.conf,修改 [Resolve] 段落:
-
DNS=114.114.114.114 8.8.8.8:主用 DNS,按顺序尝试 -
FallbackDNS=1.1.1.1 208.67.222.222:主用不可达时自动切换 -
Cache=yes:显式启用本地缓存(默认开启,建议保留) -
DNSSEC=allow-downgrade:兼容不支持 DNSSEC 的域名 -
DNSOverTLS=no:暂不启用加密传输;设为opportunistic可自动协商
保存后执行:sudo systemctl restart systemd-resolved
验证与日常管理
配置完成后,用以下命令确认效果:
-
resolvectl status:查看各网卡使用的 DNS 服务器、当前作用域、是否启用缓存 -
resolvectl statistics:观察Cache hits是否增长,判断缓存是否生效 -
resolvectl query example.com:多次执行,响应时间明显变短说明缓存起效 - 清空缓存:
sudo resolvectl flush-caches(v245+ 支持)或sudo systemctl restart systemd-resolved

















