# 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 秒),观察没问题再恢复。 ## 验证 ```bash 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 ``` 本机解析优先级: ```bash cat /etc/resolv.conf cat /etc/nsswitch.conf | grep hosts ``` ## 回滚 改回原来的记录值即可,但要等 TTL 过期。 ## 坑 - **TTL 是缓存时间**,改了记录不会立刻全网生效,之前调小 TTL 很重要。 - CNAME 不能和 MX/TXT 同时存在于同一记录名上。 - 内网 DNS 和公网 DNS 是两套,改错了地方等于没改。 - `/etc/hosts` 优先级高于 DNS,排查时先看。 - 解析到 IPv6 优先,但机器没 IPv6 路由,表现是「解析得到却连不上」。 - 域名过期或者实名认证没通过,解析会被停。