DNS备忘
基础概念
DNS(Domain Name System)域名系统
将人类可读的域名(如fay.net.cn)转换为机器可识别的IP地址
名字到地址的映射
工作原理
- 用户在浏览器输入
fay.net.cn - 操作系统向本地DNS解析器(如路由器或ISP的DNS服务器)发起查询
- 若本地缓存无结果,则递归查询:
- 根域名服务器(Root Server)
- 顶级域(TLD)服务器(如 .com)
- 权威域名服务器(Authoritative Server for example.com)
- 最终获得IP地址并返回给用户操作系统
查询类型
递归查询:客户端要求DNS服务器必须返回最终答案(或错误)
迭代查询:DNS服务器返回它知道的最佳线索(如另一个服务器地址)
域名层级
. ← 根域(Root Domain) |
以我的博客域名展示层级
. ← 根域(Root) |
各层级详解
| 层级 | 名称 | 说明 | 示例 |
|---|---|---|---|
| 0 级 | 根域(Root) | 用 . 表示,是 DNS 树的起点。全球有 13 组逻辑根服务器(实际为任播部署)。 |
. |
| 1 级 | 顶级域(TLD) | 分为: • 通用 TLD(gTLD): .com, .org, .net• 国家代码 TLD(ccTLD): .cn, .uk, .jp• 新 gTLD: .app, .shop, .xyz |
.com, .cn |
| 2 级 | 二级域(SLD) | 用户在注册商处实际注册的域名,是权威控制的起点。 | example(在 example.com 中) |
| 3+ 级 | 子域(Subdomain) | 由域名所有者自由创建,用于组织服务或部门。可无限嵌套。 | shop.example.com, api.dev.shop.example.com |
| 最末级 | 主机名(Hostname) | 通常对应具体服务器或服务,常出现在 A/AAAA/CNAME 记录中。 | www, mail, ftp |
为什么中国没有根服务器
中国因接入互联网较晚(1994年),错过了根服务器体系建立的历史窗口期;而根服务器数量受限于早期DNS协议技术约束(UDP 512字节限制),只能设13组逻辑节点,且其治理长期由美国主导,导致中国无法在原有体系中获得根服务器控制权。
但中国已通过部署大量根镜像、主导IPv6“雪人计划”、以及完全自主管理.cn顶级域,实现了事实上的网络基础设施自主与安全可控。
DNS全球13组逻辑根服务器
| 主机名 | IP 地址(IPv4, IPv6) | 运营机构 | 国家 |
|---|---|---|---|
| a.root-servers.net | 198.41.0.4, 2001:503:ba3e::2:30 | Verisign, Inc. | 美国 |
| b.root-servers.net | 199.9.14.201, 2001:500:200::1 | University of Southern California (ISI) | 美国 |
| c.root-servers.net | 192.33.4.12, 2001:500:2::c | Cogent Communications | 美国 |
| d.root-servers.net | 199.7.91.13, 2001:500:2d::d | University of Maryland | 美国 |
| e.root-servers.net | 192.203.230.10, 2001:500:a8::e | NASA (Ames Research Center) | 美国 |
| f.root-servers.net | 192.5.5.241, 2001:500:2f::f | Internet Systems Consortium (ISC) | 美国 |
| g.root-servers.net | 192.112.36.4, 2001:500:12::d0d | US Department of Defense (NIC) | 美国 |
| h.root-servers.net | 198.97.190.53, 2001:500:1::53 | US Army Research Lab | 美国 |
| i.root-servers.net | 192.36.148.17, 2001:7fe::53 | Netnod | 瑞典 |
| j.root-servers.net | 192.58.128.30, 2001:503:c27::2:30 | Verisign, Inc. | 美国 |
| k.root-servers.net | 193.0.14.129, 2001:7fd::1 | RIPE NCC | 荷兰 |
| l.root-servers.net | 199.7.83.42, 2001:500:9f::42 | ICANN | 美国 |
| m.root-servers.net | 202.12.27.33, 2001:dc3::35 | WIDE Project | 日本 |
数据来源:IANA;数据截止时间:2026年03月12日
为什么全球只有13组根服务器
一句话概括:因为互联网早期IP网络的最大传输单元长度(MTU)是五百多字节,DNS回复信息的最大长度同样不能太长,所以DNS协议规定回复信息不能超过512字节
根本原因:UDP数据包大小限制,早期DNS查询主要使用UDP协议(而非TCP),因为UDP更轻量、响应更快。
当时互联网标准(RFC 1035)规定:DNS响应报文不能超过512字节,以避免IP层分片(fragmentation),提高可靠性和兼容性。
每个根服务器的IPv4地址记录(含域名、类型、TTL等)约占32字节。
计算:$$\frac{512\,\text{字节} - \text{报文头等开销}}{32\,\text{字节/条}} \approx 13\,\text{条} $$
实际可容纳13个根服务器地址,再多就会超限,导致解析失败。
✅ 所以,“13” 是一个 技术上限值,由协议硬性决定。
13
组≠ 13台物理服务器
13是逻辑标识(如a.root-servers.net到m.root-servers.net)
每组在全球通过 Anycast 部署大量镜像节点:
例如f.root-servers.net在全球有150+个物理站点
中国境内就有多个F、I、J、L、M的镜像
用户查询时,自动路由到最近的镜像,实现低延迟、高可用
🌍 所以,实际运行的根服务器有2000+台物理机器,只是共享13个IP地址。
图示
. (Root) |
国内常见二级域用途
常见 .cn 二级域 |
用途 |
|---|---|
com.cn |
商业机构 |
net.cn |
网络服务提供商 |
org.cn |
非营利组织 |
gov.cn |
政府机构 |
edu.cn |
教育机构 |
DNS主机记录
指域名前缀
| 主机记录(名称) | 完整域名示例 | 说明 |
|---|---|---|
| @ | example.com | 裸域(主域名本身) |
| www | www.example.com | 常用于网站 |
| mail.example.com | 邮件服务器 | |
| ftp | ftp.example.com | FTP服务 |
| api | api.example.com | API接口服务 |
| * | *.example.com | 泛解析(通配符) |
| 留空 | example.com | 等同于@ |
DNS负载策略
- 轮询:按顺序逐次返回所有配置的记录值,实现解析结果的均衡分配。
- 例如配置 IP 192.168.1.1 和 192.168.1.2,每次解析均返回两个 IP,但顺序交替(如首次返回 [192.168.1.1, 192.168.1.2],下次返回 [192.168.1.2, 192.168.1.1])。
- 权重:根据配置的权重比例随机返回其中一条记录,实现流量的加权分配。
- 例如配置 IP 192.168.1.1 和 192.168.1.2,权重为 1:1 时,每次解析有 50% 概率返回 192.168.1.1,50% 概率返回 192.168.1.2。
DNS TTL
指解析结果在Local DNS中的缓存时间
DNS常见记录类型
指解析记录的用途
| 记录类型 | 作用 |
|---|---|
| A | 将域名映射到IPv4地址 |
| AAAA | 将域名映射到IPv6地址 |
| CNAME | 别名记录,将一个域名指向另一个域名 |
| MX | 邮件交换记录,指定接收邮件的服务器 |
| NS | 指定权威DNS服务器(指定该域名由哪些DNS服务器解析) |
| TXT | 存储文本信息,常用于验证、SPF、DKIM等 |
| SOA | 起始授权记录,包含区域基本信息(如主DNS、刷新时间等) |
| SRV | 指定特定服务(如 _sip._tcp) |
| PTR | 反向DNS,将IP地址映射回域名(用于反查) |
常用命令
… … … nslookup … … … ∞
# 英文原意 Name Server Lookup;所在路径 /usr/bin/nslookup;执行权限 all |
… … … dig … … … ∞
# 英文原意 Domain Information Groper;所在路径 /usr/bin/dig;执行权限 all |
… … … host … … … ∞
# 英文原意 Host;所在路径 /usr/bin/host;执行权限 all |
k8s里dns工作原理
在k8s里,服务的域名是默认拼接的
服务域名拼接:
: Service 的资源名称(metadata.name)。 : Service 所在的命名空间。 - svc: 固定字符串,代表 Service 资源类型。
: 集群域名,默认为 cluster.local(可在 kubelet 或 CoreDNS 配置中修改)
说些什么吧!