Oamc

DNS 记录与解析排查

本页目录

场景

内部系统换 IP 了,域名还指着旧的;或者新域名解析不生效。

前置条件

  • 有域名的管理权限
  • 知道当前解析值
  • 了解 TTL 的影响

配置

常见记录类型:

类型 用途 例子
A 域名 → IPv4 kb.example.com → 10.0.0.10
AAAA 域名 → IPv6 kb.example.com → 2001:db8::10
CNAME 别名 www → kb.example.com
MX 邮件 mail.example.com
TXT 验证 / SPF v=spf1 ...
NS 委派 ns1.example.com

修改流程:先在 DNS 服务商后台改记录,把 TTL 提前调小(比如 300 秒),观察没问题再恢复。

验证

dig +short kb.example.com
dig kb.example.com @8.8.8.8
dig +trace kb.example.com
nslookup kb.example.com
resolvectl query kb.example.com     # systemd-resolved

本机解析优先级:

cat /etc/resolv.conf
cat /etc/nsswitch.conf | grep hosts

回滚

改回原来的记录值即可,但要等 TTL 过期。

坑

  • TTL 是缓存时间,改了记录不会立刻全网生效,之前调小 TTL 很重要。
  • CNAME 不能和 MX/TXT 同时存在于同一记录名上。
  • 内网 DNS 和公网 DNS 是两套,改错了地方等于没改。
  • /etc/hosts 优先级高于 DNS,排查时先看。
  • 解析到 IPv6 优先,但机器没 IPv6 路由,表现是「解析得到却连不上」。
  • 域名过期或者实名认证没通过,解析会被停。