tcpdump 进行 DNS 抓包
在学习《Linux 高性能服务器编程》中,看到作者对 DNS 使用 tcpdump
进行抓包,所以本着实践出真知、多看多练的道理,也进行抓包,顺带记录一下。
我们先用 host
命令查询一下百度域名的 IP 地址
1 | host -t A www.baidu.com |
其中 -t A
是指 查询你 A 类型的地址,不过我也没有弄清楚这个 A
是什么类型
查询结果如下
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 | -i 指定抓包的网卡 |
最终抓取的有用结果截图如下:
总共手动两个数据包
第一个数据包中(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 初始化创建