DNS 记录类型全解
DNS 记录是你在权威域名服务器上配置的"规则"。每种记录类型解决一类问题。理解它们,才能看懂任何 DNS 配置界面。
核心记录类型速览
| 类型 | 全称 | 作用 | 最常见用途 |
|---|---|---|---|
| A | Address | 域名 → IPv4 地址 | 指向服务器 |
| AAAA | IPv6 Address | 域名 → IPv6 地址 | IPv6 服务器 |
| CNAME | Canonical Name | 域名 → 另一个域名 | CDN、子域别名 |
| MX | Mail Exchange | 邮件服务器地址 | 接收邮件 |
| TXT | Text | 任意文本 | SPF、DKIM、域名验证 |
| NS | Name Server | 权威 DNS 服务器 | 域名托管指向 |
| SOA | Start of Authority | 域的权威信息 | 自动生成,一般不手动改 |
| CAA | Certificate Authority | 允许哪些机构签发 SSL | SSL 安全控制 |
A 记录:最基础的记录
用途:把域名指向一个 IPv4 地址(你的服务器)。
类型: A
名称: @(代表根域 example.com)或 shop(代表 shop.example.com)
值: 104.21.3.5(你的服务器 IP)
TTL: 300(秒)
注意事项:
- @ 代表根域本身(example.com)
- 一个域名可以有多个 A 记录(实现简单负载均衡)
- 根域不能用 CNAME,只能用 A 记录或 ALIAS(有的服务商支持)
CNAME 记录:别名,指向另一个域名
用途:把子域名指向另一个域名(而不是 IP)。CDN、第三方服务接入时最常用。
类型: CNAME
名称: shop(代表 shop.example.com)
值: mystore.myshopify.com
TTL: 300
典型场景:
CNAME 限制:
- 根域(@)不能用 CNAME — example.com 不能设置 CNAME,只能子域用
- CNAME 目标必须是域名,不能是 IP
- 不能和其他记录(MX、A)共存于同一名称
MX 记录:接收邮件
用途:告诉其他邮件服务器,发给 @example.com 的邮件应该送到哪。
类型: MX
名称: @
值: mail.example.com
优先级: 10
TTL: 300
优先级:数字越小,优先级越高。通常设置两条(主用 + 备用):
| 优先级 | 值 | 说明 |
|---|---|---|
| 10 | mail.example.com | 主邮件服务器 |
| 20 | mail2.example.com | 备用邮件服务器 |
常见错误:MX 记录的值必须是主机名(mail.example.com),不能是 IP 地址。
TXT 记录:万能文本记录
用途:存储任意文本,最常用于: 1. SPF — 声明哪些服务器有资格代表你发邮件 2. DKIM — 邮件签名的公钥 3. DMARC — 邮件验证策略 4. 域名所有权验证 — Google Search Console、SSL 申请等
类型: TXT
名称: @
值: "v=spf1 include:_spf.google.com ~all"
TTL: 300
注意:同一个名称可以有多条 TXT 记录,各自独立生效。
NS 记录:谁是你的权威 DNS
用途:指定谁来管理这个域名的 DNS 记录。
类型: NS
名称: @
值: ns1.cloudflare.com
值: ns2.cloudflare.com
重要:NS 记录在注册商设置,不在 DNS 托管商设置。 - 在 Namecheap 买的域名 → 在 Namecheap 后台修改 Nameservers → 指向 Cloudflare - 修改 NS 记录后,DNS 控制权转移到新的托管商
配置示例:一个典型独立站的 DNS 配置
# 网站
@ A 104.21.3.5 TTL=300
www CNAME example.com TTL=300
# 邮件(使用 Google Workspace)
@ MX aspmx.l.google.com 优先级=1 TTL=300
@ MX alt1.aspmx.l.google.com 优先级=5 TTL=300
# 邮件验证
@ TXT "v=spf1 include:_spf.google.com ~all"
@ TXT "google-site-verification=xxxxx"
# Shopify 子店
shop CNAME mystore.myshopify.com TTL=300
常见误区
- 误区 1:CNAME 和 A 记录冲突 — 不能在同一个名称下同时设置 CNAME 和 A 记录
- 误区 2:MX 值用了 IP — MX 只接受主机名,主机名需要有自己的 A 记录
- 误区 3:根域用 CNAME — 根域(@)不支持 CNAME,用 A 记录或联系 DNS 提供商看是否支持 ALIAS
下一节:DNS 传播与 TTL——为什么改了 DNS 不立刻生效,TTL 怎么设。