迁移至高防实例后,域名解析生效速度主要取决于 DNS 缓存刷新周期。事前调低 TTL 值是最主要且有效的加速手段,事后只能通过刷新本地缓存、切换公共 DNS 和等待全球节点同步来缩短感知时间。
先说结论:解析生效慢通常是 DNS 缓存导致,无法强制瞬间全球生效,重点在于事前规划和事后验证。
- 适合:计划内迁移场景,需提前调整 DNS 设置
- 先准备:确认当前 TTL 值,预留缓冲时间
- 验收:通过多地 DNS 检测工具确认解析指向
- 紧急:若未提前调整,需等待缓存过期或引导用户刷新
命令速用版
如果是紧急排查,可以先在本地尝试刷新 DNS 缓存,并使用公共 DNS 查询当前解析状态:
Windows: ipconfig /flushdns macOS: sudo killall -HUP mDNSResponder Linux (systemd): sudo resolvectl flush-caches Linux (nscd): sudo service nscd restart 查询解析:dig example.com 或 nslookup example.com
为什么会这样
域名解析不是实时同步的。当你修改了 DNS 记录指向高防实例的 CNAME 或 IP 后,全球各地的递归 DNS 服务器(如运营商 DNS)会保留旧记录的缓存,直到缓存过期。这个过期时间由 TTL(Time To Live)值决定。如果迁移前 TTL 设置较长(例如 24 小时),那么最多可能需要这么久才能全球生效。高防实例本身不控制 DNS 传播速度,它只是解析的目标。
主流 DNS 服务商 TTL 修改指引
不同服务商控制台操作路径略有差异,以下是主流平台修改 TTL 的通用步骤:
- 阿里云 DNS:登录控制台 -> 域名解析 DNS -> 解析设置 -> 记录列表 -> 点击记录右侧"修改" -> 调整 TTL 值 -> 确认。
- 腾讯云 DNS:登录 DNS 控制台 -> 域名列表 -> 点击域名 -> 解析记录 -> 点击记录右侧"修改" -> 选择 TTL 时间 -> 保存。
- Cloudflare:登录 Dashboard -> DNS -> 找到对应记录 -> 点击 Edit -> TTL 选项选择 Manual -> 输入秒数 -> Save。
TTL 值设置最佳实践
为避免业务中断且加速生效,建议按以下阶段调整 TTL 值:
| 阶段 | 建议 TTL 值 | 操作时机 |
|---|---|---|
| 迁移前 | 600 秒 (10 分钟) | 至少提前 24 小时调整 |
| 迁移中 | 600 秒 (10 分钟) | 修改解析记录指向高防 |
| 迁移后 | 3600 秒 (1 小时) 或恢复原值 | 确认业务稳定运行 24 小时后 |
迁移后紧急应对方案
如果已经迁移完成但发现 TTL 未提前调低,导致部分用户访问旧 IP,可采取以下措施:
- 等待缓存过期:这是最稳妥的方式,全球 DNS 缓存会在原 TTL 时间后自动刷新。
- 引导用户刷新:通知受影响用户刷新本地 DNS 缓存(参考命令速用版)或切换至公共 DNS(如 8.8.8.8、1.1.1.1)。
- 双源保持:确保旧服务器在 TTL 过期前继续提供服务,避免用户访问中断。
- 高防配置检查:确认高防实例已正确配置转发规则,确保一旦解析生效,流量能立即通断。
怎么验证是否生效
不要只在自己电脑 ping 域名。使用第三方的 DNS 传播检测工具,查看全球不同地区的解析结果是否都已指向高防实例 IP。同时检查业务端口是否通畅,确认高防实例已正确转发流量到源站。
常见坑
1. TTL 设得太低:长期维持极低 TTL 会增加 DNS 查询负担,影响解析性能,迁移完成后应调回正常值。
2. 证书不匹配:高防实例上配置的 SSL 证书域名需与原域名一致,否则解析生效了但浏览器报安全警告。
3. 源站 IP 泄露:迁移后若源站 IP 直接暴露,攻击可能绕过 高防,需确保源站只允许高防 IP 访问。