Linux 云服务器 DNS 解析失败怎么排查?resolvectl、端口与缓存

区分域名配置、解析服务、网络路径和上游 DNS 故障

讲解 Linux DNS 解析故障中 IP 与域名测试、systemd-resolved、resolvectl、dig、UDP/TCP 53、缓存和容器差异。

Linux 云服务器出现“能访问 IP、不能访问域名”时,问题通常在 DNS 解析链路;如果连目标 IP 都无法访问,则应先排查路由、安全组、防火墙或对端服务。DNS 排障的关键是把域名记录、系统解析器、上游 DNS 和 UDP/TCP 53 网络路径分开验证。

Linux DNS 解析故障从应用到上游解析器的排查路径图
先区分网络不可达和域名解析失败,再逐层检查本机解析器与上游 DNS。

先确认故障是否只影响域名

getent ahosts example.com
ping -c 3 1.1.1.1
curl -I --connect-timeout 5 https://example.com
cat /etc/resolv.conf

getent 经过系统名称服务配置,更接近应用实际解析路径。直接 ping 公网 IP 成功、解析域名失败,才把重点放到 DNS。部分网络禁用 ICMP,因此 ping 失败不能单独证明网络中断,可结合 TCP 连接测试。

systemd-resolved 环境怎么检查

systemctl is-active systemd-resolved
resolvectl status
resolvectl query example.com
readlink -f /etc/resolv.conf
journalctl -u systemd-resolved --since '-30 min' --no-pager

resolvectl status 会显示全局和每个网卡的 DNS 服务器、搜索域及默认路由。多网卡、VPN 或容器环境中,请确认查询流量实际走向哪一个接口,而不是只看 /etc/resolv.conf 中的本地 stub 地址。

绕过本机缓存直接测试上游 DNS

安装有 dig 时,可分别查询系统默认解析器和指定上游服务器。

dig example.com A
dig @1.1.1.1 example.com A +time=3 +tries=1
dig @1.1.1.1 example.com A +tcp +time=3 +tries=1

默认查询失败、指定上游成功,通常指向本机解析配置;UDP 失败而 TCP 成功,可能是 UDP 53 路径被过滤或响应被截断;两者都超时,需要检查出站规则、网络 ACL、路由和上游可达性。生产环境应使用组织批准的 DNS 地址,不要把公共解析器写成固定答案。

确认域名记录本身是否正确

dig example.com A +noall +answer
dig example.com AAAA +noall +answer
dig example.com CNAME +noall +answer
dig example.com SOA +noall +answer

NXDOMAIN 表示查询名称不存在;SERVFAIL 可能涉及权威 DNS、DNSSEC 或上游故障;无答案但没有 NXDOMAIN,可能是查询的记录类型不存在。刚修改记录时还要考虑递归缓存和 TTL,不能通过反复重启服务器让全球缓存立即失效。

容器正常而宿主机异常,或反过来

Docker、Kubernetes 和本机可能使用不同的解析配置。先分别在宿主机和目标容器内执行查询,并检查容器的 /etc/resolv.conf。不要直接覆盖容器自动生成的配置;应在容器运行时或编排层修改 DNS 设置。

docker exec APP_CONTAINER cat /etc/resolv.conf
docker exec APP_CONTAINER getent hosts example.com

刷新缓存与临时修改

sudo resolvectl flush-caches
sudo resolvectl reset-server-features
resolvectl statistics

刷新缓存只对过期或异常缓存有帮助,不能修复错误权威记录和网络阻断。使用 resolvectl dns INTERFACE ADDRESS 的临时设置可能在网络重连后消失,长期配置应写入 Netplan、NetworkManager、systemd-networkd 或云初始化实际管理的配置层。

结果更可能的范围下一步
IP 和域名都不通网络路径或目标服务检查路由、安全组、防火墙和端口
指定 DNS 成功,默认失败本机解析配置检查 resolv.conf、resolved 和网卡 DNS
UDP 53 失败,TCP 53 成功UDP 路径或响应大小检查网络 ACL、防火墙和 DNS 服务
返回 NXDOMAIN名称或权威记录核对域名、区域和记录是否存在

操作边界

不要长期锁定 /etc/resolv.conf 或删除符号链接来掩盖配置问题,这可能破坏 DHCP、VPN 和云网络下发。修改生产 DNS 前保留当前配置,并准备通过控制台登录恢复。

官方资料

AWS 教程AWS CloudShell 显示账户验证中怎么办?已验证仍无法创建环境的排查2026-09-15云服务器教程Vue、React 单页应用刷新后 404 怎么办?Nginx History 路由与 API 分流2026-09-13云服务器教程Docker 提示 pull access denied 怎么办?镜像名、仓库权限与登录排查2026-09-13

加入开发者交流社区

与全球开发者、运维和工作室一起交流技术、分享经验、配置、账号与最新优惠信息

  • 云平台使用交流
  • 资源优惠信息
  • 最新教程与资讯
  • 开发者经验分享
联系 Telegram 客服
加入开发者交流社区