0%

tcpdump 进行 DNS 抓包

tcpdump 进行 DNS 抓包

在学习《Linux 高性能服务器编程》中,看到作者对 DNS 使用 tcpdump 进行抓包,所以本着实践出真知、多看多练的道理,也进行抓包,顺带记录一下。

我们先用 host 命令查询一下百度域名的 IP 地址

1
host -t A www.baidu.com

其中 -t A 是指 查询你 A 类型的地址,不过我也没有弄清楚这个 A 是什么类型

查询结果如下

image-20220805191657175

www.baidu.com 是 www.a.shifen.com 的别名。www.a.shifen.com 有两个地址 112.80.248.75 和 112.80.248.76

使用 tcpdump 进行抓包

1
sudo tcpdump -i eth0 -nt -c 10  port domain

其中

1
2
3
4
5
-i 指定抓包的网卡
-n 不把主机的网络地址转换成名字
-t 在每列倾倒资料上不显示时间戳记
-c 指定抓包的数量
port domain表示只抓取使用domain(域名)服务的数据包

最终抓取的有用结果截图如下:

image-20220805191641245

总共手动两个数据包

第一个数据包中(DNS 查询报文),从 ip:10.0.4.5(本机)端口 39454 发向 ip:183.60.83.19(DNS 服务器)的 53 端口(DNS 服务的端口),47814 是 DNS 查询报文的标识值,因此该值也出现在 DNS 应答报文中。“+” 表示启用递归查询标志。“A?” 表示使用 A 类型的查询方式。“www.baidu.com” 则是 DNS 查询问题中的查询名。“(31)” 表示 DNS 查询报文的长度为 32 字节

第二个数据包中(DNS 应答报文),“3/0/0” 表示该报文中包含 3 个应答资源记录、0 个授权资源记录和 0 个额外信息记录。“CNAME www.a.shifen.com., A 112.80.248.76, A 112.80.248.75” 则表示 3 个应答资源记录的内容。其中 CNAME 表示紧随其后的记录是机器的别名,A 表示紧随其后的记录是 ip 地址。该应答报文的长度为 90 字节。

未找到相关的 Issues 进行评论

请联系 @bugcat9 初始化创建