1. DNS相关概念
1.1 DNS解析
DNS(Domain Name System)将人类可读的域名(如 www.example.com)转换为计算机可理解的IP地址(如 192.168.1.1)。当你在浏览器输入域名时,DNS查找对应的IP地址,指引浏览器找到正确的服务器。通过配置域名解析,可以将域名链接至你的网站。
一次解析通常涉及三类角色:
- 权威 DNS(Authoritative):域名的“最终答案”由谁发布(你的 DNS 服务商/自建权威服务器)。
- 递归解析器(Recursive Resolver):你电脑/路由器/运营商/公共 DNS(如 114/8.8.8.8)帮你去问权威并缓存结果。
- 缓存(Cache):解析结果会被缓存到 TTL 到期;不同层都有缓存(浏览器、系统、递归解析器、CDN/网关)。
1.2 DNS记录
DNS记录是域名系统中用于解析域名与IP地址对应关系的关键条目,支持多种类型如A(Address)、AAAA、CNAME(Canonical Name Record)、TXT、MX(Mail Exchanger)、NS、CAA、PTR、SRV等。
1.3 DNS服务器
在DNS查询解析过程中,涉及到多个不同的服务器。通常指的是权威名称服务器(Authoritative Nameserver)。
1.4 站点
站点代表一个具体的域名(如example.com)及其所有相关的DNS记录(A记录、AAAA记录、CNAME记录、MX记录等)。站点是域名管理的最小单位,一个站点包含了所有该域名及其子域名的DNS记录、TTL设置、安全配置、流量管理规则等。
1.5 TTL
英文全称Time To Live ,指的是全球运营商LocalDNS在获得权威DNS返回的解析结果后,将解析结果缓存的有效时间,也称为解析结果在LocalDNS的生存时间。
通常TTL值越小,解析变更对终端用户生效更快。建议将TTL设置为默认10分钟,过小的TTL值会导致Localdns缓存解析结果时间较短,并影响终端用户访问域名的解析速度。日常运维时可以先将TTL调整为1分钟,待2小时后修改记录值并将TTL调整为10分钟,这有助于解析快速生效。
1.6 域名的分层结构

- .com是顶级域TLD。
- aliyun.com是主域名、一级域名、根域名 apex。
- example.aliyun.com是子域名、二级域名。
也有把
aliyun.com称作二级域名的,那么对应的example.aliyun.com就是三级域名。
1.7 CNAME拉平
CNAME拉平(CNAME Flattening)是一种DNS优化技术,它允许在主域名(例如example.com)上添加CNAME记录,CNAME记录通常用于将一个域名指向另一个域名。
在传统的DNS系统中,如果一个主域名使用了CNAME记录,那么它通常不能同时拥有其他类型的记录,如A记录或AAAA记录。ESA提供的CNAME拉平功能解决了这个问题,它允许顶级域名使用CNAME记录,同时保持其他记录的存在。这可以提高DNS解析的性能,因为DNS查询可以直接指向实际的IP地址,而不是再次进行CNAME的解析。
2. 常见记录类型与用途
| 记录类型 | 用途说明 | 记录值格式 | 常见场景 |
|---|---|---|---|
| A | 将域名指向一个 IPv4 地址。 | IPv4 地址,如 192.0.2.1 | 网站服务器解析 |
| AAAA | 将域名指向一个 IPv6 地址。 | IPv6 地址,如 2001:db8::1 | 为网站提供 IPv6 访问 |
| CNAME | 将域名指向另一个域名(别名),实现间接指向。 | 另一个有效域名(FQDN),如 cdn.example.net | 将域名指向 CDN 或 SaaS 服务 |
| MX | 指定处理该域名邮件的邮件服务器。 | 优先级(数字)+ 邮件服务器域名,如 10 mx1.mailprovider.com | 企业邮箱配置 |
| TXT | 提供文本信息,常用于验证域名所有权或配置安全策略。 | 自由文本字符串,如 v=spf1 include:example.com ~all | 各类验证(如 SSL、SPF、邮箱、DNS 验证) |
| NS | 指定某个域/子域的权威 DNS 服务器(委派)。 | 权威 DNS 主机名(FQDN),如 ns1.dnsprovider.com | 更换 DNS 服务商;把 sub.example.com 委派给另一套 DNS |
| SRV | 服务发现:指定某服务的目标主机与端口(可含优先级/权重)。 | 优先级 权重 端口 目标主机,如 10 5 443 svc.example.com(记录名通常为 _service._proto) | SIP/IM/某些游戏与企业服务的自动发现(如 _sip._tcp、_xmpp-server._tcp) |
| CAA | 声明哪些 CA 允许为该域签发 HTTPS 证书。 | 标志 标签 "值",如 0 issue "letsencrypt.org"、0 issuewild "letsencrypt.org" | 防止误签/限制证书签发机构;提升证书管理安全性 |
| PTR | 反向解析:把 IP 映射回域名(IP → 域名)。 | 域名(FQDN),如 host.example.com(通常在反向域 in-addr.arpa/ip6.arpa 配置) | 邮件服务器信誉/反垃圾校验;部分服务要求 IP 有反解 |
| SOA | 区域起始授权记录:描述一个 DNS 区的元信息(序列号、刷新等)。 | 一组区级字段(一般由 DNS 服务商自动生成/维护) | 自建权威 DNS 或高级 DNS 运维场景(普通面板通常不手动改) |
A:IPv4 地址
- 含义:把域名解析到 IPv4(例如
192.0.2.1) - 典型场景:服务器直连、没有 CDN、或根域需要指向 IP
- 示例:
主机记录(域名前缀) 记录类型 记录值 @ A 192.0.2.1 www A 192.0.2.1 记录值是任意合法公网 IPv4 地址。
不涉及端口设置,DNS 仅完成域名到IP的解析,不涉及具体应用层访问。
AAAA:IPv6 地址
- 含义:把域名解析到 IPv6(例如
2001:db8::10) - 典型场景:站点支持 IPv6;和 A 可同时存在
- 示例:
主机记录(域名前缀) 记录类型 记录值 @ AAAA 2001:db8::10 www AAAA 2001:db8::10 记录值是任意合法公网IPv6地址。
CNAME:别名(指向另一个域名)
-
含义:将域名解析指向另一个域名, 由另一个域名提供 IP 地址解析结果。
-
典型场景:接入 CDN / 负载均衡(CDN 通常给你一个
xxxxx.cdnprovider.net) -
重要限制:任何其他 DNS 记录都不能与任何给定的 CNAME 记录同名。这意味着如果
example.com上有一个指向www.example.cdnprovider.net的example.com上不能有任何其他类型的 DNS 记录。假设 Sam 以笔名“Mark”撰写文章。尽管 Mark 和 Sam 是同一个人,但他的法律文件(如出生证明和护照)仍将使用他的真实姓名 Sam。DNS 记录也是如此:别名域只能指向实际域,而“法律文件”(其他 DNS 记录)必须位于该真实域下。
有一个例外,即在 CNAME 拉平的情况下,此时 CNAME 的行为类似于 A/AAAA 记录。事实上,所有代理 CNAME 记录的行为都是如此。但是,其他记录仍不允许与拉平的 CNAME 记录同名。详细了解 CNAME 拉平。
-
示例:
主机记录 记录类型 记录值 @ CNAME www.example.cdnprovider.net当我们访问
example.com这个域名的时候,DNS会通过CNAME记录获取到映射值www.example.cdnprovider.net,基于A记录(通常都是 CDN 服务维护的,我们无需添加),example.com域名最终也会解析到 CDN 边缘节点的IP地址"10.10.10.10"。
MX:邮件交换记录
-
含义:告诉全世界“发往某域的邮件应该投递到哪些邮件服务器”
-
值:必须是域名(mail server hostname),并带优先级(Priority,数值越小优先级越高)
-
典型场景:企业邮箱(腾讯/阿里/Google Workspace/Exchange 等)
-
示例:
主机记录 记录类型 记录值 mail MX mx01.dm.aliyun.com | 1记录值若指向企业邮箱,则为托管型,收信(SMTP 入站)、存储等主要由服务商负责。通常还需要配套加 TXT(SPF/DKIM/DMARC) 做发信防伪与送达率优化。
示例这种就是托管型, MX 的记录值指向的是阿里邮箱。
MX 的主机记录决定“哪个域名收信”:- 主机记录为
@:邮箱地址形如name@example.com - 主机记录为
mail:邮箱地址形如name@mail.example.com
记录值若指向自己的邮件服务器主机名(并且这个主机名必须有 A/AAAA 指到你的公网 IP),属于自建 MTA。需要自己负责:公网 IP/端口 25 可达、反垃圾、灰名单/黑名单、被封禁/退信处理等。
- 主机记录为
-
例如:小明(
xiaoming@gmail.com)要发送一封邮件给小红(xiaohong@example.com)。- 撰写与发送: 小明在邮件客户端写好邮件,点击“发送”。他的邮件客户端会通过SMTP协议,将邮件提交给小明的邮件服务器(比如Gmail的SMTP服务器)。
- 查询MX记录(关键一步): Gmail的SMTP服务器需要找到负责接收
example.com这个域邮件的服务器。它会向DNS系统发起查询:“example.com的MX记录是什么?” - DNS返回结果: DNS系统返回查询结果,例如:example.com 的 MX 记录:优先级 5: mx1.qiye.aliyun.com优先级 10: mx2.qiye.aliyun.com。这表示负责接收邮件的主服务器是
mx1.qiye.aliyun.com,备份服务器是mx2.qiye.aliyun.com。 - 投递邮件: Gmail的SMTP服务器会尝试连接优先级更高的
mx1.qiye.aliyun.com的 25端口(SMTP服务默认端口),并通过SMTP协议将小明的邮件“中继”或“传输”给这台服务器。 - 接收与存储:
mx1.qiye.aliyun.com这台服务器(运行着SMTP服务守护进程,如Postfix、Exchange等)接收并存储了这封邮件。 - 小红收取邮件: 当小红想查看邮件时,她的邮件客户端会使用 POP3 或 IMAP 协议,连接到 对应的邮件服务器(通常是同一个服务器集群,但服务端口是110/POP3或143/IMAP),从自己的邮箱里下载或读取这封邮件。
TXT:文本记录(验证、反垃圾、声明)
- 含义:放任意文本,常用于验证与策略
- 典型场景:
- 域名归属验证(例如“添加一条 TXT 证明你拥有此域名”)
- 反垃圾:SPF(
v=spf1 ...)、DKIM(通常是 selector 子域的 TXT)、DMARC(_dmarc子域 TXT) - 其他:Google/Office 站点验证、应用回调校验
NS:域名服务器(委派)
- 含义:告诉上级“这个区由哪些权威 DNS 服务器负责”
- 典型场景:把子域委派给另一套 DNS(例如把
dev.example.com交给公司内部 DNS)
SRV:服务发现(端口 + 主机)
- 含义:用于定位某服务的主机与端口(例如 SIP、某些 IM/游戏服务)
- 典型格式:
_service._proto.name,如_sip._tcp.example.com
其他记录
- CAA:声明哪些 CA 允许给该域签证书(HTTPS 证书)
- PTR:反向解析(IP → 名字),一般由 ISP/云厂商控制,不在普通域名解析面板里配
- SOA:区域起始授权记录(区级元数据,权威区必有)
3. 解析冲突表
情况一:主机记录为 @(根域 / apex)
在主机记录相同、解析线路相同的情况下,这几种不同类型的解析记录不能共存:
- ❌:冲突,在相同的主机记录情况下,同一条解析线路下,该两种类型的解析记录不允许共存。如:已经设置了
example.com的 A 记录,则不允许再设置example.com的 CNAME 记录; - ✅:不冲突,在相同的主机记录情况下,同一条解析线路下,该两种类型的解析记录可以共存。如:已经设置了
example.com的 A 记录,则还可以再设置example.com的 MX 记录; - ↔️:可重复,指在同一类型下,同一条线路下,可设置相同的多条记录值。如:已经设置了
example.com的 A 记录,还可以继续再设置example.com的 A 记录。
| NS | CNAME | A | URL | MX | TXT | AAAA | SRV | CAA | SVCB(别名模式) | SVCB(服务模式) | HTTPS(别名模式) | HTTPS(服务模式) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| NS | ↔️ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| CNAME | ✅ | ↔️ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| A | ✅ | ❌ | ↔️ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| URL | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| MX | ✅ | ✅ | ✅ | ✅ | ↔️ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| TXT | ✅ | ✅ | ✅ | ✅ | ✅ | ↔️ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| AAAA | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ↔️ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| SRV | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ↔️ | ✅ | ✅ | ✅ | ✅ | ✅ |
| CAA | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ↔️ | ✅ | ✅ | ✅ | ✅ |
| SVCB(别名模式) | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ↔️ | ❌ | ✅ | ✅ |
| SVCB(服务模式) | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ↔️ | ✅ | ✅ |
| HTTPS(别名模式) | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ↔️ | ❌ |
| HTTPS(服务模式) | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ↔️ |
情况二:主机记录不为 @(如 www / mail 等子域)
在主机记录相同、解析线路相同的情况下,这几种不同类型的解析记录不能共存:
- ❌:冲突,在相同的主机记录情况下,同一条解析线路下,该两种类型的解析记录不允许共存。如:已经设置了
www.example.com的 A 记录,则不允许再设置www.example.com的 CNAME 记录; - ✅:不冲突,在相同的主机记录情况下,同一条解析线路下,该两种类型的解析记录可以共存。如:已经设置了
www.example.com的 A 记录,则还可以再设置www.example.com的 MX 记录; - ↔️:可重复,指在同一类型下,同一条线路下,可设置相同的多条记录值。如:已经设置了
www.example.com的 A 记录,还可以继续再设置www.example.com的 A 记录。
| NS | CNAME | A | URL | MX | TXT | AAAA | SRV | CAA | SVCB(别名模式) | SVCB(服务模式) | HTTPS(别名模式) | HTTPS(服务模式) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| NS | ↔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| CNAME | ❌ | ↔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| A | ❌ | ❌ | ↔️ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| URL | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| MX | ❌ | ❌ | ✅ | ✅ | ↔️ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| TXT | ❌ | ❌ | ✅ | ✅ | ✅ | ↔️ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| AAAA | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ | ↔️ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| SRV | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ↔️ | ✅ | ✅ | ✅ | ✅ | ✅ |
| CAA | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ↔️ | ✅ | ✅ | ✅ | ✅ |
| SVCB(别名模式) | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ↔️ | ❌ | ✅ | ✅ |
| SVCB(服务模式) | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ↔️ | ✅ | ✅ |
| HTTPS(别名模式) | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ↔️ | ❌ |
| HTTPS(服务模式) | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ↔️ |
4. 为什么很多网站主站不用 apex,而是用 www
背景
企业网站基于访问加速或者安全访问等方面的考虑,使用了CDN、WAF、OBS等场景,不能直接配置A记录解析到网站IP,需要添加CNAME解析到CDN、WAF、OBS等服务的CNAME地址。
由于DNS标准协议不允许同域名CNAME解析和其他解析类型(例如邮箱MX)共存,而域名又要用作企业办公邮箱,所以会存在特殊情况(例如CNAME与MX解析记录冲突)导致邮箱不可用,影响企业正常办公。
行业通用配置方案
网站解析:
- 主域名
example.com添加A/AAAA记录解析到网站入口IP(或使用 DNS 的 ALIAS/ANAME/Flattening 指向云服务域名)。 - 子域名
www.example.com添加CNAME记录解析到CDN、WAF、OBS等云服务域名。 - 在网站入口上配置301/302跳转(nginx/Apache/CDN 规则等),将
example.com跳转到www.example.com。
邮箱解析:
主域名example.com配置MX解析记录(常见配在 apex),与 A/AAAA 不冲突。正常配置 SPF/DKIM/DMARC 即可。
示例
| 主机记录 | 记录类型 | 记录值/目标 | 说明 |
|---|---|---|---|
| @ | A / AAAA | 203.0.113.10 / 2001:db8::10 | 根域入口,可用于 301 跳转或直连 |
| www | CNAME | www.example.cdnprovider.net | 主站接入 CDN/WAF/OBS |
| @ | MX | 10 mx1.mailprovider.com | 企业邮箱入口(托管) |
| @ | TXT | v=spf1 include:mailprovider.com ~all | SPF |
| _dmarc | TXT | v=DMARC1; p=none; rua=mailto:dmarc@example.com | DMARC |
| selector1._domainkey | TXT | k=rsa; p=... | DKIM(由邮箱服务商提供) |
当然这个冲突也有其他的解决方案,比如CNAME拉平等
总结
同一主机名下不能同时存在 CNAME 与其他类型(DNSSEC 元记录除外)。因此:
- 绝大多数邮箱收信地址是
name@example.com,MX 需配置在 apex;apex 就不能放 CNAME。 - 如果 apex 放了 CNAME,就无法再配 MX/TXT 等,邮箱不可用。
- 采用
www做 CNAME 接 CDN,apex 用 A/AAAA/ALIAS + MX + 301/302 跳转到www可以同时满足网站加速与企业邮箱。
对SEO的影响
选 www 或根域本身不会影响 SEO;关键是不要被判定为两个站点。建议:
- 统一入口:只认一个主域(
www或 apex),另一侧做 301 永久跳转。 - Canonical:页面加
<link rel="canonical" href="https://www.example.com/...">指向主域 URL。 - 站长工具:在搜索引擎站长平台验证两个主机名,提交同一站点地图,设置首选域。
- 证书一致:HTTPS 证书覆盖
example.com和www.example.com。 - 内链一致:站内链接和 sitemap 使用同一主域,避免混用。
5. 使用dig|nslookup命令查询
一般常用的命令查询方法是dig(信息详细,适合调试)或nslookup(Windows 默认支持)。
判断方法:DNS查询返回的结果如果和您在云解析DNS中设置的一致,则代表解析已生效。
如果不一致,则查看缓存时间,如果缓存未到期,请等待缓存到期后再进行测试。
如果缓存到期且结果不一致,参考解析不生效问题快速排查。
dig命令
Linux(Debian Ubuntu等) 可通过
sudo apt install bind9-dnsutils安装,通过man dig以及dig -h查看手册和帮助信息。
Windows 用nslookup就行
1 . 最常用的查询命令
命令: dig 域名(示例:dig
example.com)

2 . 根据记录类型进行查询,比如MX,CNAME,NS,PTR等,只需将类型加在命令后面即可。
命令: dig 域名 记录类型(示例:dig
example.comNS)
成功解析记录的示例:

解析未生效、或者未设置解析记录场景的示例:

如果该域名没有设置对应记录,有些 DNS 服务器会默认返回 SOA 记录
3 . 指定域名DNS服务器测试解析是否生效的命令,以下以指定云解析DNS服务器和公共DNS服务器作为查询解析是否生效的示例演示。
云解析DNS服务器命令:dig 域名 @ns1.alidns.com (示例:dig
example.com@ns1.alidns.com )
公共DNS服务器命令:dig 域名 @8.8.8.8(示例:digexample.com@8.8.8.8 )
云解析DNS服务器:

公共DNS服务器:

4 . 使用dig +trace参数,使用这个参数之后将显示从根域逐级查询的过程,trace查询可以看到根域、 顶级域、以及一级域名的权威服务器的地址,及其各自的返回结果,这样对于追踪DNS解析中的问题有很大的帮助。
命令:dig 域名 +trace(示例:dig
example.com+trace)

nslookup 命令
1 . 查看本地DNS解析结果。
命令:nslookup 域名(示例:nslookup
example.com)

2 . 指定公共DNS,查询解析生效情况。
命令:nslookup 域名 公共DNS(以公共DNS服务器为示例:nslookup
example.com8.8.8.8)

3 . 根据记录类型进行查询,比如MX,CNAME,NS,PTR等
命令:nslookup -type=记录类型 域名(示例:nslookup -type=NS
example.com)


如果该域名没有设置对应记录,有些 DNS 服务器会默认返回 SOA 记录
默认评论
Halo系统提供的评论