从注册商到 Cloudflare:只改 NS 的一次域名迁移
2026-11-01 · 域名 / DNS
新域名买下来之后,第一件要决定的事不是「网站放哪」,而是「解析放哪」。这两件事可以分开:域名留在注册商,解析托管到 Cloudflare。这篇记录这次迁移的完整动作,以及一个我一开始算错的账。
为什么不转注册商
第一反应是「一起转过去省事」。算了一下不划算:
| 项目 | 改 NS | 转移注册商 |
|---|---|---|
| 费用 | 0 | 转入通常要再付一年,且多数注册商会重新计一年锁定期 |
| 时间 | 几分钟 | 要拿授权码、等原注册商放行、再等新注册商接收 |
| 限制 | 无 | 新注册 60 天内通常不允许转出 |
| 风险 | 低,随时可改回 | 中途失败会卡在两边都不认的状态 |
结论:解析和注册是两层,能分开就分开。注册商只负责「这个域名归谁」,Cloudflare 只负责「这个名字指向哪」。
第一步:在 Cloudflare 添加站点
Add a site → 输入域名 → 选 Free 计划。Cloudflare 会扫一遍现有的 DNS 记录,扫不到就手动补。此时它会给你两个 NS 地址,形如:
ada.ns.cloudflare.com
rob.ns.cloudflare.com
这两个值每个账号都不一样,不要照抄。
第二步:在注册商改 NS
登录注册商后台 → 找到该域名 → DNS Settings / Nameservers → 从「使用注册商默认 DNS」切换成「自定义 NS」,把上面两个填进去,删掉原来的。
这一步有两个容易出错的地方:
- 只填一个。必须两个都填。只填一个在部分注册商那里能保存,但解析会不稳定。
- 模式没切。有些后台改完 NS 但「DNS 模式」还停在注册商自有 DNS,保存不生效。改完回头看一眼当前模式。
第三步:等,并且用对命令验证
传播时间通常几分钟到几小时,官方说法是最长 24 小时。等待期间不要反复改,改了只会重新计时。
# 直接问权威,绕开本地缓存
nslookup -type=ns example.com 1.1.1.1
nslookup -type=ns example.com 8.8.8.8
# 看本地解析器拿到的是什么(可能是旧的)
nslookup -type=ns example.com
判断标准是 1.1.1.1 和 8.8.8.8 都返回了 Cloudflare 的 NS。本地那条返回旧值不算失败——它只是缓存还没过期。
第四步:在 Cloudflare 里补记录
NS 生效、站点变成 Active 之后,解析才真正由 Cloudflare 接管。这时再补:
| 类型 | 名称 | 用途 | 代理 |
|---|---|---|---|
| A / CNAME | @ | 指向托管平台 | 按平台要求 |
| CNAME | www | 同上 | 按平台要求 |
| MX | @ | 收信(Email Routing 自动写入) | 必须 DNS only |
| TXT | @ | SPF | — |
| TXT | _dmarc | DMARC 策略 | — |
MX 记录不能开代理(橙色云朵)。开了邮件直接收不到,而且报错信息不会告诉你原因。
我算错的那笔账
一开始想的是「反正要长期用,转到 Cloudflare 更省心」。实际算下来:转移要付一年费用,而改 NS 免费;域名本来就在续费,多付的这一年并不能减少后续任何一年的支出。真正省下的只有「少登一个后台」这一件事。
反过来,转移带来的成本是实打实的:60 天锁定期、授权码邮件可能进垃圾箱、转移期间解析不能动。为了省一次登录不值得。
迁移后的检查清单
nslookup -type=ns example.com 1.1.1.1 # NS 已指向 Cloudflare
nslookup -type=a example.com 1.1.1.1 # 站点记录存在
nslookup -type=mx example.com 1.1.1.1 # 邮件记录存在
curl -sI https://example.com | head -5 # 证书已签发
curl -s https://example.com/robots.txt # 内容确实是自己的
最后一条比看起来重要:NS 刚生效时,如果托管平台还没绑定域名,访问会落到平台的默认页或者别的地方。确认返回的是自己的内容,才算迁移完成。