计算机智能识别并用IP地址定位,例如我们想要访问一个网页,其实是只能使用这个网页的IP地址,即四位的0~255来访问,但这一串数字难以记忆,于是就有了DNS,将难以记忆的数字转化为容易记忆的域名,这样就方便了访问。
一、域名基础知识
域名是互联网上用来识别各种实体(如服务器、服务、网络)的可读名称。它是一种方便记忆的地址,用于代替IP地址,因为IP地址由数字组成,不容易记忆。域名通过一种层级结构的系统组织起来,从最一般的部分到最具体的部分,通常包括顶级域(TLDs)、二级域和子域
例如:在域名www.bilibili.com中
- .com是顶级域(TLD),通常表明网站的性质或地域(如.com代表商业组织,.org代表非盈利组织)。在这个.com后其实还有一个点,表示顶级域,只不过在实际生活中隐藏省略了
- bilibili是二级域,通常是公司或组织的名称
- www是子域,通常用于指向网站的主服务器或特定的服务。其他服务如mail提供邮件服务等
域名系统允许用户通过简单的名称访问网站的和其他网络服务,而无需记忆复杂的数字IP地址。
在域名系统(DNS)的层级结构中,根域名实际上是一个无可见标签的层级,通常表示为域名末尾的一个点( . )表示,但大多数时候,这个点在浏览器或者网络应用层中都不会被显示或使用。这个根域在DNS查询中非常重要,它是所有限定域名(FQDN)的最高层级
“根”实际上是一个服务器集群,这群服务器仅用了13个不同的域名,由12家独立机构运营。注意是13个域名而不是13台机器
1.1 域名层级
域名从右到左阅读,层级从最⼴泛到最具体:
- 根域(Root Domain):在域名的最右端,代表了DNS层级结构的顶端。通常⽤⼀个隐形的点( . )表示,这个点通常在⽇常使⽤中省略。
- 顶级域名(Top-Level Domain, TLD):紧接根域之后的是顶级域名,例如 .com 、 .org 、 .net 、国家代码顶级域名(ccTLD)如 .cn 、 .uk 等。
- ⼆级域名(Second-Level Domain, SLD):位于顶级域名之下,常⻅的如 google 在 google.com , baidu 在 baidu.com 。
- ⼦域名(Subdomain):进⼀步细分的域名,如 www 、 mail 等,⽤于指向主域名下的特定服务器或服务。
1.2 域名服务器
(1)根域名服务器
根域名服务器是最⾼层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特⽹上任何⼀个域名进⾏解析,只要⾃⼰⽆法解析,就⾸先要求助于根域名服务器。因特⽹在全球范围内有13个根域名服务器,尽管我们将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。
需要注意的是,根域名服务器⽤来管辖顶级域(如.com), 通常它并不直接把待查询的域名直接转换成IP地址,⽽是告诉本地域名服务器下⼀步应当找哪个顶级域名服务器进⾏查询。(迭代)
(2)顶级域名服务器
这些域名服务器负责管理在该顶级域名服务器注册的所有⼆级域名。收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下⼀步应当查找的域名服务器的IP地址)。
常⻅的顶级域
(3)授权域名服务器(权限域名服务器)
每台主机都必须在授权域名服务器处登记。为了更加可靠地⼯作,⼀台主机最好⾄少有两个授权域名服务器。
实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。
(4)本地域名服务器
本地域名服务器对域名系统⾮常重要。每个因特⽹服务提供者(ISP), 或⼀所⼤学,甚⾄⼀所⼤学中的各个系,都可以拥有⼀个本地域名服务器。
当⼀台主机发出DNS查询请求时,这个查询请求报⽂就发送给该主机的本地域名服务器。事实上,我们在Windows系统中配置“本地连接”时,就需要填写DNS地址,这个地址就是本地DNS(域名服务器)的地址。
1.3 权威服务器
权威服务器(Authoritative Name Server)是域名系统(DNS)中负责管理并提供特定域名的最终解析信息的服务器。它对⼀个或多个域名有权威解释权,能够返回该域名的准确IP地址或其他相关信息。权威服务器的主要任务是将域名映射到其对应的资源记录,例如IP地址(A或AAAA记录)或邮件服务器(MX记录)
权威服务器的功能和作用
- 权威性:权威服务器拥有特定域名的权威数据,它存储了域名的所有资源记录。当客户端发起查询时,权威服务器提供的是最终的、权威的解析结果。⽐如, example.com 的权威服务器会存储该域名的A记录(IPv4地址)、MX记录(邮件服务器)、NS记录(名称服务器)等信息。
- 响应查询:当递归DNS服务器⽆法直接解析某个域名时,它会向权威服务器发出请求。权威服务器通过其本地存储的数据,返回与查询相关的最终解析结果(例如,将域名解析为IP地址)。
- 维护域名记录:权威服务器是由域名持有者(如⽹站管理员或服务提供商)进⾏配置和维护的。这意味着,它存储的是域名所有者指定的资源记录。域名的管理通常由域名注册商(如GoDaddy、Namecheap)或者域名托管服务商提供权威服务器服务。
权威服务器的工作流程
权威服务器是域名解析流程中的最后⼀环。当客户端查询域名时,DNS解析过程通常如下:
- 客户端请求:客户端向递归DNS服务器发出域名解析请求。
- 递归查询:如果递归DNS服务器没有缓存中的解析结果,它会向根DNS服务器查询。
- 根DNS服务器响应:根DNS服务器不会直接返回IP地址,⽽是返回负责某个顶级域(如 .com 或 .org )的顶级域名服务器(TLD Server)的地址。TLD服务器查询:递归DNS服务器接下来会向TLD服务器发出查询。TLD服务器会提供该域名所使⽤的权威DNS服务器的地址。
- 权威服务器响应:递归DNS服务器最后向权威服务器发出请求,权威服务器返回该域名的IP地址等相关信息,递归服务器将结果返回给客户端。
权威服务器的类型
权威服务器分为以下⼏种类型:
- 主权威服务器(Primary/ Master Name Server):该服务器保存域名的原始数据。通常域名的资源记录⾸先被配置在主权威服务器上。
- 从权威服务器(Secondary/ Slave Name Server):从主权威服务器同步数据,提供与主权威服务器相同的解析结果,但⼀般作为备份使⽤,以确保冗余和可靠性。
示例:
假设你访问 www.example.com ,权威服务器的⻆⾊如下:
- 权威服务器的⻆⾊: example.com 的权威服务器存储了关于这个域名的所有记录,包括A记录(指向⽹站的IP地址)、NS记录(指示哪个服务器管理域名)等。
- 权威服务器响应:当客户端查询 www.example.com 时,递归服务器最终会向 example.com 的权威服务器发送请求,权威服务器将返回 www.example.com 对应的 IP 地址(例如 192.0.2.1 )
权威服务器是DNS系统中负责提供域名最终解析信息的服务器,它存储并返回关于特定域名的权威资源记录。权威服务器确保域名解析过程中的准确性和权威性,起到了⾄关重要的作⽤
1.4 域名解析过程
- 域名解析是指把域名映射成为IP地址或把IP地址映射成域名的过程。前者称为正向解析,后者称为反向解析。
- 当客户端需要域名解析时,通过本机的DNS客户端构造⼀个 DNS请求报⽂ ,以 UDP数据报 ⽅式发往 本地域名服务器 。
- 域名解析有两种⽅式: 递归查询 和 递归与迭代 相结合的查询。
解析器与本地DNS服务器用的是递归的方式传输,传递以后回归,意思是发送后最终返回结果就行了;而本地DNS服务器和三层服务器之间采用的是迭代查询的方式,也就是第一步得到什么,然后第二步第三步。
递归查询与迭代查询
- 本机向本地域名服务器的查询一般都是采用递归查询
所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报⽂(即替主机继续查询),⽽不是让主机⾃⼰进⾏下⼀步查询。
因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示⽆法查询到所需的IP地址
- 本地域名服务器向根域名服务器的查询用迭代查询
迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报⽂时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下⼀步应当向哪⼀个域名服务器进⾏查询”。然后让本地服务器进⾏后续的查询。根域名服务器通常是把⾃⼰知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。
顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下⼀步应当向哪⼀个权限域名服务器进⾏查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机
- 递归:客户端只发⼀次请求,要求对⽅给出最终结果。
- 迭代:客户端发出⼀次请求,对⽅如果没有授权回答,它就会返回⼀个能解答这个查询的其它名称服务器列表,客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。
- 授权回答:向dns服务器查询⼀个域名,刚好这个域名是本服务器负责,返回的结果就是授权回答。
1.5 举例解析过程
1.本地主机⽂件
在浏览器中输⼊www.qq.com域名,操作系统会先检查⾃⼰本地的hosts⽂件是否有这个⽹址映射关系,如果有,就先调⽤这个IP地址映射,完成域名解析。
hosts文件存储在计算机C盘中,提供了一些域名到地址的映射,以便在没有访问外部DNS服务器的情况下,也能解析已存储的域名。
2.本地DNS 缓存
如果hosts⾥没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个⽹址映射关系,如果有,直接返回,完成域名解析。Windows访问DNS后会把记录保存⼀段短暂的时间
可通过 ipconfig /displaydns 查看windows的DNS缓存、通过ipconfig /flushdns来清除
3.本地DNS 服务器解析
如果hosts与本地DNS解析器缓存都没有相应的⽹址映射关系,⾸先会找TCP/IP参数中设置的⾸选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此⽹址映射关系,则调⽤这个IP地址映射,完成域名解析,此解析不具有权威性。
4.DNS 服务器解析
如果本地DNS服务器本地区域⽂件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进⾏查询,如果未⽤转发模式,本地DNS就把请求发⾄ “根DNS服务器”,“根DNS服务器”收到请求后会判断这个域名(.com)是谁来授权管理,并会返回⼀个负责该顶级域名服务器的⼀个IP。
本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果⾃⼰⽆法解析,它就会找⼀个管理.com域的下⼀级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上⾯的动作,进⾏查询,直⾄找到www.qq.com主机。
如果⽤的是转发模式,此DNS服务器就会把请求转发⾄上⼀级DNS服务器,由上⼀级服务器进⾏解析,上⼀级服务器如果不能解析,或找根DNS或把转请求转⾄上上级,以此循环。
不管是本地DNS服务器⽤是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。为了提⾼DNS的查询效率,并减少因特⽹上的DNS查询报⽂数量,在域名服务器中⼴泛地使⽤了⾼速缓存。
当⼀个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在⾼速缓存中。这样,当另⼀个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的IP地址,⽽不需要再去向其他DNS服务器询问。
因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在⼀段时间后丢弃⾼速缓存中的信息。
二、工具和命令
在Windows的命令提示符(CMD)中查找域名信息主要使⽤ nslookup 命令, nslookup 是⼀个⾮常有⽤的⽹络管理命令⾏⼯具,它⽤于查询DNS来获取域名的IP地址、MX记录、NS记录等信息
使用nslookup
- 查询域名的IP地址 打开命令提示符(CMD),然后输⼊:
nslookup example.com
这将显示 example.com 的IP地址信息。
- 查询特定DNS服务器 你可以指定⼀个DNS服务器来查询域名:
nslookup example.com 8.8.8.8
这⾥使⽤Google的DNS服务器(8.8.8.8)来解析 example.com 。
- 获取更多类型的记录,如MX记录 进⼊nslookup的交互模式,然后设置查询类型为MX,查询邮件服务器:
nslookup
> set type=mx
> example.com
这将列出 example.com 的MX记录(邮件交换记录)。
- 查询NS记录 NS记录指示哪些DNS服务器是授权处理特定域的查询:
nslookup
> set type=ns
> example.com
这将显示管理 example.com 的名称服务器。
进阶用法
nslookup 也⽀持⼀些更⾼级的查询,例如反向DNS查找(根据IP地址查询域名):
nslookup 192.0.2.1
这将尝试查找与IP地址 192.0.2.1 关联的域名。
注意事项
- nslookup 的输出:默认情况下, nslookup 会显示⽬标域名的主DNS服务器和请求的记录。如果遇到问题,它可能返回错误信息,例如“Non-existent domain”表示域名不存在。
- DNS缓存: nslookup 查询实时的DNS记录,但操作系统和浏览器可能会缓存DNS响应。如果你怀疑缓存影响了查询结果,可以尝试清除系统DNS缓存。在CMD中运⾏ ipconfig /flushdns 可以清除Windows的DNS解决缓存
三、DNS结构概述
3.1 DNS缓存机制
简单来说,⼀条域名的DNS记录会在本地有两种缓存:浏览器缓存和操作系统(OS)缓存。在浏览器中访问的时候,会优先访问浏览器缓存,如果未命中则访问OS缓存,最后再访问DNS服务器(⼀般是ISP提供),然后DNS服务器会递归式的查找域名记录,然后返回。
DNS记录会有⼀个ttl值(time to live),单位是秒,意思是这个记录最⼤有效期是多少。经过实验,OS缓存会参考ttl值,但是不完全等于ttl值,⽽浏览器DNS缓存的时间跟ttl值⽆关,每种浏览器都使⽤⼀个固定值。
Windows访问DNS后会把记录保存⼀段短暂的时间,
可通过ipconfig /displaydns 查看windows的DNS缓存、通过ipconfig /flushdns来清除。
3.2 DNS端口号
DNS(域名系统)通常使⽤UDP(⽤户数据报协议)进⾏通信,因为UDP在处理⼩数据包时更快且效率更⾼。DNS查询通常是⼩数据包,因此绝⼤多数DNS查询使⽤UDP端⼝53进⾏。然⽽,在某些特定情况下,DNS需要使⽤TCP(传输控制协议)来完成任务。以下是DNS使⽤TCP的两种典型情况:
- 响应数据包⼤于 512 字节
DNS的UDP查询默认限制为512字节。如果响应数据超过这个限制,如在包含⼤量记录的应答中,DNS服务器会将TC(Truncation,截断)标志设置为1,这告诉客户端响应已被截断。这时,客户端需要使⽤TCP重新发起请求来获取完整的DNS记录。TCP不受512字节的限制,因此可以处理更⼤的响应。
使⽤TCP可以确保⻓响应数据能够完整⽆误地传输,因为TCP具有重传机制和有序保证,可以处理分段和重新组装⼤数据包。
- DNS区域传输(AXFR或IXFR)
DNS区域传输⽤于在DNS服务器之间同步DNS数据。有两种主要的区域传输类型:
- AXFR(全区域传输):这是⼀种完整的区域复制过程,⽤于将整个DNS区域的内容从⼀个服务器(主服务器)复制到另⼀个服务器(辅助服务器)。由于数据量可能⾮常⼤,这种类型的区域传输通常使⽤TCP进⾏。
- IXFR(增量区域传输):这种⽅式只传输⾃上次同步以来区域中发⽣变化的部分。虽然IXFR数据通常较⼩,但仍然使⽤TCP进⾏传输,以确保数据的完整性和可靠性。
TCP在DNS区域传输中的使⽤,确保了⼤量数据能够准确⽆误且连续地传输,⽽不会丢失任何关键信息。
3.3 DNS数据包的结构
DNS(域名系统)数据包的结构分为查询报⽂和响应报⽂,⽆论是查询还是响应,DNS数据包的结构基本相同
DNS数据包通常包括五个部分:
- Header(报头)
- Question(问题)
- Answer(回答)
- Authority(授权)
- Additional(附加)
3.3.1 DNS数据包各部分详细说明
- Header(报头部分)
DNS报头部分⻓度为12字节,包含以下字段:
- ID(识别码):⽤于匹配查询和响应的数据包,16位。
- 标志位(Flags):包括以下标志位字段:
- QR:表示数据包的类型,0为查询,1为响应。
- Opcode:表示查询类型,⼀般为标准查询(0)。
- AA(授权应答):当服务器是该域名的权威服务器时,该位为1。
- TC(截断标志):当数据包过⼤被截断时该位为1。
- RD(递归查询标志):客户端希望服务器执⾏递归查询时该位为1。
- RA(递归查询可⽤):服务器是否⽀持递归查询。
- Z:保留位,必须为0。
- Rcode:返回码,表示响应的状态(如成功、格式错误等)。
- QDCOUNT(问题数):表示查询中的问题部分的条⽬数,通常为1。
- ANCOUNT(回答数):表示回答部分中的资源记录的条⽬数。
- NSCOUNT(授权数):表示授权部分中的资源记录的条⽬数。
- ARCOUNT(附加数):表示附加部分中的资源记录的条⽬数
- Question(问题部分)
问题部分描述了客户端要查询的域名和相关信息,包含以下字段:
- QNAME:查询的域名。每个域名部分都⽤⻓度字节开头,最后以0字节结尾。
- QTYPE:查询的记录类型,⽐如A(IPv4地址查询)、AAAA(IPv6地址查询)、MX(邮件服务器)、NS(名称服务器)等。
- QCLASS:查询的类,通常为1(表示IN,互联⽹类)。
- Answer(回答部分)
回答部分包含了响应的资源记录信息,描述服务器返回的域名解析结果。每个资源记录包含以下字段:
- NAME:对应的域名。
- TYPE:资源记录的类型(A、AAAA、MX、CNAME等)。
- CLASS:资源记录的类,通常为IN。
- TTL:资源记录的⽣存时间(秒)。
- RDLENGTH:资源数据的⻓度。
- RDATA:资源数据内容,具体取决于记录类型,⽐如A记录则是IP地址。
4.Authority(授权部分)
授权部分为权威信息,提供权威服务器的域名信息。结构与回答部分类似,包含权威名称服务器的相关资源记录。
- Additional(附加部分)
附加部分通常提供额外的可选信息,如权威服务器的IP地址等。也与回答部分的结构类似,提供更多的资源记录。
3.3.2 授权与附加部分
在DNS数据包中,授权部分和附加部分分别提供了关于权威服务器的额外信息和与查询相关的补充信息。这两个部分并不总是出现在每个DNS响应中,它们主要⽤于涉及到递归查询和权威服务器的信息交换。
1. 授权部分 (Authority Section)
授权部分的主要功能是为客户端提供权威域名服务器的信息。权威域名服务器是能够提供某个域名的最终解析信息的服务器,因此这个部分通常出现在递归查询中,以告知客户端或递归服务器哪个权威服务器可以提供准确的域名解析。
作⽤:授权部分提供的是权威域名服务器的资源记录,指明哪个域名服务器有权回答有关查询域名的请求。
典型场景:当DNS服务器不能直接提供查询域名的最终答案时,它会返回授权部分,指示哪个服务器能够提供该域名的权威信息。⽐如,当你查询⼀个不存在的域名时,或者查询的是⼦域名时,DNS服务器会在授权部分中返回域名权威服务器的信息,指向下⼀步应该向哪个服务器请求解析。
结构:授权部分的结构与回答部分类似,包含域名(NAME)、类型(TYPE)、类(CLASS)、⽣存时间(TTL)和资源数据(RDATA),不过RDATA中包含的是指向权威域名服务器的指针,⽽⾮具体的IP地址。例如,TYPE字段可能是 NS (名称服务器),RDATA中则包含名称服务器的域名。
示例:
假设你查询⼀个域名 example.com ,⽽查询的DNS服务器并不是该域名的权威服务器,它可能返回:
- NAME: example.com
- TYPE:NS(名称服务器记录)
- RDATA: ns1.example.com
这意味着,权威服务器 ns1.example.com 对该域名拥有权威解析权
2.附加部分(Additional Section)
附加部分是DNS服务器提供的附加信息,通常是与查询相关的补充信息。它的主要⽬的是减少查询次数,提供⼀些有⽤的额外数据,避免客户端或递归服务器需要再次查询。
作⽤:附加部分通常包含的是补充信息,例如权威服务器的IP地址,或者其他可能与查询相关的资源记录。这有助于提⾼查询效率,因为如果客户端得到了权威服务器的域名,它还需要进⼀步查询该服务器的IP地址。附加部分可以直接提供这个IP地址,减少额外的查询。
典型场景:假设DNS服务器在授权部分中告知客户端权威服务器的域名,在附加部分中,它可能直接提供该权威服务器的IP地址,使得客户端不需要再进⾏⼀次查询来获得该IP地址。
结构:附加部分的结构与回答部分⼀样,包含NAME、TYPE、CLASS、TTL、RDLENGTH和RDATA等字段,RDATA中通常包含与查询相关的额外信息。
示例:
在上⾯的授权部分中,DNS服务器告知客户端权威服务器为 ns1.example.com 。附加部分可能直接提供:
- NAME: ns1.example.com
- TYPE:A(IPv4地址记录)
- RDATA:192.0.2.1(权威服务器的IP地址)
这样,客户端不需要再发送另⼀个DNS查询来获得 ns1.example.com 的IP地址。
- 授权部分提供了与查询域名相关的权威服务器的信息,帮助客户端或递归服务器找到具有权威性的域名解析服务器。
- 附加部分则提供了补充信息,通常是权威服务器的IP地址或者与查询相关的其他信息,减少了额外查询的次数,提⾼了解析效率。
3.4 DNS资源记录
DNS资源记录是域名系统(DNS)中⽤来定义域名如何解析的数据单元。每条资源记录都包含了关于域名的特定信息,⽐如它的IP地址、邮件服务器、或其他与该域名相关的技术信息。这些记录存储在DNS服务器上,⽤来响应外部查询,指导互联⽹上的流量如何定向。
常见的DNS资源记录类型:
- A记录(Address Record):A记录将域名指向⼀个IPv4地址。这是最常⻅的类型,⽤于将域名解析到其服务器的IP地址。
- AAAA记录(IPv6 Address Record):类似于A记录,但它将域名指向⼀个IPv6地
- CNAME记录(Canonical Name Record):CNAME记录允许将⼀个域名解析到另⼀个域名,⽽不是直接解析到IP地址。它常⽤于别名管理。
- MX记录(Mail Exchange Record):MX记录定义了⽤于电⼦邮件交换的服务器。它指定邮件应该被送到哪些邮件服务器,以及它们的优先级顺序。
- NS记录(Name Server Record):NS记录指明哪些DNS服务器负责处理关于该域的查询,这些是该域的权威DNS服务器。
- PTR记录(Pointer Record):PTR记录,通常⽤于反向DNS查找,将IP地址映射回对应的域名。这是⼀种通过IP找到其关联域名的⽅式。
- TXT记录(Text Record):TXT记录允许管理员向域名中添加任意⽂本。这种记录常⽤于验证域名所有权、SPF记录(⽤于电⼦邮件发送者政策框架)、以及其他服务的验证信息。
- SRV记录(Service Record):SRV记录提供了哪些服务在特定的端⼝上运⾏的信息,并且指明了提供这些服务的服务器。它常⽤于新型的互联⽹服务,如VoIP服务、即时通讯等。
- SOA(Start of Authority):起始授权机构记录 记录是⼀种DNS(域名系统)资源记录,它在DNS区域⽂件中⾮常重要,因为它负责存储关于DNS区域的基本信息。SOA记录标识了关于该DNS区域的权威信息,包括该区域管理的基本设置和DNS区域的主要数据。
SOA记录包含的关键信息:
- 主名称服务器(Primary Name Server):表示该区域的主DNS服务器的名字。这是权威服务器,负责该区域的记录。
- 负责⼈电⼦邮件(Responsible Person's E-mail):这通常表示管理DNS区域的管理员的电⼦邮件地址。在DNS记录中,常⽤点(.)替代传统电子邮件地址中的@符号。
- 序列号(Serial Number):这是区域⽂件的版本号。每次区域⽂件更新并重新加载时,序列号必须增加。这通常⽤于辅助名称服务器判断何时需要区域传输更新。
- 刷新时间(Refresh Time):指辅助名称服务器在两次连续的区域传输请求之间等待的时间。如果辅助服务器在这段时间内未能与主服务器通讯,它将尝试重新同步。
- 重试时间(Retry Time):如果辅助名称服务器在刷新尝试失败后重新尝试同步区域的时间间隔。
- 过期时间(Expire Time):辅助名称服务器在认为主服务器不可⽤之前等待的最⻓时间。在此期间内,如果没有与主服务器成功同步,辅助服务器将不再响应对该区域的查询。
- 最⼩TTL(Minimum TTL):这是区域中任何记录的默认时间⻓度(TTL),⽤于在外部缓存中存储这些记录。该值也是在DNS查询失败后,数据可以存储在解析器缓存中的最⼩时间。
SOA记录对DNS区域的管理⾄关重要。它不仅帮助管理DNS区域的更新和刷新周期,⽽且通过序列号机制确保区域数据的⼀致性和及时更新。此外,SOA记录中的最⼩TTL值有助于控制数据在缓存中的保留时间,间接影响DNS查询的效率和效果。
3.5 DNS区域类型
在DNS(域名系统)中,有三种主要的区域类型:主要区域(Primary Zone)、辅助区域(Secondary Zone)、和存根区域(Stub Zone)
主要区域(Primary Zone)
主要区域是DNS区域的原始可写副本所在的地⽅。这种类型的区域包含了完整的DNS记录,并且所有的更改(如添加、删除、修改DNS记录)都在这个区域进⾏。在主要区域中,DNS服务器被称为“主服务器”(Primary Server)。
- 特点:主要区域的数据可以直接编辑,且所有的更改都在此区域内⾸先进⾏。
- ⽤途:管理DNS记录的权威源,适⽤于需要直接控制其DNS记录的组织或⽹络。
辅助区域(Secondary Zone)
辅助区域是主要区域的只读副本。辅助区域数据从配置为该区域的主服务器中复制过来。辅助服务器(Secondary Server)存储的是该区域的精确副本,但不允许直接修改区域⽂件。
- 特点:提供冗余和负载分散,辅助区域通过DNS区域传输从主服务器同步数据。
- ⽤途:提⾼DNS查询的响应速度,增加数据的可靠性和冗余性。在主服务器不可⽤时,辅助服务器可以继续响应DNS查询。
存根区域(Stub Zone)
存根区域包含⼀个特定区域的最⼩必要信息,通常只包括该区域的NS记录(名称服务器记录)以及这些NS记录对应的A记录和AAAA记录。存根区域的数据也是从配置为该区域的主服务器中复制过来的。
- 特点:存根区域不像辅助区域那样复制整个区域,⽽只复制关键的管理记录。这使得存根区域⾮常轻量,更新速度快。
- ⽤途:⽤于优化DNS解析过程和管理跨越不同组织的DNS架构。通过存根区域,⼀个服务器可以知道如何到达其他区域的主要名称服务器,从⽽使得名称解析过程更⾼效。
- 主要区域:是数据的权威源,可以直接进⾏数据更改。
- 辅助区域:作为主要区域的备份,提供冗余和提⾼可⽤性,不可直接修改数据。
- 存根区域:只包含关键的权威服务器信息,⽤于帮助解析外部域的查询,提⾼DNS解析的效率和管理跨组织的DNS操作。
四、DNS安全
- DNS 缓存投毒(DNS Cache Poisoning):这种攻击涉及将错误的信息注⼊到DNS解析器的缓存中,导致⽤户被重定向到恶意⽹站。攻击者通过伪造DNS响应,使得DNS解析器认为这些响应来⾃权威源,从⽽“污染”了DNS缓存。
- DNS 放⼤攻击(DNS Amplification Attack):这是⼀种分布式拒绝服务(DDoS)攻击,其中攻击者利⽤公开的DNS服务器来放⼤⽹络流量。通过向多个DNS服务器发送具有伪造(欺骗)的源IP地址的⼩请求,这些服务器会向⽬标地址发送⼤量的DNS信息响应,导致⽬标系统或⽹络被过载。
- DNS 隧道(DNS Tunneling):DNS隧道技术允许数据通过DNS协议⾮法传输,常⽤于数据泄露或绕过⽹络安全控制。在这种攻击中,攻击者利⽤DNS查询和响应来传输⾮DNS流量,例如,通过DNS协议传输恶意软件或窃取数据。
- ⼦域名劫持(Subdomain Takeover):如果⼀个⼦域名指向的资源(如云服务的⼀个实例)已被释放或删除,但DNS记录仍然指向该地址,攻击者可以注册该释放的资源来接管⼦域名。这可能允许攻击者发布恶意内容或进⾏钓⻥攻击。
- 随机⼦域名攻击(Random Subdomain Attack):在这种攻击中,攻击者向DNS服务器发送⼤量不存在的⼦域名请求。由于这些⼦域名不存在,每次查询都会导致DNS服务器向权威服务器查询,从⽽消耗⼤量资源并可能导致服务降级或拒绝服务。
- NXDOMAIN 攻击:攻击者不断请求不存在的域名,导致DNS服务器频繁返回NXDOMAIN响应(表示域名不存在)。这种⾼频率的⽆效请求可能耗尽服务器资源,影响其处理合法请求的能⼒。
- DNS 重绑定(DNS Rebinding):DNS重绑定攻击利⽤浏览器信任同⼀域的策略,通过使DNS快速切换到不同的IP地址,从⽽允许恶意⽹⻚攻击局域⽹内的设备或服务。
防御措施:
- 使⽤安全的DNS解析器:配置DNS解析器使⽤DNSSEC来验证DNS响应的完整性和真实性。
- 限制递归查询:限制DNS服务器对外部或未经授权的递归DNS请求的响应。
- 监控和分析DNS流量:定期监控异常DNS流量和查询模式,以便快速识别和响应潜在的DNS攻击。
- 配置防⽕墙和⼊侵检测系统:使⽤防⽕墙规则和IDS/IPS系统来检测和阻断恶意DNS流量。
- DNS速率限制:对DNS响应进⾏速率限制,减少DNS放⼤攻击和随机⼦域名攻击的影响。
实验一、部署DNS服务器
首先在服务管理器中安装DNS服务,和之前的DHCP操作一样,不多赘述
右键选择DNS管理器,新建DNS服务 DNStest.com.cn 域名正向区域
- 正向查找区域(Forward Lookup Zone)
正向查找区域⽤于将域名解析为IP地址。这是DNS服务器的主要功能之⼀,⽤户输⼊⼀个域名(例如 www.example.com ),DNS服务器查找该域名对应的IP地址并返回给⽤户。正向查找区域的配置包括域名及其相应的记录类型,例如A记录(IPv4地址)或AAAA记录(IPv6地址)
- 反向查找区域(Reverse Lookup Zone)
反向查找区域则是将IP地址解析为域名的区域。反向查找通常⽤于诊断、⽇志记录或⽹络管理。反向查找区域需要配置PTR记录(Pointer Record),它将⼀个IP地址映射回域名。反向查找是通过将IP地址倒序排列,然后添加特定后缀来实现的。例如,对于IPv4地址,后缀是 in-addr.arpa ,对于IPv6地址,后缀是 ip6.arpa
接下来建立主要区域
输入我们的名称,点击下一步,选择创建新文件,下一步
接下来选择不允许动态更新。DNS的动态更新(Dynamic DNS Update)是⼀种允许DNS服务器⾃动更新其记录的机制,⽽不需要⼿动编辑DNS数据库⽂件。这种技术允许客户端或服务在其IP地址或其他资源信息发⽣变化时⾃动通知DNS服务器进⾏更新,从⽽简化了DNS记录的管理流程。但在本实验中设计其他内容,所以选择不动态更新
下一步,我们来新建www的主机A记录:在DNS test.com.cn区域空⽩处,右击选择新建主机。IP地址暂时为虚拟机地址
正向配置完毕,验证DNS配置情况
注意:在查询的时候提示服务器为UnKnown,意为反向域名解析失败,即⽆法解析172.16.130.143所对应的域名是什么。这正是因为我们暂时还没有配置反向解析,下个实验我们进一步完善。
实验二、反向域名解析
前面的步骤和正向一样,在反向查找区域名称中填入正确地址。后续步骤也和正向一样。完成
PTR记录,也称为指针记录,是DNS(域名系统)中的⼀种资源记录类型,⽤于实现IP地址到域名的反向解析。其基本功能是将⼀个数值IP地址映射回对应的规范主机名(FQDN,完全限定域名)。我们右键新建指针,填写正确的IP以及对应主机名,完成配置。
再回到客户端进行验证,现在能够反向解析了,实验成功
实验三、DNS同步
配置两台DNS服务器进⾏区域数据同步,通常涉及设置⼀个服务器作为主DNS服务器(PrimaryZone),另⼀个作为辅助DNS服务器(Secondary Zone)。这种设置可以确保DNS记录的⼀致性和可⽤性。
步骤1: 配置主DNS服务器
- 在主服务器上创建主区域:
- 打开“服务器管理器”。
- 点击“⼯具” -> “DNS”,打开DNS管理控制台。
- 右键点击“正向查找区域”或“反向查找区域”,选择“新建区域”。
- 跟随向导,选择“主区域”,输⼊区域的名称,例如你的域名,如 example.com 。
- 完成向导。
- 配置区域传输设置:
- 在DNS管理控制台中,右键点击你刚创建的区域名称,选择“属性”。
- 转到“区域传输”选项卡。
- 选择“允许区域传输”,然后选择“只允许到下列服务器”。但我在这里为了方便演示,直接使用“允许全部”
- 添加辅助DNS服务器的IP地址。
- (可选)在“通知”选项卡中,选择“仅限于下列服务器”,添加辅助DNS服务器的IP地址,以便主服务器在有更新时通知辅助服务器。
步骤2: 配置辅助DNS服务器
- 在辅助服务器上创建辅助区域:
- 与在主服务器上创建区域的步骤类似,不过这次选择“辅助区域”。
- 输⼊主DNS服务器的IP地址,这样辅助服务器知道从哪⾥拉取区域数据。
- 完成向导。
- 检查同步:
- 完成辅助区域的设置后,辅助服务器会尝试从主服务器同步区域数据。
- 你可以在辅助服务器上查看区域⽂件,确认是否已成功同步数据。
注意:设置的区域名称需要相同!
步骤3: 测试和验证
进⾏DNS记录的添加、修改或删除操作后,确保更改已从主DNS服务器正确同步到辅助DNS服务器。你可以通过以下⽅法进⾏验证:
使⽤ nslookup 或 dig 命令针对两个服务器分别查询,看看是否都返回了相同的记录信息。
例如,在命令提示符下输⼊:
假设:172.16.130.143 为主 172.16.130.141 为辅助
nslookup www.DNStest.com.cn 172.16.130.143
nslookup www.DNStest.com.cn 172.16.130.141
这种主辅DNS服务器配置增加了⽹络中DNS服务的冗余性和可靠性,确保即使主服务器出现故障,域名解析服务仍可继续提供。正确配置并定期维护这些设置对于保持⽹络稳定性⾄关重要
注意:在这里我又配置了辅助DNS服务器的反向DNS同步,不配置反向会出现UNknown的情况
版权归原作者 SUGERBOOM 所有, 如有侵权,请联系我们删除。