💻 同一局域网内 DNS 一台能解析、一台失败的排查全过程

💻 同一局域网内 DNS 一台能解析、一台失败的排查全过程

🧩 背景

项目部署中,我遇到一个奇怪的现象:

  • 两台机器 A 和 B 同处局域网
  • 访问域名 harbor.internal.xxxx.com
    • A 能 ping 通,curl 正常
    • B 提示 Name or service not known,解析失败

这个域名是通过 内网 DNS 服务器(192.168.2.8) 提供的,不对公网开放。


🧪 初步排查

1. 检查 DNS 设置

cat /etc/resolv.conf

发现两台机器都显示:

nameserver 127.0.0.53

这表面上“相同”,其实不一定。Ubuntu 默认使用 systemd-resolved 做 DNS 管理,127.0.0.53 只是一个本地转发器,真正的 DNS 是隐藏在后面的


2. 使用 dig 测试

在 B 机器上执行:

dig harbor.internal.xxxx.com

结果:

;; ->>HEADER<<- status: NXDOMAIN

说明 DNS 服务器根本不知道这个域名。

A 机器返回正常 IP,说明是 DNS 配置不一致导致的解析失败。


🔍 深度排查

使用 resolvectl status 代替 systemd-resolve(Ubuntu 24.04 起推荐):

resolvectl status

结果如下:

A 机器(正常):

Link 2 (eno145)
Current DNS Server: 192.168.2.8
DNS Servers: 192.168.2.8 114.114.114.114

B 机器(异常):

Link 2 (eno8303)
Current DNS Server: 114.114.114.114
DNS Servers: 192.168.2.8 114.114.114.114

虽然 B 也配置了内网 DNS,但当前默认使用的是公网 DNS 114.114.114.114,自然无法解析私有域名。


✅ 问题根因

虽然两台机器都用了 127.0.0.53,但其实际转发 DNS 不同!

B 机器默认走了公网 DNS,无法识别 internal.xxxx.com 这类私有域名,导致返回 NXDOMAIN


🛠 解决方案

方法一:临时修复(立刻生效)

sudo resolvectl dns eno8303 192.168.2.8
sudo resolvectl domain eno8303 ~. internal.xxxx.com

如果你还有第二块网卡(如 eno145),可以也配置:

sudo resolvectl dns eno145 192.168.2.8
sudo resolvectl domain eno145 ~. internal.xxxx.com

验证解析是否成功:

dig harbor.internal.xxxx.com

方法二:持久化设置(防止重启失效)

编辑 /etc/systemd/resolved.conf

[Resolve]
DNS=192.168.2.8
Domains=~. internal.xxxx.com
FallbackDNS=114.114.114.114

含义:

  • DNS= → 优先使用内网 DNS;
  • FallbackDNS= → 如果主 DNS 挂了,就用它;
  • Domains=~. internal.xxx.com → 指定要走内网域名规则(局部解析)。

然后重启服务:

sudo systemctl restart systemd-resolved

📌 经验总结

排查步骤 工具/命令 要点
查看 DNS 配置 cat /etc/resolv.conf 通常是 127.0.0.53
查看实际 DNS resolvectl status 看当前 DNS Server 是谁
验证 DNS 是否能解析 dig xxx.com / nslookup 看是否返回 IP
临时修复 resolvectl dns 设置正确 DNS 和域
持久化配置 修改 resolved.conf 避免重启失效

📝 结语

这个问题表面看起来是“网络问题”,实际是 DNS 使用优先级被悄悄改变。借此总结,今后碰到:

  • 某些机器能解析,某些不行;
  • 同网段,域名解析不一致;
  • /etc/resolv.conf 看起来没问题;

时,第一时间想到 resolvectl 查实际 DNS 设置!

posted @ 2025-06-30 17:46  zuozhengjun  阅读(138)  评论(0)    收藏  举报