Wireshark分析DNS

什么是DNS

DNS指的是域名系统,它在内部有一个存储域名和对应IP地址的数据库,用于将网站的域名转换为服务器的具体IP地址。

例如,我们在浏览器打开baidu.com时,浏览器需要先请求DNS服务器获取域名baidu.com对应服务器的IP地址,然后浏览器与该IP建议消息通道来传输数据。

我们可以在系统命令行中通过nslookup命令来查询某个域名的DNS的记录,如下图所示:

在这里插入图片描述
这里我们指定使用阿里云的DNS服务器 223.5.5.5 来查询域名baidu.com映射的IP地址。从图中可以看到,查询结果返回了baidu.com映射的两个IP地址。

接下来我们使用Wireshark来抓包看看这个过程发生了什么。

Wireshark抓包

首先,我们打开Wireshark,选择正确的网卡并点击开始录制。
在这里插入图片描述
在这里插入图片描述

然后在命令行中使用如下命令先清除DNS缓存,以便我们可以看到无缓冲下的请求情况。

sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder;say flushed

输入密码后,听到flushed的语音表示清除DNS缓存成功。

接着再次输入 nslookup baidu.com 223.5.5.5 命令来让Wireshark进行抓包,并在抓包结果中输入dns关键字来过滤结果中所有的dns查询记录,如下图所示:

在这里插入图片描述

从图中可以看到,在输入上面的命令后,从172.20.81.29发送了一条DNS请求到223.5.5.5,并且223.5.5.5给172.20.81.29进行了回复。

在info一栏,可以看到请求解析的域名和返回的IP地址列表。

点击请求和返回的记录,能在详情中看到更多的信息,如下图所示:

request:
在这里插入图片描述
response:
在这里插入图片描述

关键信息

Transcation ID

Transcation ID 为查询事物标识,它与返回记录中的Transcation ID 想对应。如果两条DNS通信记录中的Transcation ID 相同 ,可以判断它们是一对请求和返回。

Recursion desired

Recursion desired如果标志为1,则表示该DNS请求可以在服务器链路中递归的进行查询。在中间服务器查询不到记录时,一直递归的DNS根服务器。

Queries

Queries包含DNS request的域名的字符串,在本示例中为baidu.com。

Reply code

DNS response的状态码,可以在这个字段的信息中查看response是否成功。在失败的情况下也可以查看失败对应的原因。

Answers

DNS服务器返回的IP地址列表。点开Answers详情,还可以看到该DNS缓存的有效时间,如下图所示:
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值