目录
域名层级
域名从右到左阅读,层级从最广泛到最具体:
1. 根域:在域名的最右端,代表了 DNS 层级结构的顶端。通常用一个隐形的点(.
)表示,这个点通常在日常的使用中省略
2. 顶级域名:例如.com
,.org
,.net
等
3. 二级域名:例如 google.com
中的 google
,baidu.com
中的 baidu
等
4. 子域名:例如 www
,mail
等
域名服务器
1. 根域名服务器
最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的 IP 地址
2. 顶级域名服务器
负责管理在该顶级域名服务器注册的所有二级域名
3. 授权域名服务器(权限域名服务器)
每台主机都必须在授权域名服务器处登记。实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的 IP 地址
4. 本地域名服务器
当一台主机发出 DNS 查询请求时,这个查询请求报文就发送给该主机的本地域名服务器
权威服务器
域名系统(DNS) 中负责管理并提供特定域名的最终解析信息的服务器。
权威服务器的主要任务是将域名映射到其对应的资源记录,例如 IP 地址(A 或 AAAA 记录)或邮件服务器(MX 记录)
权威服务器的功能和作用
- 权威性:它拥有特定域名的权威数据,存储了域名的所有资源记录。比如,
example.com
的权威服务器会存储该域名的 A 记录(IPv4 地址)、MX 记录(邮件服务器)、NS 记录(名称服务器)等信息。 - 响应查询:当递归 DNS 服务器无法直接解析某个域名时,它会向权威服务器发出请求,权威服务器通过其本地存储的数据,返回与查询相关的最终解析结果(eg:将域名解析为 IP 地址)
- 维护域名记录:权威服务器时由域名持有者(如网络管理员或服务提供商)进行配置和维护的
权威服务器的工作流程
当客户端查询域名时,DNS 解析过程通常如下:
- 客户端请求:客户端向递归 DNS 服务器发出域名解析请求
- 递归查询:如果递归 DNS 服务器没有缓存中的解析结果,它会向根 DNS 服务器查询
- 根 DNS 服务器响应:根 DNS 服务器不会直接返回 IP 地址,而是返回负责某个顶级域(如
.com
或.org
)的顶级域名服务器(TLD Server)的地址 - TLD 服务器查询:递归 DNS 服务器接下来会向 TLD 服务器发出查询。TLD 服务器会提供该域名所使用的权威 DNS 服务器的地址
- 权威服务器响应:递归 DNS 服务器最后向权威服务器发出请求,权威服务器返回改域名的 IP 地址等相关信息,递归服务器将结果返回给客户端
权威服务器的类型
主权威服务器:该服务器保存域名的原始数据
从权威服务器:从主权威服务器同步数据,一般作为备份使用
域名解析过程
- 域名解析是指把域名映射成为 IP 地址或者把 IP 地址映射成域名的过程。
域名--->IP 地址:正向解析
IP 地址--->域名:反向解析
- 当客户端需要域名解析时,通过本机的 DNS 客户端构造一个 DNS 请求报文,以 UDP 数据报方式发往本地域名服务器
- 域名解析有两种方式:递归查询和递归与迭代相结合的查询
递归查询与迭代查询
主机向本地域名服务器的查询采用递归查询
递归查询:如果主机所询问的本地域名服务器不知道被查询的域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他域名服务器继续发出查询请求报文
本地域名服务器向根域名服务器的查询采用迭代查询
迭代查询:当根域名服务器收到本地域名服务器发出的迭代请求报文时,要么给出所要查询的 IP 地址,要么告诉本地服务器下一步应该向哪个域名服务器进行查询
PS:
递归:客户端只发出一次请求,要求对方给出最终结果
迭代:客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其他名称服务器列表,然后客户端会再次向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,得到最终结果
工具和命令
nslookup:用于查询 DNS 来获取域名的 IP 地址、MX 地址、NS 记录等信息
nslookup example.com \\ 查询域名的 IP 地址
nslookup example.com 8.8.8.8 \\ 查询特定 DNS 服务器
nslookup 8.8.8.8 \\ 反向 DNS 查找
DNS 端口号
- DNS(域名系统)通常使用 UDP 端口 53 进行通信,因为 UDP 在处理小数据包时更快且效率更高。特定情况下,DNS 需要使用 TCP 来完成任务
- 当响应数据包大于 512 字节或者 DNS 区域传输(AXFR 或 IXFR)时,DNS 使用 TCP 进行传输。(AXFR,全区域传输;IXFR,增量区域传输)
- DNS 数据包的结构分为查询报文和响应报文,无论是查询还是响应,DNS 数据包的结构基本相同
- DNS 数据包通常包括五个部分:Header(报头),Question(问题),Answer(回答),Authority(授权),Additional(附加)
DNS 资源记录
DNS 资源记录是 DNS 中用来定义域名如何解析的数据单元
常见的 DNS 资源记录类型
- A 记录:将域名指向一个 IPv4 地址
- AAAA 记录:将域名指向一个 IPv6 地址
- CNAME 记录:允许将一个域名解析到另一个域名,而不是直接解析到 IP 地址
- MX 记录:定义了用于电子邮件交换的服务器
- NS 记录:指明哪些 DNS 服务器负责处理关于该域的查询
- PTR 记录:通常用于反向 DNS 查找,将 IP 地址映射回对应的域名
- TXT 记录:允许管理员向域名中添加任意文本
- SRV 记录:提供了哪些服务在特定的端口上运行的信息
- SOA(起始授权机构记录):标识了关于该 DNS 区域的权威信息,包括该区域管理的基本设置和 DNS 区域的主要数据
资源记录的组成
域名,记录类型,TTL(生存时间),数据
DNS 中三种主要的区域类型
主要区域:数据的权威源,可以直接进行数据更改
辅助区域:作为主要区域的备份,提供冗余和提高可用性,不可直接修改数据
存根区域:只包含关键的权威服务器信息,用于帮助解析外部域的查询,提高 DNS 解析的效率和管理跨组织的 DNS 操作
DNS 安全
常见的 DNS 攻击
- DNS 缓存投毒
- DNS 放大攻击
- DNS 隧道
- 子域名劫持
- 随机子域名攻击
- NXDOMAIN 攻击
- DNS 重绑定
防御措施
- 使用安全的 DNS 解析器
- 限制递归查询
- 监控和分析 DNS 流量
- 配置防火墙和入侵检测系统
- DNS 速率限制