注册域名之后,你需要让用户在浏览器输入域名时能访问到你的网站。这个「把域名指向服务器」的过程,就叫做域名解析,它是通过配置 DNS 记录来实现的。
很多人第一次打开域名管理后台,看到 A、AAAA、CNAME、MX、TXT 这些名词时会感到困惑。这篇文章从建站的实际场景出发,逐一解释每种记录类型的作用和配置方法。
一、DNS 解析到底在解决什么问题?
DNS(Domain Name System,域名系统)可以理解成互联网的「电话簿」。它把人类可读的域名(如 halo.run)翻译成机器可识别的 IP 地址(如 192.0.2.1)。
解析的大致流程:
用户浏览器 → 查询 DNS 服务器 → 获取 A 记录 → 返回服务器 IP → 发起访问
你需要在 DNS 服务商的后台添加各种解析记录,告诉 DNS 系统:当用户访问某个域名或子域名时,应该指向哪里。不同类型的记录,定义的是不同种类的指引关系。
二、A 记录和 AAAA 记录:把域名指向 IP 地址
A 记录(IPv4)
A 记录是最基础、最常用的记录类型。它的作用是把一个域名(或子域名)指向一个 IPv4 地址。
典型场景:把 www.yourdomain.com 指向你的服务器 IP 123.123.123.123。
主机记录:www
记录类型:A
记录值:123.123.123.123
TTL:600(默认即可)
配置完成后,用户访问 www.yourdomain.com 就会被引导到 IP 为 123.123.123.123 的服务器。
根域名(@ 记录):如果你想直接用 yourdomain.com(不带 www)访问网站,需要为主机记录填 @ 添加一条 A 记录。
AAAA 记录(IPv6)
与 A 记录功能相同,但指向的是 IPv6 地址。如果你的服务器支持 IPv6,可以同时添加 A 和 AAAA 记录,以兼容不同网络环境。
关键注意事项
- 一条主机记录可以有多条 A 记录(指向不同 IP),用于简单的 DNS 轮询或容灾,但它不能替代真正的负载均衡和健康检查。
- A 记录指向的是 IP 地址,不能填域名。
- 服务器更换 IP 后,必须更新 A 记录。
三、CNAME 记录:把域名指向另一个域名
CNAME(Canonical Name)记录的作用是把一个域名指向另一个域名,而不是 IP 地址。
典型场景:CDN 接入。当你为网站接入 CDN 后,CDN 服务商会给你一个域名(如 example.cdn.com),你需要把 www.yourdomain.com 通过 CNAME 指向这个 CDN 域名。
主机记录:www
记录类型:CNAME
记录值:example.cdn.com
配置完成后,用户访问 www.yourdomain.com 的请求会先到达 CDN 节点,CDN 再回源到你的服务器。
CNAME 与 A 记录的冲突规则
这是最重要的规则:同一主机记录不能同时存在 CNAME 记录和其他类型的记录。
例如,如果你为 www 设置了 CNAME 记录,就不能再为 www 设置 A 记录或 MX 记录。这是一个 DNS 协议层面的硬性限制,不是服务商的 bug。
根域名不能用 CNAME
另一个关键限制:传统 DNS 记录中,根域名(yourdomain.com,主机记录为 @)通常不能直接使用 CNAME 记录。这是 DNS 协议的规范要求,因为根域名的 SOA 和 NS 记录不允许与 CNAME 共存。
如果你的 CDN 要求根域名也用 CNAME,解决方案取决于你的 DNS 服务商:
- Cloudflare 支持 CNAME Flattening,自动在后台处理。
- 部分 DNS 服务商支持 ALIAS、ANAME 或类似的扁平化能力。
- 如果服务商只提供显性/隐性 URL 跳转,要注意这不是 DNS 层的 CNAME,不适合作为 CDN 根域名接入方案。
- 如果都不支持,可以给根域名设 A 记录指向 CDN 提供的 IP(需要 CDN 支持),或者仅将
www子域名接入 CDN,根域名做 301 跳转到www。
四、MX 记录:邮件交换记录
MX(Mail Exchange)记录用于指定某个域名接收邮件的服务器地址。
典型场景:你想使用 admin@yourdomain.com 作为企业邮箱,由腾讯企业邮箱或阿里企业邮箱托管。
主机记录:@
记录类型:MX
记录值:mxbiz1.qq.com
优先级:5
MX 记录的「优先级」是数字越小优先级越高。多设几条不同优先级的 MX 记录可以实现邮件服务器的容灾。
注意事项
- MX 记录只影响邮件收发,不影响网站访问。
- MX 记录的值必须是域名,不是 IP 地址。
- 如果你不使用域名邮箱功能,不需要添加 MX 记录。
五、TXT 记录:文本验证记录
TXT 记录用于存储一段文本信息,最常见的用途是域名所有权验证。
典型场景 1:Google Search Console 验证
在 Google Search Console 添加网站时,Google 会要求你添加一条特定的 TXT 记录来证明你是该域名的所有者。
主机记录:@
记录类型:TXT
记录值:google-site-verification=xxxxxxxxxx
典型场景 2:SPF 记录(邮件发信验证)
如果你使用域名邮箱发送邮件,SPF(Sender Policy Framework)记录可以防止他人伪造你的域名发邮件。
主机记录:@
记录类型:TXT
记录值:v=spf1 include:spf.mail.qq.com ~all
典型场景 3:DKIM 和 DMARC
这两个是更高级的邮件安全验证机制,用于增强邮件可信度、防止邮件被标记为垃圾邮件。一般由企业邮箱服务商提供配置值。
注意事项
- TXT 记录通常不影响网站访问;但 SPF、DKIM、DMARC 这类 TXT 记录会影响邮件身份验证和投递质量,配置错误可能导致发信进垃圾箱或被拒收。
- 验证完成后,Search Console 类的 TXT 记录通常可以保留不动(删除可能导致验证失效)。
六、解析生效时间和排查方法
TTL:Time to Live
TTL 表示 DNS 记录在全球 DNS 服务器中的缓存时间,单位是秒。默认值通常是 600 秒(10 分钟)。
TTL 越短,解析变更生效越快,但 DNS 查询负担略增。建站初期可以设短一些(如 300 秒),方便调试;站点稳定后可以适当调长(如 3600 秒)。
解析生效为什么需要等待?
添加或修改 DNS 记录后,全球各地的 DNS 缓存服务器需要等待旧记录的 TTL 过期,才会拉取新的记录。这意味着:
- 不是即时生效:最慢可能需要等待原 TTL 时长。
- 不同地区生效时间可能不同:取决于当地 ISP 的 DNS 缓存策略。
排查 DNS 问题的工具
-
nslookup命令(Windows/macOS/Linux 通用):nslookup yourdomain.com直接查询当前域名的解析结果。
-
dig命令(macOS/Linux):dig yourdomain.com A查询特定记录类型。
-
在线工具:如 DNSChecker.org,可以查看全球不同地区的解析结果,判断是配置问题还是缓存延迟。
七、用 Halo 建站时,DNS 怎么配?
场景 1:服务器直连(无 CDN)
主机记录:www 类型:A 值:你的服务器 IP
主机记录:@ 类型:A 值:你的服务器 IP
两条记录即可。然后配置 Nginx 或类似工具,把不带 www 的域名 301 跳转到带 www 的版本(或反之),避免搜索引擎视为两个不同页面。
场景 2:接入 CDN
主机记录:www 类型:CNAME 值:CDN 提供的加速域名
主机记录:@ 类型:A 值:服务器 IP
或使用 DNS 服务商支持的 CNAME Flattening / ALIAS / ANAME
场景 3:添加 Search Console / Bing Webmaster Tools 验证
主机记录:@ 类型:TXT 值:Google / Bing 提供的验证字符串
场景 4:企业邮箱
主机记录:@ 类型:MX 值:邮箱服务商提供的邮件服务器地址 优先级:5
主机记录:@ 类型:TXT 值:SPF 记录(邮箱服务商提供)
速查表
| 记录类型 | 作用 | 记录值 | 能否用于根域名 |
|---|---|---|---|
| A | 域名 → IPv4 地址 | IP 地址 | ✅ 可以 |
| AAAA | 域名 → IPv6 地址 | IPv6 地址 | ✅ 可以 |
| CNAME | 域名 → 另一个域名 | 域名 | 传统 DNS 下通常不直接使用 |
| MX | 指定邮件服务器 | 域名 | ✅ 可以 |
| TXT | 文本验证 / SPF | 文本字符串 | ✅ 可以 |
记住三条规则就够了:同一主机记录的 CNAME 不能和其他记录共存;根域名不能用 CNAME;修改了解析之后耐心等 TTL 过期。不确定配置是否正确的时候,用 dig 或 nslookup 命令先验证一下,再等待全球生效。
解析配好了,接下来该选服务器了。不同类型的托管方案之间差别不小,值得花时间搞清楚。