什么是TTL?
TTL (生存时间) 是DNS设置,以秒为单位指定DNS记录应被解析器、浏览器和其他系统缓存多长时间,然后必须从权威名称服务器请求新副本。TTL值在DNS更改的快速传播 (低TTL) 和减少服务器负载的较好性能 (高TTL) 之间平衡。TTL的工作原理
带TTL的DNS查询流:
1. 客户端为example.com向解析器查询
2. 解析器检查缓存 - 未找到
3. 解析器查询权威服务器
4. 服务器返回:A记录192.0.2.1,TTL 3600
5. 解析器缓存3600秒 (1小时)
6. 后续查询从缓存提供
7. 3600秒后,缓存过期,循环重复
常见TTL值
| TTL (秒) | 期限 | 用途 |
|---|---|---|
| 60-300 | 1-5分钟 | DNS更改期间、故障转移 |
| 300-900 | 5-15分钟 | 动态服务 |
| 3600 | 1小时 | 标准网站 |
| 14400 | 4小时 | 稳定记录 |
| 86400 | 24小时 | 很少改变的记录 |
DNS记录中的TTL
记录格式
example.com. 3600 IN A 192.0.2.1
│
└── TTL (秒)
每条记录不同的TTL
; 稳定的名称服务器 - 高TTL
example.com. 86400 IN NS ns1.example.com.
; 网络服务器 - 适度TTL
www.example.com. 3600 IN A 192.0.2.1
; 动态内容 - 低TTL
api.example.com. 300 IN A 192.0.2.50
TTL策略
DNS更改前
在计划更改前降低TTL:
时间表:
第-2天:将TTL从86400降低到300
第0天:进行DNS更改
第0+天:更改在5分钟内传播
第+1天:将TTL恢复到86400
权衡
| 低TTL (60-300) | 高TTL (3600+) |
|---|---|
| 快速传播 | 传播缓慢 |
| 更多DNS查询 | 更少DNS查询 |
| 更高的服务器负载 | 更低的服务器负载 |
| 更好的故障转移 | 更好的稳定性 |
| 更高的延迟 | 更低的延迟 |
TTL和DNS传播
TTL直接影响传播时间:
最大传播时间 ≈ 最高缓存TTL
如果TTL = 86400 (24小时):
- 一些用户看到旧IP最多24小时
- 全球传播:最多24-48小时
如果TTL = 300 (5分钟):
- 大多数用户在5-10分钟内看到新IP
- 全球传播:不到1小时
检查当前TTL
使用dig
dig example.com A
;; ANSWER SECTION:
example.com. 3542 IN A 192.0.2.1
│
└── 剩余TTL (直到缓存过期的秒数)
使用nslookup
nslookup -debug example.com
最佳实践
1. 使用适当的值:匹配TTL与记录波动性
2. 更改前降低:在更改前24-48小时减少TTL
3. 考虑缓存层:CDN、浏览器增加延迟
4. 不要设置不必要的低值:平衡负载与速度
5. 监控更改后:验证传播完成
6. 记录标准:建立TTL政策
TTL是基本的DNS概念,直接影响DNS更改在互联网上生效的速度以及您的名称服务器处理的负载量。