DNS A / CNAME 是什么

A 记录指向 IP,CNAME 指向另一个名字。这一句话解决独立开发者 90% 的 DNS 困惑——剩下 10% 看本文。

每个 host 给你 DNS 说明的方言都不一样:「加一条 A 记录到 76.76.21.21」或「CNAME 指到 cname.vercel-dns.com」。如果这两句对你像天书,你还没掌握 DNS 的一页模型。本文就是这一页。

问题背景

DNS 把名字(yoursite.com)翻译成地址(93.184.216.34),浏览器才能连接。记录就是执行翻译的条目。独立开发者 99% 时间只会碰 A 和 CNAME。其它(AAAA、MX、TXT、NS)少见。

判断标准

  • 在 Vercel / Firebase / Netlify 添加域名提示「verification pending」或「invalid configuration」。
  • 配完打开域名提示「无法访问此网站」。
  • www.yoursite.com 能通但 yoursite.com 不行(或反过来)。
  • dig yoursite.com 回错的 IP 或没结果。

快速结论

A 记录把名字指向 IP,CNAME 把名字指向另一个名字。根域名(yoursite.com)用 A。子域名(www.yoursite.comblog.yoursite.com)用 CNAME。host 让你用哪个就用哪个。

实操步骤

  1. 确定要指什么。根(yoursite.com)还是子域名(www.yoursite.comapp.yoursite.com)?
  2. 看 host 的 DNS 说明。给的要么是 IP 地址(用 A 记录),要么是另一个域名(用 CNAME)。
  3. 登录 DNS 服务商——Cloudflare、注册商自带 DNS、Route 53 等。
  4. 根域名:加 A 记录,Name @(或留空,看服务商),Value 填 IP。
  5. www:加 CNAME,Name www,Value 填给你的主机名(如 cname.vercel-dns.com)。
  6. 保存等待。多数服务商 60 秒生效,少数因为缓存更久。
  7. dig yoursite.com(Mac/Linux)或 nslookup yoursite.com(任何 OS)验证,结果应该和你设的一致。
  8. 看 host dashboard,应该从「pending」变「active」。

容易踩的坑

  • 根域名想用 CNAME——多数服务商不允许。Cloudflare 等少数用「CNAME flattening」模拟,但标准 DNS 不行。
  • 同一个 name 同时加 A 和 CNAME——DNS 拒绝这种配置。
  • 迁移期 TTL 留 1 天——迁移前先改成 5 分钟,新值传播才快。
  • DNS 指了 host 但忘了在 host dashboard 添加域名——DNS 是单向的,host 要主动认领。
  • 老记录没删,仍指别处——DNS resolver 可能返回过期值,干净删掉。
  • nameserver 已经指向 Cloudflare 还在注册商改 DNS(或反过来)——改的服务器没人查。

这篇适合谁

第一次把域名接 host,或者在 debug 域名不通的独立开发者。

这篇不适合谁

DNS 深度用户——本文是 5 分钟模型,不是深潜。

实战示例

DNS 后台里 A 记录和 CNAME 看起来是这样:

Type   Name   Value                       TTL
A      @      76.76.21.21                 300
CNAME  www    cname.vercel-dns.com.       300

保存后怎么验证:

# 检查根域名的 A 记录
dig yoursite.com +short
# 期望: 76.76.21.21

# 检查 www 的 CNAME
dig www.yoursite.com +short
# 期望: cname.vercel-dns.com. + 解析出的 IP

# 绕开本机缓存,直接问公网 resolver
dig @1.1.1.1 yoursite.com +short

如果 dig 返回的还是旧值,多半是本地 resolver 还在缓存——等一下,或者直接问公共 resolver。

FAQ

  • 根域名能用 CNAME 吗?: 标准 DNS 不行。Cloudflare 提供「CNAME flattening」模拟。Vercel、Netlify 在支持的服务商上用 ALIAS 或 ANAME。拿不准就用 A。
  • ALIAS 或 ANAME 是什么?: 某些 DNS 服务商提供的非标准记录,让 CNAME 行为在根域名上能用。查询时解析成 IP。Cloudflare 的「CNAME flattening」是同一个意思。
  • TTL 设多久?: 迁移期 300(5 分钟),稳定后 3600(1 小时)或更高。TTL 越短更新越快,DNS 流量稍多。
  • 需要 AAAA 记录吗?: AAAA 是 A 的 IPv6 版。host 给了 IPv6 地址才加,多数情况下不用管。

相关阅读

标签: #独立开发 #域名 #DNS #入门