计算机网络实验 DNS协议分析与测量

ops/2024/11/25 16:51:42/

1. 实验目的

  • 了解互联网的域名结构、域名系统DNS及其域名服务器的基本概念

  • 熟悉DNS协议及其报文基本组成、DNS域名解析原理

  • 掌握常用DNS测量工具dig使用方法和DNS测量的基本技术

2. 实验环境

  • 硬件要求:阿里云云主机ECS 一台。

  • 软件要求:Linux/ Windows 操作系统

3. 实验内容

3.1 查看和配置本机的DNS系统

首先查看本机DNS服务器配置情况,其次增加一个DNS服务器:114.114.114.114或者8.8.8.8。

3.2 DNS信息测量

dig是著名的DNS软件 Bind提供的DNS分析和测量工具。Dig可以查询DNS包括NS记录,A记录,MX记录等相关信息的工具,利用它可以进行DNS测量和分析。

安装dig命令并进行以下查询和测量

dig www.xju.edu.cn

dig aaaa www.xju.edu.cn

dig cname www.sohu.com

dig www.xju.edu.cn @8.8.8.8

dig mx xju.edu.cn

dig ns xju.edu.cn @8.8.8.8

dig www.xju.edu.cn +trace 重要

dig edu.cn +dnssec @8.8.8.8 重要

dig edu.cn +dnssec @114.114.114.114 //解释RRSIG作用

参考资料:

BIND 9 - ISC
dig命令详解 - 马昌伟 - 博客园

3.3 DNS协议分析

使用tcpdump抓取DNS查询网络通信数据包,利用wireshark分析UDP和DNS协议数据

4、实验结果与分析

4.1 查看和配置本机的DNS系统

4.1.1 查看本机DNS服务器配置情况

首先下载dig命令,代码:yum install bind-utils,运行结果如下图4-1所示:

图4-1 下载dig命令

利用dig命令查看本机DNS配置,代码:dig|grep SERVER,运行结果如下图4-2所示:

图4-2 本机配置情况

4.1.2 增加配置DNS服务器

修改配置文件/etc/resolv.conf,修改完以后可以直接生效,代码:vi /etc/resolv.conf,运行结果如下图4-3所示:

图4-3 配置文件resolv.conf

输入i进入编辑模式,输入如下内容,nameserver 114.114.114.114,nameserver 8.8.8.8,然后按Esc退出,输入:wq保存,运行结果如下图4-4所示:

图4-4 修改配置文件resolv.conf

再次输入dig|grep SERVER查看配置是否成功,代码:dig|grep SERVER,运行结果如下图4-5所示:

图4-4 DNS添加成功

至此,DNS配置成功修改。

4.2 DNS信息测量

代码:dig www.xju.edu.cn,运行结果如下图4-5所示:

图4-5 dig www.xju.edu.cn

代码:dig aaaa www.xju.edu.cn,运行结果如下图4-6所示:

图4-6 dig aaaa www.xju.edu.cn

代码:dig cname www.sohu.com ,运行结果如下图4-7所示:

图4-7 dig cname www.sohu.com

代码:dig www.xju.edu.cn @8.8.8.8,运行结果如下图4-8所示:

图4-8 dig www.xju.edu.cn @8.8.8.8

代码:dig mx xju.edu.cn,运行结果如下图4-9所示:

图4-9 dig mx xju.edu.cn

代码:dig ns xju.edu.cn @8.8.8.8,运行结果如下图4-10所示:

图4-10 dig ns xju.edu.cn @8.8.8.8

代码:dig www.xju.edu.cn +trace ,意为使用迭代查询,跳过缓存DNS服务器,直接向各级域名服务器发起请求,运行结果如下图4-11所示:

图4-11 dig www.xju.edu.cn +trace

代码:dig edu.cn +dnssec @8.8.8.8,意为使用dig命令行测试和验证DNSSEC ,运行结果如下图4-12所示:

图4-12 dig edu.cn +dnssec @8.8.8.8

代码:dig edu.cn +dnssec @114.114.114.114,运行结果如下图4-13所示:

图4-13 dig edu.cn +dnssec @144.144.144.144

RRSIG作用:DNSSEC使用公钥加密对RRset进行签名和身份验证。数字签名存储在RRSIG资源记录中,并用于[RFC4035]中描述的DNSSEC身份验证过程。验证器可以使用这些RRSIG RRs来验证区域中的rrset。RRSIG RR只能用于携带用于保护DNS操作的验证材料(数字签名)。

RRSIG记录包含具有特定名称、类和类型的RRset的签名。RRSIG RR指定签名的有效间隔,并使用算法、签名者的名称和key tag来标识包含公钥的DNSKEY RR,验证器可以使用公钥来验证签名。

4.3 DNS协议分析

使用tcpdump抓取网络通信数据包,代码:tcpdump -i eth0 -w test.cap,运行结果如下图4-14所示:

图4-14 tcpdump -i eth0 -w test.cap

同时在xshell界面中,使用dig命令对www.xju.edu.cn进行解析,代码:dig www.xju.edu.cn,运行结果如下图4-15所示:

图4-15 dig www.xju.edu.cn

再打开xftp界面,将保存的test.cap文件下载到本地,如下图4-16所示:

图4-16 xftp界面

使用wireshark对test.cap进行解析,并对DNS数据包进行筛选,如下图4-17所示:

图4-17 wireshark界面

对UDP协议数据进行分析,如下图4-18所示:

图4-18 UDP协议数据

字段名字段值字段信息
Source Port37619源端口
Destination Port53目的端口
Length51UDP总长度
Checksum0xbf26UDP校验和
UDP payload43 bytesUDP有效负载

对DNS协议数据进行分析,如下图4-19所示:

图4-19 DNS协议数据

字段名字段值字段信息
Transaction ID0x839d事务ID
Flags0x0120标志字段
Questions1问题计数
Answer RRs0回答资源记录数
Authority RRs0权威名称服务器计数
Additional RRs1附加资源记录数

5、实验小结

问题与解决办法:

对于标志字段中各个字段的含义不太了解,经过查询资料得到以下结果:

  • QR(Response):查询请求/响应的标志信息。查询请求时,值为 0;响应时,值为 1。

  • Opcode:操作码。其中,0 表示标准查询;1 表示反向查询;2 表示服务器状态请求。

  • AA(Authoritative):授权应答,该字段在响应报文中有效。值为 1 时,表示名称服务器是权威服务器;值为 0 时,表示不是权威服务器。

  • TC(Truncated):表示是否被截断。值为 1 时,表示响应已超过 512 字节并已被截断,只返回前 512 个字节。

  • RD(Recursion Desired):期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉名称服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为 0,且被请求的名称服务器没有一个授权回答,它将返回一个能解答该查询的其他名称服务器列表。这种方式被称为迭代查询。

  • RA(Recursion Available):可用递归。该字段只出现在响应报文中。当值为 1 时,表示服务器支持递归查询。

  • Z:保留字段,在所有的请求和应答报文中,它的值必须为 0。

  • rcode(Reply code):返回码字段,表示响应的差错状态。当值为 0 时,表示没有错误;当值为 1 时,表示报文格式错误(Format error),服务器不能理解请求的报文;当值为 2 时,表示域名服务器失败(Server failure),因为服务器的原因导致没办法处理这个请求;当值为 3 时,表示名字错误(Name Error),只有对授权域名解析服务器有意义,指出解析的域名不存在;当值为 4 时,表示查询类型不支持(Not Implemented),即域名服务器不支持查询类型;当值为 5 时,表示拒绝(Refused),一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答。


http://www.ppmy.cn/ops/136623.html

相关文章

【SpringBoot】 数据库查询超时配置

文章目录 1. 简介1.1 介绍数据库超时配置的重要性1.2 概述Spring Boot在数据库连接中的应用 2. 配置文件层面处理超时2.1 Spring Boot数据库连接的基本配置2.2 常用的数据库连接池HikariCP如何在Spring Boot中配置HikariCPHikariCP的关键超时参数 Tomcat JDBC PoolDruid连接池关…

Unity3D基于ECS的游戏逻辑线程详解

前言 Unity3D是一款非常流行的游戏开发引擎,其采用的是组件实体系统(ECS)架构,这种架构可以让游戏开发者更加高效地管理游戏逻辑线程。本文将详细介绍Unity3D基于ECS的游戏逻辑线程,并给出技术详解以及代码实现。 对…

Go消费kafka中kafkaReader.FetchMessage(ctx)和kafkaReader.ReadMessage(ctx)的区别

在Go语言的Kafka消费中,kafkaReader.FetchMessage(ctx) 和 kafkaReader.ReadMessage(ctx) 都是用来从Kafka中消费消息的,但它们的用法和功能有一些细微的区别。以下是两者的主要区别: 1. FetchMessage(ctx) 功能:FetchMessage 从…

nohup java -jar supporterSys.jar --spring.profiles.active=prod

文章目录 1、ps -ef | grep java2、kill 13713、ps -ef | grep java4、nohup java -jar supporterSys.jar --spring.profiles.activeprod &5、ps -ef | grep java1. 启动方式进程 1371进程 19994 2. 主要区别3. 可能的原因4. 建议 1、ps -ef | grep java rootshipper:~# p…

Java开发经验——SpringRestTemplate常见错误

摘要 本文分析了在使用Spring框架的RestTemplate发送表单请求时遇到的常见错误。主要问题在于将表单参数错误地以JSON格式提交,导致服务器无法正确解析参数。文章提供了错误案例的分析,并提出了修正方法。 1. 表单参数类型是MultiValueMap RestControl…

实验二 系统响应及系统稳定性

实验目的 (1)学会运用Matlab 求解离散时间系统的零状态响应; (2)学会运用Matlab 求解离散时间系统的单位取样响应; (3)学会运用Matlab 求解离散时间系统的卷积和。 实验原理及实…

Vue框架中this指向问题

在 Vue 中,this 的指向问题与 JavaScript 的基本规则一致,但由于 Vue 的框架特性,其 this 在不同的场景下有特定的含义和使用方式。以下是 Vue 中常见的 this 指向情况和可能遇到的问题。 1. Vue 实例中的 this 在 Vue 的组件或根实例中&…

CSS中calc语法不生效

问题起因 在使用calc时发现无法生效,写法是: height:calc(100vh-100px);页面无效果,加空格后就发现有效果了: height:calc(100vh - 100px);这是为什么? calc是什么? css3 的计算属性,用于动态…