DNS 域名系统基础指南
这是一篇面向零基础读者的 DNS 教程,尽可能用通俗易懂的语言解释复杂的概念。
- 前言:为什么要学 DNS
- 第一章:什么是 DNS
- 第二章:DNS 的层级结构
- 第三章:常见 DNS 记录类型
- 第四章:DNS 查询的完整流程
- 第五章:如何配置 DNS
- 第六章:常用 DNS 命令和工具
- 第七章:常见问题与解决方案
前言:为什么要学 DNS
在正式开始之前,我们先来思考一个问题:为什么我们需要 DNS?
想象一下这样的场景:
你想给朋友打电话,但你不记得朋友的手机号码,只记得他的名字”小明”。
在日常生活中,你会怎么做?你可能会翻看通讯录,搜索”小明”,然后找到对应的电话号码。
DNS 的作用就类似于通讯录。当你在浏览器中输入 bayunmoyu.com 时,计算机并不知道这个域名对应哪个服务器,需要通过 DNS 将域名转换为 IP 地址,才能建立网络连接。
如果没有 DNS:
- 我们需要记住所有网站的 IP 地址(如
142.250.185.78而不是google.com) - 如果服务器更换 IP 地址,所有收藏的链接都会失效
- 无法实现一个服务器托管多个网站
第一章:什么是 DNS
1.1 DNS 的定义
DNS(Domain Name System,域名系统) 是互联网的一项核心服务,它作为一个分布式数据库,将人类可读的域名(如 bayunmoyu.com)转换为机器可识别的 IP 地址(如 192.168.1.1)。
你可以把 DNS 理解为互联网的电话簿或通讯录。
1.2 域名由什么组成
让我们以 www.bayunmoyu.com 为例,解释域名的结构:
| 部分 | 名称 | 示例 |
|---|---|---|
| 子域名 | Subdomain | www、blog、api、mail |
| 二级域 | Domain | bayunmoyu |
| 顶级域 | TLD | .com、.cn、.org、.net |
1.3 常见顶级域分类
通用顶级域(gTLD):
.com- 商业机构.org- 非营利组织.net- 网络服务机构.edu- 教育机构.gov- 政府机构
国家代码顶级域(ccTLD):
.cn- 中国.jp- 日本.uk- 英国.de- 德国
第二章:DNS 的层级结构
2.1 分布式架构
DNS 采用分布式、层级式的架构,没有一台 DNS 服务器存储所有的域名信息。这种设计有以下优点:
- 高可用性:即使部分服务器故障,其他服务器仍能正常工作
- 扩展性强:可以无限扩展域名数量
- 负载均衡:分散查询压力
2.2 DNS 服务器的类型
DNS 系统中有多种类型的服务器,各司其职:
根域名服务器(Root Server)
- 全球只有 13 组 根域名服务器(A-M)
- 负责管理顶级域(如
.com、.cn)的服务器地址 - 是 DNS 查询的起点
顶级域服务器(TLD Server)
- 负责特定顶级域下的所有二级域名
- 例如:
.com服务器管理所有.com结尾的域名
权威域名服务器(Authoritative Server)
- 存储实际的 DNS 记录
- 是域名解析的”最终负责人”
- 通常由域名注册商或 DNS 服务商提供
递归域名服务器(Recursive Resolver)
- 负责完整查询流程的”中介”
- 通常由 ISP(网络服务商)提供
- 会缓存查询结果以提高速度
- 其核心行为是代表用户客户端向各级 DNS 服务器发起递归查询,直到获得最终答案
2.3 层级关系图
💡 提示:这张图展示了 DNS 查询的整体流程。递归 DNS 就像一个”中介”,帮我们一步步找到最终的 IP 地址。
💡 说明:本文中
example.com是 ICANN 保留的示例域名,用于文档和测试,实际使用时请替换为自己的域名。
第三章:常见 DNS 记录类型
了解了 DNS 服务器如何工作后,我们来看存储在这些服务器上的具体”指令”——DNS 记录。
DNS 记录(Record)是存储在权威 DNS 服务器中的信息,不同类型的记录有不同的用途。
3.1 A 记录(Address Record)
最常用的记录类型,将域名指向一个 IPv4 地址。
举例说明:
假设你有一个服务器,IP 地址是 192.168.1.100,你想让 example.com 指向这个服务器:
| 记录类型 | 主机记录 | 值 | TTL |
|---|---|---|---|
| A | @ | 192.168.1.100 | 600 |
- 主机记录:
@表示直接解析example.com - TTL:600 秒(10分钟),表示缓存时间
3.2 AAAA 记录
与 A 记录类似,但用于 IPv6 地址。
| 记录类型 | 主机记录 | 值 | TTL |
|---|---|---|---|
| AAAA | @ | 2001:0db8:85a3:0000:0000:8a2e:0370:7334 | 600 |
💡 小知识:IPv6 地址是未来趋势,现在大多数网站同时提供 A 和 AAAA 记录。
3.3 CNAME 记录(Canonical Name)
创建别名,让一个域名指向另一个域名。
使用场景:
将 www.example.com 指向 example.com(@ 代表根域名):
| 记录类型 | 主机记录 | 值 | TTL |
|---|---|---|---|
| CNAME | www | @ | 600 |
| A | @ | 192.168.1.100 | 600 |
这样 www.example.com 实际上会和 example.com 解析到同一个 IP。
3.4 MX 记录(Mail Exchange)
指定邮件服务器,用于邮件收发。
举例:
| 记录类型 | 主机记录 | 值 | 优先级 | TTL |
|---|---|---|---|---|
| MX | @ | mail.example.com | 10 | 3600 |
- 优先级:数字越小,优先级越高。邮件首先发送到优先级为 10 的服务器
- 通常需要配合 A 记录使用
3.5 TXT 记录
存储任意文本信息,用途广泛。
常见用途:
- SPF 验证(防止邮件伪造):
| 记录类型 | 主机记录 | 值 | TTL |
|---|---|---|---|
| TXT | @ | v=spf1 include:_spf.example.com ~all | 3600 |
- 域名验证:
| 记录类型 | 主机记录 | 值 | TTL |
|---|---|---|---|
| TXT | @ | google-site-verification=xxxxxxx | 3600 |
- DKIM 签名:
| 记录类型 | 主机记录 | 值 | TTL |
|---|---|---|---|
| TXT | default._domainkey | v=DKIM1; k=rsa; p=xxxxx… | 3600 |
3.6 NS 记录(Name Server)
指定域名的权威 DNS 服务器。
示例:
| 记录类型 | 主机记录 | 值 |
|---|---|---|
| NS | @ | ns1.dnspod.net |
| NS | @ | ns2.dnspod.net |
⚠️ 重要:NS 记录在域名注册商处设置,控制整个域名的解析服务器。
3.7 记录类型对比表
| 记录类型 | 用途 | 示例值 |
|---|---|---|
| A | IPv4 地址 | 192.168.1.1 |
| AAAA | IPv6 地址 | 2001:db8::1 |
| CNAME | 域名别名 | example.com |
| MX | 邮件服务器 | mail.example.com |
| TXT | 文本信息 | v=spf1… |
| NS | DNS 服务器 | ns1.example.com |
| CAA | 证书颁发授权 | 0 issue “letsencrypt.org” |
| PTR | IP 反向解析 | example.com |
第四章:DNS 查询的完整流程
4.1 场景描述
假设你在浏览器中输入 www.bayunmoyu.com,让我们追踪整个查询过程。
4.2 查询步骤图解
📌 图解说明:这是完整的 DNS 查询流程,数字标注的每一步都代表一次网络请求。实际查询通常只需要 3-4 步(取决于缓存情况)。
4.3 本地缓存
为了提高效率,DNS 查询结果会在多个位置缓存:
| 缓存位置 | 说明 |
|---|---|
| 浏览器缓存 | 浏览器会自动缓存 DNS 结果 |
| 操作系统缓存 | Windows/Mac/Linux 操作系统级别缓存 |
| 递归 DNS 缓存 | ISP 的 DNS 服务器会缓存 |
查看本机 DNS 缓存(Windows):
ipconfig /displaydns清除本机 DNS 缓存:
ipconfig /flushdns第五章:如何配置 DNS
5.1 配置 DNS 的基本步骤
- 购买域名:从域名注册商(如阿里云、腾讯云、Namecheap)购买
- 选择 DNS 服务商:使用注册商提供的 DNS,或使用 Cloudflare、DNSPod 等第三方服务
- 添加 DNS 记录:在 DNS 控制面板中添加相应的记录
- 等待生效:DNS 传播通常需要几分钟到 48 小时
5.2 常见 DNS 服务商对比
| 服务商 | 特点 | 免费版 |
|---|---|---|
| Cloudflare | 全球CDN+DNS,速度快,安全性高 | ✅ 有 |
| 阿里云 DNS | 国内速度快,稳定 | ✅ 有 |
| DNSPod | 国内品牌,功能丰富 | ✅ 有 |
| Google Cloud DNS | 谷歌背书,全球可用 | ✅ 有(300美元免费额度) |
| AWS Route 53 | 亚马逊云服务,集成性好 | ✅ 有(每月100万次查询) |
5.3 配置示例(以 Cloudflare 为例)
- 注册 Cloudflare 账号
- 添加域名,Cloudflare 会扫描现有 DNS 记录
- 修改域名的 NS 记录指向 Cloudflare
- 在 Cloudflare 控制面板中添加记录:
| 记录类型 | 主机记录 | 值 | 代理状态 |
|---|---|---|---|
| A | @ | 192.168.1.100 | 已代理 |
| CNAME | www | @ | 已代理 |
| MX | @ | mail.example.com | DNS only |
| TXT | @ | v=spf1… | DNS only |
💡 提示:
- 已代理:流量经过 Cloudflare CDN,提供 DDoS 防护和加速
- DNS only:流量不经过 CDN,仅做 DNS 解析
第六章:常用 DNS 命令和工具
6.1 nslookup(最基础)
Windows/Mac/Linux 通用
# 查询 A 记录nslookup bayunmoyu.com
# 指定 DNS 服务器查询nslookup bayunmoyu.com 8.8.8.8
# 查询 MX 记录nslookup -type=MX bayunmoyu.com6.2 dig(功能强大)
Linux/Mac 专用,Windows 需要安装
# 基本查询dig bayunmoyu.com
# 只显示 ANSWER 部分dig bayunmoyu.com +short
# 查询特定记录类型dig bayunmoyu.com AAAAdig bayunmoyu.com MXdig bayunmoyu.com TXT
# 指定 DNS 服务器dig @8.8.8.8 bayunmoyu.com
# 跟踪完整查询路径dig bayunmoyu.com +trace6.3 ping
# 简单测试域名解析ping bayunmoyu.com6.4 在线 DNS 查询工具
| 工具 | 网址 | 特点 |
|---|---|---|
| DNS Checker | dnschecker.org | 全球 DNS 传播检查 |
| ViewDNS.info | viewdns.info | 多种 DNS 查询工具 |
| WhatsMyDNS | whatsmydns.net | 全球 DNS 传播验证 |
第七章:常见问题与解决方案
问题1:DNS 解析失败,提示”服务器找不到地址”
可能原因:
- 域名拼写错误
- DNS 记录配置错误
- DNS 尚未传播完成
解决方法:
- 检查域名是否拼写正确
- 登录 DNS 服务商控制台检查记录
- 等待最多 48 小时(DNS 传播)
- 尝试更换 DNS 服务器
问题2:修改 DNS 后网站访问不了旧内容
原因:DNS 传播需要时间,旧 DNS 服务器上还有缓存
解决方法:
- 等待 DNS 完全生效(最长 48 小时)
- 清除浏览器缓存
- 清除本机 DNS 缓存:
ipconfig /flushdns - 更换网络(如使用手机数据)
问题3:部分地区无法访问网站
可能原因:
- DNS 服务器故障
- 运营商 DNS 劫持
- 网络防火墙
解决方法:
- 使用公共 DNS(如 1.1.1.1、8.8.8.8)
- 使用 DNS over HTTPS(DoH)
- 联系网络服务商
问题4:收到”Your IP has been blocked by SPF”的邮件
原因:发送的邮件被对方服务器识别为垃圾邮件或伪造邮件
解决方法:
- 检查并正确配置 SPF 记录
- 配置 DKIM 和 DMARC 记录
- 确保发件服务器 IP 在 SPF 允许范围内
问题5:DNS 污染/投毒
现象:DNS 返回错误的 IP 地址
原因:
- 网络审查
- DNS 服务器被攻击
- 恶意劫持
解决方法:
- 使用可信的 DNS 服务商(如 Cloudflare、1.1.1.1)
- 使用 DNS over HTTPS(DoH)或 DNS over TLS(DoT)加密查询,防止 DNS 劫持
- 手动绑定 hosts 文件
手动绑定 hosts 文件
如果 DNS 被污染,可以手动指定 IP 地址:
Windows 路径:C:\Windows\System32\drivers\etc\hosts
Mac/Linux 路径:/etc/hosts
格式:
192.168.1.100 bayunmoyu.com192.168.1.100 www.bayunmoyu.com⚠️ 注意:修改 hosts 文件需要管理员权限,且 IP 变更时需要手动更新。此方法优先级最高,但需要针对每个需要访问的域名手动添加,无法解决动态 IP 或 CDN 的问题,属于临时解决方案。
总结
本文我们详细介绍了 DNS 的各个方面:
- DNS 的定义:互联网的”电话号码簿”
- DNS 层级结构:根 DNS → 顶级域 DNS → 权威 DNS
- 常见记录类型:A、CNAME、MX、TXT 等
- 查询流程:从本地缓存到递归 DNS,再到权威 DNS
- 配置方法:购买域名 → 配置 DNS → 添加记录
- 常用工具:nslookup、dig
- 常见问题:解析失败、DNS 污染等
希望这篇文章能帮助你理解 DNS 的工作原理。如果有任何问题,请联系我。
参考资料
部分信息可能已经过时









