DNS

DNS

计算机访问网站需要知道网站的IP地址。DNS协议负责将域名解析成IP地址。DNS是Domain Name System的缩写,意思是域名系统。

域名是分层的,所有的域名都是以英文的“.”开始,是域名的根,根下面是顶级域名,顶级域名共有两种形式:国家代码顶级域名(简称“国家顶级域名”)和通用顶级域名。国家代码顶级域名由各个国家的互联网络信息中心(Network Information Center,NIC)管理,通用顶级域名则由位于美国的全球域名最高管理机构(The Internet Corporation for Assigned Names and Numbers,ICANN)负责管理。

国家顶级域名又称“国家代码顶级域名”,指示国家区域,如cn代表中国、us代表美国、fr代表法国、uk表示英国等。

通用顶级域名指示注册者的域名使用领域,它不带有国家特性。到2006年12月为止,通用顶级域名的总数已经达到18个。常见的通用顶级域名有7个,即com(公司企业)、net(网络服务机构)、org(非营利组织)、int(国际组织)、edu(教育机构)、gov(政府部门)、mil(军事部门)。

在国家顶级域名下注册的二级域名均由该国家自行确定。例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不用edu和com。

我国把二级域名划分为“类别域名”和“行政区域名”两大类。

“类别域名”共7个,分别为ac(科研机构)、com(工、商、金融等企业)、edu(中国的教育机构)、gov(中国的政府机构)、mil(中国的国防机构)、net(提供互联网络服务的机构)、org(非营利组织)。

“行政区域名”共34个,适用于我国的各省、自治区、直辖市,如bj(北京市)、js(江苏省)等。

值得注意的是,我国修订的域名体系允许直接在cn的顶级域名下注册二级域名,给我国的Internet用户提供了很大的方便。例如,某公司abe以前要注册为abe.com.cn,这显然是个三级域名,现在可以注册为abe.cn,变成了二级域名。

企业或个人申请了域名后,可以在该域名下添加多个主机名,也可以根据需要创建子域名,子域名下面也可以有多个主机名,如图1-47所示。企业或个人自己管理,不需要再注册。例如,新浪网注册了域名新浪.com.cn,该域名下有3个主机名www、smtp、pop,新浪新闻需要有单独的域名,于是在****.com.cn域名下设置子域名news.****.com.cn;新闻又分为军事新闻、航空新闻、新浪天气等模块,分别使用mil、sky和weather作为栏目的主机名。

要想在Internet上搭建一个健壮的、可扩展的域名解析体系架构,就要把域名解析的任务分摊到多个DNS服务器上。B服务器负责net域名解析、C服务器负责com域名解析、D服务器负责org域名解析。如下图,B、C、D这一级别的DNS服务器称为顶级域名服务器。

如下图所示,Client计算机的DNS服务器指向了13.2.1.2,也就是指向了B服务器。现在Client向DNS服务器发送一个域名解析请求数据包,解析www.inhe.net的IP地址,B服务器正巧负责inhe.net域名解析,查询本地记录后将查询结果221.192.141.115直接返回给Client,DNS服务器直接返回查询结果就是权威应答,这是一种情况。

另一种情况,Client向B服务器发送请求,解析www.**.com域名的IP地址

域名解析的步骤如下。

第①步,Client向DNS服务器13.2.1.2发送域名解析请求。

第②步,B服务器只负责net域名解析,它也不知道哪个DNS服务器负责com域名解析,但它知道根域名服务器(A)的IP地址,于是将域名解析的请求转发给根域名服务器。

第③步,根域名服务器返回查询结果,告诉B服务器去查询C服务器。

第④步,B服务器将域名解析请求转发到C服务器。

第⑤步,C服务器虽然负责com域名解析,但**.com域名解析委派给了E服务器,C服务器返回查询结果,告诉B服务器去查询E服务器。

第⑥步,B服务器将域名解析请求转发到E服务器。

第⑦步,E服务器上有**.com域名下的主机记录,将www.**.com的IP 地址220.181.90.14返回给B服务器。

第⑧步,B服务器将费尽周折查找到的结果缓存一份到本地,将解析到的www.**.com的IP地址220.181.90.14返回给Client。这个查询结果是B服务器查询得到的,因此是非授权应答。Client缓存解析的结果。

至此,Client得到解析的最终结果,它并不知道B服务器所经历的曲折的查找过程。对Client来说,它可以使用B服务器解析全球的域名。

第⑨步,Client2的DNS也指向了13.2.1.2,现在Client2也需要解析www.**.com的地址,它将域名解析请求发送给B服务器。

第⑩步,B服务器刚刚缓存了www.**.com的查询结果,所以直接查询缓存,将www.**.com的IP地址返回给Client2。

可见DNS服务器的缓存功能能够减少向根域名服务器转发查询次数、减少Internet上DNS查询报文的数量,缓存的结果有效期通常为1天。如果没有时间限制,当www.**.com的IP地址变化了,Client2就不能查询到新的IP地址了。

参考资料:

1、阮一峰DNS 原理入门

 DNS 原理入门 - 阮一峰的网络日志

2、国内外主流DNS

DNS抓包

在命令提示符处输入“ping www.91xueit.com”。停止捕获,在显示过滤器中输入“dns.qry.name == www.91xueit.com”,单击按钮应用显示过滤器,如下图所示。可以看到第26个数据包是DNS域名解析请求报文,报文中的字段是用DNS协议定义的。

下图所示的第37个数据包是DNS服务器响应报文,可以看到其中有解析到的IP地址219.148.36.48。

实验3:DNS协议分析

目标:了解DNS协议的工作原理,掌握DNS查询和响应的格式。

操作步骤:

  1. ipconfig/flushdns 清除dns缓存;浏览器清空缓存
  2. 打开Wireshark软件,开始抓包。
  3. 在浏览器中访问一个网站,例如www.baidu.com。
  4. 停止抓包,查看捕获到的数据包(截图)

  1. 在过滤器栏中输入dns,只显示DNS协议相关的数据包。过滤规则参考【ip.addr == ip地址】【dns.qry.name == 域名】【dns.flags.response == 0或1,其中0为查询/1为响应】(截图)

根据以上信息,分析以下问题:

  1. 简要分析DNS查询和响应的格式,包括查询请求、查询响应、权威回答等字段的含义和作用。

1.查询请求

    1. 域名:待查询的主机名或域名。
    2. 查询类型:指定查询的记录类型,常见的有A记录(IPv4地址)、AAAA记录(IPv6地址)、CNAME记录(别名)、MX记录(邮件服务器)、NS记录(域名服务器)等。
    3. 查询类别:通常为IN(Internet)。

2.查询响应

    1. 标识符:用于匹配查询请求和响应。
    2. 响应码:指示查询的结果,常见的有NOERROR(无错误)、NXDOMAIN(域名不存在)、REFUSED(拒绝查询)等。
    3. 是否递归查询:指示本地DNS服务器是否可发起递归查询。
    4. 回答计数:表示回答部分中包含的DNS记录数量。
    5. 授权回答计数:表示授权回答部分中包含的DNS记录数量。
    6. 额外信息计数:表示附加信息部分中包含的DNS记录数量。

3.权威回答

    1. 域名:指定的主机名或域名。
    2. 类型:指示该记录的类型,如A记录、AAAA记录等。
    1. 类别:通常为IN(Internet)。
    1. TTL(Time to Live):指定该记录在缓存中的有效时间。
    2. 数据长度:记录数据的长度。
    3. 数据:具体的记录数据,如IP地址、别名等。

  1. 分析DNS协议的查询类型,例如A记录、CNAME记录等。

1.A记录(Address Record)

    1. 作用:将主机名解析为IPv4地址。
    2. 示例:将域名"example.com"解析为IPv4地址"192.0.2.1"。

2.AAAA记录

    1. 作用:将主机名解析为IPv6地址。
    2. 示例:将域名"example.com"解析为IPv6地址"2001:0db8:85a3:0000:0000:8a2e:0370:7334"。

3.CNAME记录(Canonical Name Record)

    1. 作用:为一个主机名创建一个别名,使得两个主机名可以指向同一个IP地址。
    2. 示例:将域名"www.example.com"指向别名"webserver.example.com",即两个域名都指向同一个IP地址。

4.MX记录(Mail Exchange Record)

    1. 作用:指定邮件服务器的优先级和域名。
    2. 示例:指定接收"example.com"域名下的邮件的邮件服务器及其优先级顺序。

5.NS记录(Name Server Record)

    1. 作用:指定该域名由哪个域名服务器来进行解析。
    1. 示例:指定"example.com"域名的域名服务器。

  1. 简要总结DNS协议的特点和应用场景。

特点:

  1. 分布式:DNS系统由许多不同的DNS服务器组成,这些服务器分布在全球各地,形成了一个分布式的网络体系。
  2. 层次化:DNS系统采用层次化的命名结构,允许不同的域名空间之间存在父子关系,方便管理和维护。
  3. 缓存机制:DNS系统支持本地缓存机制,可以缓存查询结果,提高查询效率,并减轻DNS服务器的负担。
  4. 容错性:DNS系统具有较强的容错性,即使某个DNS服务器出现故障,也能够通过备用服务器来处理请求。

应用场景:

  1. 域名解析:DNS协议是互联网上实现域名解析的核心协议,通过将域名转换为IP地址,使得用户可以方便地通过域名来访问互联网上的各种网络服务。
  2. CDN加速:CDN(Content Delivery Network)是一种通过在全球部署多个节点服务器来提供高速内容分发服务的技术,DNS协议可以通过将用户请求重定向到最近的CDN节点,实现全球范围内的内容加速和优化。
  3. 防DNS攻击:DNS系统由于涉及到全球性的域名解析服务,容易成为黑客攻击的目标,DNS协议可以通过一些防御措施,如DNS缓存污染、DNS隧道等,来保护DNS系统的安全和稳定性。
  4. 内部域名解析:在企业内部或局域网中,DNS协议可以用于管理内部域名解析,实现内部网络资源的访问和管理。

实验4:DNS缓存机制分析

目标:了解DNS缓存机制的原理和实现方式,掌握使用ipconfig工具查看和清除DNS缓存的方法。

操作指南:

  1. 打开命令提示符或终端窗口。
  2. 输入ipconfig /displaydns命令,观察输出结果(截图)

  1. 3在输出结果中查找已缓存的DNS记录,包括主机名、IP地址和TTL值。(截图并简要分析)

  1.  4输入ipconfig /flushdns命令,清除DNS缓存。(截图)

  1. 5 再次输入ipconfig /displaydns命令,观察缓存的变化。(截图)

根据以上信息,分析以下问题:

  1. DNS缓存的作用是什么?它如何提高DNS查询的效率?
  1. 提高DNS查询效率:由于DNS查询通常需要多次网络传输,因此会产生一定的延迟。通过本地缓存DNS记录,可以避免重复查询DNS服务器,从而节省时间和带宽,并提高DNS查询的效率。
  2. 减轻DNS服务器负担:由于DNS服务器需要处理大量的查询请求,如果每个请求都需要回答一遍相同的记录,DNS服务器的负担就会很大。通过本地缓存DNS记录,可以减轻DNS服务器的负担,降低DNS服务器的压力,提高系统的可靠性和稳定性。

DNS缓存的实现方法包括以下两种:

  1. 递归查询:DNS客户端首先向本地DNS服务器发送DNS查询请求,如果本地DNS服务器没有缓存相应的DNS记录,则会向上级DNS服务器发送递归查询请求,直到找到相应的DNS记录并返回给客户端。
  2. 迭代查询:DNS客户端向本地DNS服务器发送DNS查询请求,如果本地DNS服务器没有缓存相应的DNS记录,则会向上级DNS服务器发送迭代查询请求,上级DNS服务器返回一个指向下一级DNS服务器的指针,本地DNS服务器再向下一级DNS服务器发送查询请求,直到找到相应的DNS记录并返回给客户端。
  1. DNS缓存的更新策略是什么?它如何保证缓存的有效性?

1.TTL(Time to Live):每个DNS记录通常都会包含一个TTL值,表示该记录在缓存中的有效时间。当本地DNS服务器从上级DNS服务器获取到一个DNS记录时,会将该记录保存在本地缓存中,并设置一个TTL值,超过这个时间后就会被视为过期,需要重新查询更新。

2.主动刷新:本地DNS服务器可以周期性地向上级DNS服务器发送刷新请求,以获取最新的DNS记录。这样可以确保缓存中的记录及时更新,保持与上级DNS服务器的同步。

  1. 被动刷新:当本地DNS服务器收到一个查询请求时,会检查相应的缓存记录是否过期,如果过期则会向上级DNS服务器发送查询请求,获取最新的DNS记录并更新缓存。
  2. 负载均衡:一些DNS服务器会根据负载情况动态地分配和更新DNS缓存,以确保各个DNS服务器的负载均衡和高效运行。
  3. 强制刷新:管理员可以通过手动操作或特定的命令来强制清空缓存,使得本地DNS服务器重新获取最新的DNS记录。

  1. DNS缓存对网络安全有什么影响?如何防止恶意DNS缓存攻击?

  1. DNS劫持攻击:攻击者可以通过篡改DNS缓存记录,将用户访问的域名解析到恶意的IP地址,从而实现DNS劫持攻击,偷窃用户信息或者进行钓鱼欺诈等行为。
  2. DNS污染攻击:攻击者可以通过伪造DNS响应,将恶意的DNS记录注入到本地DNS缓存中,从而实现DNS污染攻击,导致用户无法访问正常的网站。
  3. 反射攻击:攻击者可以利用DNS服务器的放大效应,向大量的DNS服务器发送查询请求,从而产生大量的DNS响应流量,导致网络拥塞和服务不可用。

为了防止恶意DNS缓存攻击,需要采取以下措施:

  1. 加强DNS服务器的安全性:保证DNS服务器的操作系统和应用软件的安全性,安装最新的补丁和更新,限制不必要的服务和端口开放,使用防火墙和IDS等安全设备进行防御和监测。
  2. 启用DNSSEC技术:DNSSEC是一种DNS安全扩展技术,可以对DNS查询和响应进行数字签名和验证,确保DNS数据的完整性和真实性,防止DNS缓存攻击和DNS欺骗攻击。
  3. 定期清理DNS缓存:定期清理本地DNS缓存,避免缓存中的记录过期或被篡改,从而降低恶意攻击的风险。
  4. 使用可信赖的DNS服务器:使用可信赖的DNS服务器,避免使用公共的、未经验证的DNS服务器,以免受到恶意攻击。
  5. 设置DNS防护策略:设置DNS防护策略,包括限制DNS查询流量、设置DNS过滤规则和IP黑白名单等,有效防御DNS缓存攻击。

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值