KernelRanch
返回文章列表

DNS 记录教学:A、CNAME、MX、TXT 各写什么

2026-11-10 #域名

DNS 记录看着多,常用的就六种。搞清楚"主机名 + 类型 + 值"这三段,大部分问题自己就能解。

1. 六种常用记录

类型值是什么典型用途
AIPv4 地址根域或子域指向服务器
AAAAIPv6 地址同上,IPv6
CNAME另一个域名www 指向根域,或指向 SaaS 提供的域名
MX邮件服务器 + 优先级收邮件,优先级数字小的先试
TXT任意文本SPF、DKIM、域名验证
NS名称服务器委派子域

真实查询的例子(本机 Resolve-DnsName,2026-11-10):

example.com A  -> 172.66.147.243, 104.20.23.154
gmail.com   MX -> alt1.gmail-smtp-in.l.google.com(pref 10), alt2...(pref 20)

2. 代理开关(橙色云)只对 HTTP 类记录有效

Cloudflare 的每条 A/AAAA/CNAME 都有"已代理 / 仅 DNS"两态。开着代理,流量走 Cloudflare 边缘,才有 CDN、WAF、缓存;关掉就是纯 DNS。

只对 HTTP(S) 生效。MX、TXT 没有代理概念,邮件和验证记录不走边缘。

开代理会隐藏源站 IP,但也会让"直接用 IP 访问"失效,排错时要记得这一点。

3. TTL 怎么选

场景建议 TTL
准备迁移或切换300 秒,先降下来再改
稳定运行的 A/CNAME自动(Cloudflare 默认 300 秒,代理模式下由边缘决定)
极少变动的 MX/TXT3600 秒以上

迁移前把 TTL 降到 300 秒,等旧 TTL 过期后再改记录,切换窗口能从小时级缩到分钟级。

4. 三个常见错误

CNAME 用在根域上。按 RFC,根域(example.com)不能有 CNAME。Cloudflare 支持 CNAME flattening,允许你在根域填 CNAME,但其他 DNS 商不一定支持,换 DNS 时会踩坑。

MX 指向了 CNAME。MX 的值要是主机名,且不能是 CNAME 记录,否则部分发信方会拒收。

TXT 里的引号没处理。SPF 记录的值是一整段字符串,控制台里通常不用自己加引号;从别处复制粘贴时容易带进多余引号,导致记录无效。SPF 的写法见 89-spf-dkim-dmarc.md。

5. 查记录的三条命令

Resolve-DnsName -Name example.com -Type A
Resolve-DnsName -Name example.com -Type MX
Resolve-DnsName -Name example.com -Type TXT

在 Linux 上换成 dig example.com A、dig example.com MX +short。排错细节见 95-dns-troubleshooting-dig.md。

小结

写记录只需要回答三个问题:这条记录给谁用(HTTP 还是邮件)、值是什么类型、要不要走 Cloudflare 边缘。代理开关只影响 HTTP 类记录,TTL 只在迁移时值得动手。

最容易出错的地方不在语法,在语义:根域 CNAME、MX 指向 CNAME、TXT 里多出的引号。这三类错误解析器不会报错,只会让功能悄悄失效。

数据来源与检索时间

检索时间 2026-11-10。DNS 查询为本机实跑。

来源URL对应数据
Cloudflare DNS 记录文档https://developers.cloudflare.com/dns/manage-dns-records/how-to/create-dns-records/记录类型、代理状态(Proxied / DNS only)对记录的影响、TTL 设置
Workers 路由文档https://developers.cloudflare.com/workers/configuration/routing/routes/自定义域/路由依赖 DNS 记录与代理状态

核验说明

  • example.com 的 A 记录、gmail.com 的 MX 记录为本机 Resolve-DnsName 实查结果,时间 2026-11-10。
  • 未做:没有在真实账号里创建记录(无 Zone 权限),代理开关的行为依据文档;CNAME flattening 只在 Cloudflare 侧成立这一点未做跨商对照。