域名解析进阶:A/CNAME/MX/TXT 记录一次讲透

zheng头像
zheng 2026-07-22 18:00
楼主

# 域名解析进阶:A / AAAA / CNAME / MX / NS / TXT 记录一次讲透

很多人买了域名、配了 DNS,但一看到 A 记录、CNAME 就头大。别怕,今天用最通俗的语言 + 实际场景 + dig 命令验证,把这些记录彻底讲明白。
读完这篇,你不仅能配好 DNS,还能用命令行自己排查解析问题。

---

## 一、DNS 解析的基础概念

DNS(Domain Name System)可以理解成互联网的电话本。你输入 zjunwei.com,DNS 把这个人类可读的名字翻译成机器可读的 IP 地址(如 1.2.3.4)。

DNS 记录就是这本电话本里的"条目",每种记录有不同的用途。核心有 6 种:

| 记录类型 | 作用 | 类比 |
|---------|------|-----|
| A | 域名 → IPv4 地址 | 家庭住址 |
| AAAA | 域名 → IPv6 地址 | 新版家庭住址 |
| CNAME | 域名 → 另一个域名 | 别名/外号 |
| MX | 指定邮件服务器 | 邮局地址 |
| NS | 指定 DNS 服务器 | 电话本管理员 |
| TXT | 存储文本信息 | 备注栏 |

---

## 二、A 记录(Address Record)

**作用**:把域名指向一个 IPv4 地址。

**实际场景**:你的服务器 IP 是 123.45.67.89,你想让 zjunwei.com 指向它。

配置示例(Cloudflare / 阿里云 DNS 后台):

```text
类型:A
名称:@(代表根域名)
内容:123.45.67.89
TTL:600
```

**常见子域名 A 记录**:

```text
名称:www → 内容:123.45.67.89
名称:api → 内容:10.0.0.5
名称:cdn → 内容:203.0.113.1
```

**dig 验证**:

```bash
dig zjunwei.com A
```

输出关键行:

```text
zjunwei.com. 600 IN A 123.45.67.89
```

---

## 三、AAAA 记录(IPv6 Address Record)

**作用**:把域名指向 IPv6 地址。

**什么时候用**:你服务器有 IPv6 地址,或者你想让网站在纯 IPv6 环境下也能访问。

配置示例:

```text
类型:AAAA
名称:@
内容:2001:db8::1
```

**dig 验证**:

```bash
dig zjunwei.com AAAA
```

输出:

```text
zjunwei.com. 600 IN AAAA 2001:db8::1
```

**注意**:如果只配了 AAAA 没配 A,IPv4 用户无法访问。目前建议 A 和 AAAA 同时配置。

---

## 四、CNAME 记录(Canonical Name Record)

**作用**:把域名指向另一个域名,而不是 IP。

**为什么不用 A 记录**:假设你用 GitHub Pages 托管博客,它的 IP 地址可能会变。如果你配 A 记录指向它当前的 IP,IP 变了你的网站就挂了。用 CNAME 指向 yourname.github.io,GitHub 那边自动更新 IP,你完全不用管。

配置示例:

```text
类型:CNAME
名称:www
内容:yourname.github.io
```

**CNAME 的重要规则(容易踩坑)**:
- 根域名(@)不能配 CNAME,只能用 A 记录。这是 DNS 协议规定
- CNAME 不能和其他记录共存。配了 CNAME 就不能再配 A/AAAA/MX

**dig 验证**:

```bash
dig www.zjunwei.com CNAME
```

输出:

```text
www.zjunwei.com. 600 IN CNAME yourname.github.io.
```

---

## 五、MX 记录(Mail Exchange Record)

**作用**:告诉全世界你的域名的邮件该送到哪个服务器。

**实际场景**:你用了 Google Workspace 或腾讯企业邮箱,需要配置 MX 记录让邮件能正常收发。

Google Workspace 的 MX 配置:

```text
类型:MX 名称:@ 内容:ASPMX.L.GOOGLE.COM 优先级:1
类型:MX 名称:@ 内容:ALT1.ASPMX.L.GOOGLE.COM 优先级:5
类型:MX 名称:@ 内容:ALT2.ASPMX.L.GOOGLE.COM 优先级:5
```

**优先级含义**:数字越小优先级越高。邮件系统会先尝试 1 号服务器,不可用再尝试 5 号。

**dig 验证**:

```bash
dig zjunwei.com MX
```

输出:

```text
zjunwei.com. 300 IN MX 1 aspmx.l.google.com.
zjunwei.com. 300 IN MX 5 alt1.aspmx.l.google.com.
```

---

## 六、NS 记录(Name Server Record)

**作用**:指定由哪个 DNS 服务器来管理你的域名解析。

**什么时候配**:更换 DNS 服务商时(比如从阿里云 DNS 换成 Cloudflare DNS)。

配置位置:**不在 DNS 管理后台配,而是在域名注册商后台配。**

举例:把 DNS 从阿里云换到 Cloudflare:

```text
类型:NS
名称:@
内容:alice.ns.cloudflare.com
内容:bob.ns.cloudflare.com
```

**dig 验证**:

```bash
dig zjunwei.com NS
```

输出:

```text
zjunwei.com. 86400 IN NS alice.ns.cloudflare.com.
zjunwei.com. 86400 IN NS bob.ns.cloudflare.com.
```

---

## 七、TXT 记录(Text Record)

**作用**:存储任意文本信息。虽然叫"文本记录",但主要用途是安全验证。

**三大实际用途**:

### 1. SPF(防邮件伪造)
告诉邮件接收方,哪些 IP 或服务器有权用你的域名发邮件:

```text
类型:TXT
名称:@
内容:v=spf1 include:_spf.google.com ~all
```

### 2. DKIM(邮件签名验证)
公钥存在 TXT 记录里,邮件接收方用来验签:

```text
类型:TXT
名称:google._domainkey
内容:v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQ...
```

### 3. 域名所有权验证
Google Search Console / SSL 证书验证 / 第三方服务验证:

```text
类型:TXT
名称:@
内容:google-site-verification=AbCdEf123456
```

**dig 验证**:

```bash
dig zjunwei.com TXT
```

输出:

```text
zjunwei.com. 300 IN TXT "v=spf1 include:_spf.google.com ~all"
```

---

## 八、实战:用 dig 排查 DNS 问题

### 场景 1:网站打不开,先看解析对不对

```bash
dig zjunwei.com A
```

检查返回的 IP 是不是你的服务器 IP。如果不是 → DNS 配置错误或被劫持。

### 场景 2:改完 DNS 不生效

```bash
dig zjunwei.com A @8.8.8.8
```

@8.8.8.8 指定用 Google 的公共 DNS 查询(不走本地缓存)。如果这个结果正确,说明 DNS 已生效,你的本地还没刷新。

### 场景 3:追踪完整解析路径

```bash
dig zjunwei.com +trace
```

从根 DNS 一路追踪到最终的 A 记录,能看到每一步的 DNS 服务器。

---

## 九、速查表

| 需求 | 用什么记录 | 示例值 |
|------|----------|-------|
| 网站指向服务器 | A | 123.45.67.89 |
| 网站指向 IPv6 | AAAA | 2001:db8::1 |
| 子域名指向另一个网站 | CNAME | other.example.com |
| 配置企业邮箱 | MX | mx.example.com |
| 换 DNS 服务商 | NS | ns1.example.com |
| SSL 验证 / 邮件签名 | TXT | 各种验证字符串 |

---

自建文件分享服务:Pingvin Share 比网盘更好用 一键部署 Wiki:Wiki.js 搭建个人知识库

最新回复

暂无回复,来说两句吧

发表评论

站点总访问量:6246