首页/系统/Linux 运维命令速查/resolvectl 查询 systemd-resolved
网络命令82 条

resolvectl 查询 systemd-resolved

systemd 体系里 DNS 走 resolved 服务:resolvectl status 看每网卡 DNS 配置,query 按 resolved 逻辑解析,排「只有某网卡域名不解析」必用。

Linux 运维命令速查系统更新于 2026-10-13

resolved 体系里的 DNS

systemd 发行版里,DNS 常常不是直接读配置文件,而是交给 systemd-resolved 这个本地解析服务:它接收各网卡的 DNS 配置、按域名分流规则决定向谁查询、并维护缓存。resolvectl 就是它的控制台,能看清每块网卡到底用哪台 DNS、按 resolved 的逻辑解析某个域名、以及缓存与查询统计。

基本信息

适用平台启用 systemd-resolved 的发行版(如 Ubuntu 18.04 及以后、部分 Fedora 与 RHEL 版本)
语法resolvectl {status | query | statistics | flush-caches} [域名]
相关文件/etc/resolv.conf 常为软链,指向 stub 解析地址或 127.0.0.53
典型场景排查「只有某个网卡的域名解析不了」这类分流问题

典型使用场景

  • 确认某块网卡实际使用哪台 DNS 服务器,而不是看配置文件猜
  • VPN 接入后内网域名解析不了,检查分流域与全局域配置
  • 改过 DNS 后清缓存并重新验证解析结果
  • 确认解析失败是缓存问题还是上游返回的问题
  • 核对多网卡环境下查询走了哪条链路

常用示例

常用示例
resolvectl status                 # 各网卡 DNS 服务器、搜索域与分流配置
resolvectl query example.com      # 按 resolved 的逻辑解析,显示来源与结果
resolvectl query --type=MX example.com   # 查询指定记录类型
resolvectl statistics             # 缓存命中、失败与查询次数
resolvectl flush-caches           # 清空本地缓存(改 DNS 后)
systemctl status systemd-resolved # 确认解析服务本身在运行
cat /etc/resolv.conf              # 核对这里指向的是不是本地 stub 地址

子命令读法

子命令作用关注点
status查看全局与各网卡的 DNS 配置看每块网卡对应的服务器与分流域
query按 resolved 逻辑解析域名输出里会标明结果来源与是否命中缓存
statistics缓存与查询统计命中率突然变低往往说明上游不稳定
flush-caches清空本地缓存改 DNS 或调试缓存问题后执行
dns / domain临时查看或设置单网卡配置临时调整便于快速验证,重启后可能被覆盖
resolved 生效时 /etc/resolv.conf 通常是软链,手工编辑它很容易被覆盖;要给某块网卡固定 DNS,应改网卡配置或 resolved 的配置而非这个文件。

排查顺序

  • 先用 status 确认目标域名该由哪块网卡、哪台 DNS 负责
  • 再用 query 走一遍解析,看是失败还是返回了非预期结果
  • 失败但直连上游 DNS 能通,问题多半在本机分流配置或缓存
  • 直连上游也不通,继续往网络层与上游服务器方向排查
  • 确认修复后用统计与再次查询复核,别只看一次成功
容器里通常没有运行这个解析服务,容器内排查直接看解析配置文件并用独立查询工具更直接。

易错点

  • 清缓存是全局操作,短时间会加大上游查询量,业务高峰时批量执行要谨慎
  • 容器内不存在该服务,把宿主机的排查方法直接搬进去会发现命令不可用
  • 手工编辑解析配置文件会被服务覆盖,改动看起来生效又莫名消失
  • 只看解析结果不看配置来源,忽略分流域设置导致误判为上游故障

数据来源与参考

  • man 1 resolvectl(systemd 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌