几乎每个 DNS 区域都会遇到的记录
什么是 DNS A 记录?何时需要 AAAA 记录
A 记录是 DNS 区域中影响最大的一行。它把主机名映射到 IPv4 地址,一旦它出错或缺失,无论其他一切配置得多么完美,您的网站都无法访问。
A 代表 Address(地址)。与它对应的 IPv6 记录是 AAAA 记录(读作“quad-A”),之所以这样命名,是因为 IPv6 地址的长度是 IPv4 地址的四倍。
A 记录的结构
example.com. 3600 IN A 93.184.216.34
www.example.com. 3600 IN A 93.184.216.34
example.com. 3600 IN AAAA 2606:2800:220:1::248从左到右依次是:
| 字段 | 值 | 含义 |
|---|---|---|
| 名称 | example.com. | 该记录所应答的主机名。在大多数控制面板中,@ 表示裸域名。 |
| TTL | 3600 | 解析器可以缓存此记录的秒数。参见 TTL。 |
| 类别 | IN | 表示 Internet。您永远不会用到其他值。 |
| 类型 | A | IPv4 地址记录。 |
| 值 | 93.184.216.34 | 地址本身,必须是字面的 IP,绝不能是主机名。 |
A 与 AAAA 的对比
| A 记录 | AAAA 记录 | |
|---|---|---|
| 指向 | IPv4 地址 | IPv6 地址 |
| 示例值 | 93.184.216.34 | 2606:2800:220:1::248 |
| 是否必需? | 实际上是 | 强烈建议 |
| 客户端何时使用 | 具备 IPv4 连接时 | 具备 IPv6 连接时 |
二者不是互相替代的关系,请同时发布。双栈客户端通常会优先使用 IPv6,失败时再回退到 IPv4,所以两者都有,才能让每位访问者都有一条可用的路径。只发布 A 记录,会让纯 IPv6 的客户端(部分移动网络中确实存在)完全无法访问您。
同一名称对应多条 A 记录
一个主机名可以有多条 A 记录。解析器会把它们全部返回,通常还会轮换顺序,从而把流量分摊到各台服务器上,这就是经典的 DNS 轮询。
example.com. 300 IN A 93.184.216.34
example.com. 300 IN A 93.184.216.35
example.com. 300 IN A 93.184.216.36这是一种粗糙的负载均衡:DNS 不知道服务器是否健康,所以失效的地址会一直被返回,直到您删除这条记录。为什么一个域名有多个 IP介绍了更好的替代方案。
让网站出故障的四个错误
忘记配置
www记录example.com和www.example.com是不同的主机名,需要各自独立的记录。只设置其中一个而不设置另一个,意味着有一半的访客会访问到一个失效的名称。在错误的服务商处编辑记录
如果您的
NS记录委派给了您的托管服务商,那么在注册商处编辑的记录会被完全忽略。请先检查哪些域名服务器是权威的。迁移前没有调低 TTL
修改 TTL 为 86400 秒的 A 记录,意味着最长 24 小时的流量分流。请在迁移的前一天调低 TTL。
在 CNAME 旁保留过时的 A 记录
一个名称不能同时拥有 CNAME 和其他记录。许多服务商会悄悄忽略其中一条,导致行为不一致。
通配符、子域名与根域名
有三种命名情形经常出现,而且表现差异很大,值得分开说明。
根域名(apex)记录
根域名就是不带子域名的裸域名,即 example.com。在大多数控制面板中,它写作 @。在这个名称上,您经常必须使用 A 记录而不是 CNAME,因为协议禁止 CNAME 与根域名必须携带的 NS 和 SOA 记录共存。
子域名记录
每个子域名都是独立的名称,需要自己的记录。www、blog、shop 和 api 不会从根域名继承任何内容,在 example.com 上设置 A 记录,对 www.example.com 完全没有任何作用。
通配符记录
通配符会应答任何没有自己记录的名称。
*.example.com. 3600 IN A 93.184.216.34这对多租户产品很有用,每位客户都能获得 their-name.example.com,而无需为每次注册修改 DNS。在使用通配符之前,有两点需要了解:
- 明确的记录始终优先。如果
api.example.com有自己的A记录,针对该名称就不会再参考通配符。 - 通配符只覆盖一级。
*.example.com匹配foo.example.com,但不匹配foo.bar.example.com。
检查您的 A 记录
dig +short example.com A
dig +short example.com AAAA也可以使用查询工具一次解析两者,它会分别独立地查询 A 和 AAAA 并分开列出,让您立刻看出 IPv6 是否真的已经配置。
核心要点
A 记录 = 名称到 IPv4。AAAA 记录 = 名称到 IPv6。两者都填写字面的地址,绝不填写主机名,而同时发布两者,才能让每个人都能访问网站。
需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。
本主题的免费工具
常见问题
相关阅读
几乎每个 DNS 区域都会遇到的记录
CNAME 与 A 记录:该用哪一种?
决策只取决于一个问题:IP 地址由您掌控,还是由别人掌控?另外还有那条让所有人栽跟头的根域名规则。
几乎每个 DNS 区域都会遇到的记录
DNS 记录类型详解:完整参考
每一种值得了解的记录类型:它的作用、长什么样,以及人们常犯的错误,全部浓缩在一页参考中。
实际如何选择 TTL
什么是 DNS TTL?如何选择合适的值
一个数字,决定了变更多快生效,也决定了您产生多少 DNS 流量。下面教您如何有意识地选择它。