DNS 工作原理
一次解析发生了什么
- 浏览器缓存
- 操作系统缓存
- hosts 文件
- 本地 DNS 服务器(递归解析器)
- 根域名服务器
- TLD 服务器
- 权威域名服务器
记录类型
| 记录 | 含义 | 示例 |
|---|---|---|
| A | 域名 → IPv4 | example.com → 93.184.216.34 |
| AAAA | 域名 → IPv6 | example.com → 2606:2800:220:1:248:1893:25c8:1946 |
| CNAME | 别名 | www → example.com |
| MX | 邮件服务器 | example.com → mail.example.com |
| TXT | 任意文本 | SPF、DKIM 验证 |
| NS | 权威服务器 | example.com → ns1.example.com |
dig 命令
dig example.com # 基本查询
dig example.com A # 指定记录类型
dig @8.8.8.8 example.com # 指定 DNS 服务器
dig +trace example.com # 追踪完整解析链路
dig example.com +short # 简洁输出
dig 只是网络工具箱的一员,其余常用命令速查见 [[linux-commands]]。
缓存与 TTL
每条记录都有 TTL(Time To Live),单位秒。TTL 内再次查询直接读缓存:
- TTL = 60:适合频繁切换(故障转移)
- TTL = 86400:稳定记录,减少查询压力
常见问题
- 传播延迟:修改 DNS 并非全球瞬间生效,旧 TTL 缓存过期后才看到新记录
- CNAME 不能和其他记录共存:如果一个域名有 MX 记录,就不能再设 CNAME
- DNSSEC:给 DNS 响应加数字签名,防篡改
- 自托管踩坑:子域名解析、反代与证书联动的实战记录在 [[home-server]]