🌈个人主页 :一条泥憨鱼(欢迎各位大佬莅临)

🎬精选专栏传送门:
❄️《数据结构》 ❄️《AI与Agent那些事》
❄️《从0开始学计算机网络》 ❄️《后端开发》

前言:
假设你昨天刚花几十块钱买了一个域名,比如 `my-cool-site.com`。你兴冲冲地跑到域名注册商的后台,想让它能打开你的网站。结果一看,后台密密麻麻全是表单,里面有一个词你听都没听过------DNS 记录。
A 记录、CNAME、MX......这些是什么鬼?该填哪个?
别慌。这篇文章就把最常见的六种 DNS 记录类型挨个讲明白,保证你看完就知道该怎么填,也看得懂别人在说什么。

先搞懂 DNS 到底在干嘛
在讲"记录类型"之前,我们得先弄清楚 DNS 本身是个啥。
你可以把互联网想象成一个巨大的城市,每台服务器就是城市里的一栋房子。每栋房子都有一个门牌号,这个门牌号就是IP 地址。比如 `104.21.55.12` 就是一栋"房子"的门牌号。
但问题来了------正常人谁记得住 `104.21.55.12` 这种数字?你只会记得 `google.com` 这个"名字"。
DNS(Domain Name System,域名系统) 就是干这个的:它是一本巨大的电话簿,专门负责把"名字"翻译成"门牌号"。你在浏览器里输入 `google.com`,DNS 就帮你查一下这本电话簿,找到对应的 IP 地址,然后你的电脑才能连上那台服务器。

那么,DNS 记录是什么?
就是这本电话簿里的一行行条目。每一条记录,就是一条"名字 → 地址"的映射规则。不同的记录类型,就是不同格式的"条目"------有的记录是告诉你"这个名字对应哪个 IP",有的是告诉你"这个名字对应另一个名字",还有的是告诉你"这个域名管邮件的是谁"。
接下来我们逐个看。
A 记录和 AAAA 记录------最基础的两兄弟
先来说最基础、最常用的两种:A 记录 和AAAA 记录。
刚才说了,IP 地址 是服务器的"门牌号"。但门牌号有两种格式:
-
IPv4:长这样 `104.21.55.12`,是四组数字,每组 0~255。这是最老牌的门牌号格式,用了好几十年。但问题是,全球的 IPv4 地址快用完了,不够分。
-
IPv6:长这样 `2606:4700:4700::1111`,是一长串十六进制字符。这是新一代门牌号格式,数量多到几乎用不完。

A 记录(Address Record) 就是把一个域名指向一个IPv4地址。比如:
my-cool-site.com. 3600 IN A 104.21.55.12
意思是:如果有人访问 `my-cool-site.com`,请带他去 `104.21.55.12` 这台服务器。
AAAA 记录(Quad-A Record) 则是指向IPv6 地址。注意,不是"4A"而是"AAAA"------因为 IPv6 地址是 IPv4 的四倍长,所以名字里也带了四个 A。
my-cool-site.com. 3600 IN AAAA 2606:4700:4700::1111
怎么查一个域名有没有 A 记录?用 `dig` 命令(macOS / Linux 自带,Windows 可以装一个):
bash
$ dig google.com A
;; ANSWER SECTION:
google.com. 300 IN A 142.250.72.14
```
看到 `A` 那一行了吗?那就是 Google 的 IPv4 地址。再查一下 AAAA:
bash
$ dig google.com AAAA
;; ANSWER SECTION:
google.com. 300 IN AAAA 2404:6800:4008:c06::8a
```
实际使用中,绝大多数网站只需要 A 记录就够了。如果你买的主机只给你一个 IPv4 地址,那就只填 A 记录。如果你的服务器同时支持 IPv6,那可以两条都填上,这样 IPv6 用户访问你的网站时就不用绕路。
CNAME 记录------起外号的技巧
接下来是 CNAME 记录(Canonical Name Record,规范名称记录)。
它解决的是一个很常见的需求:给域名起别名。
举个例子。你的主域名是 `my-cool-site.com`,但你希望用户输入 `www.my-cool-site.com` 也能打开你的网站------毕竟大家都习惯敲 `www`。
你有两个选择:
再建一条 A 记录,把 `www.my-cool-site.com` 也指向同一个 IP。
建一条 CNAME 记录,让 `www.my-cool-site.com` **指向** `my-cool-site.com`,剩下的让 DNS 系统自己去查。
第二种就是 CNAME 的用法:
bash
```
www.my-cool-site.com. 3600 IN CNAME my-cool-site.com.
```

你可以把它理解成"公司前台转接":别人打 `www` 这个分机,前台(CNAME)直接把电话转给主号码(`my-cool-site.com`)去处理。
CNAME 最常见的用途有两个:
-
统一入口:就像上面这样,把 `www` 指向主域名,或者反过来。
-
CDN 加速:很多 CDN 服务商会给你一个类似 `xxx.cloudfront.net` 的域名,你只要用 CNAME 把你的域名指过去,CDN 就自动帮你分发内容了。
但 CNAME 有个大坑,新手特别容易踩:
CNAME 不能指向 IP 地址,只能指向另一个域名。
什么意思?你不能写:
bash
www.my-cool-site.com. 3600 IN CNAME 104.21.55.12 # ❌ 错误
CNAME 的目标必须是一个域名。另外,CNAME 不能和 MX 记录同时存在( 下一节讲 MX),因为CNAME 会把所有查询都"转交"出去,邮件服务器就找不着方向了。
MX 记录------让邮件找到你家邮箱
假设你用 `my-cool-site.com` 这个域名来收发邮件,邮箱地址是 `hello@my-cool-site.com`。
那么问题是:当别人给你发邮件时,他怎么知道这封邮件该送到哪台服务器?
答案是看 MX 记录(Mail Exchange Record,邮件交换记录)。
你可以把 MX 记录想象成小区的收发室。别人给你寄信,地址写的是"XX 小区 3 栋 502",但邮递员不知道 502 具体在哪------他只需要把信交给收发室(MX 服务器),收发室自然会分拣到你家。

MX 记录长这样:
bash
my-cool-site.com. 3600 IN MX 10 mail.my-cool-site.com.
注意中间那个 `10`,这叫优先级 。数字越小,优先级越高。如果你配置了两条 MX 记录:
bash
my-cool-site.com. 3600 IN MX 10 mail1.my-cool-site.com.
my-cool-site.com. 3600 IN MX 20 mail2.my-cool-site.com.
那么发件服务器会优先尝试`mail1`,如果 `mail1` 挂了,再尝试 `mail2`。这就像收发室有两个窗口,优先找 1 号窗口,没人再去 2 号。
配置 MX 记录时,需要把目标指向你实际的邮件服务器域名。如果你用的是企业邮箱服务(比如腾讯企业邮、阿里企业邮),服务商会给你一串 MX 记录值,你照着填就行。
这里有个很容易搞混的点:MX 记录的目标不能是 IP 地址,必须是域名 。而且,目标域名本身需要有一条 A 记录,否则邮件服务器也找不到它。
NS 记录和 PTR 记录------管事的和反查的
最后两个相对冷门,但面试和排查问题时经常会碰到。
NS 记录(Name Server Record,域名服务器记录) ------它的作用是委派。
"委派"这个词听起来有点官腔,换个说法:NS 记录就是告诉全世界"这块地归谁管" 。

举个例子。你有一个域名 `example.com`,它的所有 DNS 记录都托管在某个 DNS 服务商那里。那么 `example.com` 的 NS 记录就会指向那个服务商的域名服务器,比如:
bash
example.com. 3600 IN NS ns1.dnsprovider.com.
example.com. 3600 IN NS ns2.dnsprovider.com.
这就像你买了一块地,立了个牌子写着"这片地归 XX 物业管理处管"。别人想知道这块地的任何信息(比如 A 记录、MX 记录),都要去问那个物业管理处。
NS 记录还有一个常见场景:把子域名委派出去。比如你想把 `blog.example.com` 单独交给另一个 DNS 服务商管理,就可以在 `example.com` 上加上:
bash
blog.example.com. 360
这样一来,`blog.example.com` 的查询就会交给另一家服务商处理,而 `example.com` 的其他记录不受影响。
**PTR 记录(Pointer Record,指针记录)**则是反着来的。
A 记录解决的是"域名 → IP"的查询,PTR 记录解决的是"IP → 域名"的查询 。这叫做反向解析。
什么时候会用到?最常见的是邮件服务器的反垃圾邮件验证。很多邮件服务器收到邮件时,会反向查一下发件 IP 是否有对应的域名,如果没有,可能直接判为垃圾邮件。
怎么查 PTR 记录?用 `nslookup`:
bash
$ nslookup 142.250.72.14
14.72.250.142.in-addr.arpa name = maa03s26-in-f14.1e100.net.
```
看到没?它把 IP 反查回了域名 `maa03s26-in-f14.1e100.net`------这是 Google 的服务器。
注意 PTR 记录不是你想配就能配的。因为 IP 地址是运营商或云服务商分配给你的,PTR 记录通常需要向 IP 的所有者申请才能配置,一般用户接触不到。
总结
最后,把今天讲的六种记录类型汇总成一张对照表:
| 记录类型 | 作用 | 类比 | 常用人群 |
| A | 域名 → IPv4 地址 | 门牌号 | 所有人 |
| AAAA | 域名 → IPv6 地址 | 新门牌号 | 支持 IPv6 的站点 |
| CNAME | 域名 → 另一个域名(别名) | 前台转接 | 有 CDN / 多子域名 |
| MX | 指定邮件服务器 | 小区收发室 | 用域名收发邮件 |
| NS | 指定域名由谁管理(委派) | 物业牌子 | 域名托管 / 子域名拆分 |
| PTR | IP → 域名(反向查询) | 门牌号查户主 | 邮件服务器、反垃圾 |
初学者最常碰到的就是 A、CNAME、MX 三种。买完域名,先配一条 A 记录指向你的服务器,网站就能开了;想加 `www`,加一条 CNAME;想用域名收邮件,配 MX。NS 和 PTR 了解就好,遇到问题再深入。
最后给你一个建议:装个 `dig` 工具(macOS / Linux 自带,Windows 可以装 WSL 或下载 Windows 版),没事就 `dig example.com A` 查一查,再 `dig example.com MX` 查一查。看多了这些输出,DNS 记录对你来说就不再是玄学了。
毕竟,DNS 就像互联网的通讯录,而记录类型,就是通讯录里不同的字段。搞懂了它们,你的域名就真正"听你指挥"了。