分享

高级网工必知的Linux抓包工具:tcpdump

 InfoRich 2022-10-30 发布于江苏
Image
Image

在这个信息爆炸的年代,过多的知识搬运工,导致了我们整天被大量信息充斥着,过多无用,重复的信息充斥着我们,只会让我们视觉疲劳。快节奏的时代,我们需要的是原创、干货。2014年起,本公众号一路与大家相伴走来,收获了不少,成为深受网工们青睐的公众号。今后,将持续与大家分享干货,分享福利,让我们每天进步一点点!共同成长 by 阿龙

Image

我们都知道,想学会网络技术,人人都绕不开“抓包”这项技能。只有把设备之间交互的信息读透了,搞懂它,那么,你在网络世界里,就能游刃有余,如鱼得水。

相信,很多网工都抓过包,可能大部分初学者都是抓网络设备、电脑上的数据包,很少抓过linux服务器上的数据包,今天龙哥就与大家分享一下,linux抓包工具:tcpdump



简介



Tcpdump是著名的sniffer,是一个被很多UNIX高手认为是一个专业的网络管理工具,记得以前TsutomuShimomura,就是使用他自己修改过的TCPDUMP版本来记录了KEVINMITNICK攻击他系统的记录,后来就配合FBI抓住了KEVINMITNICK。你能够利用这个工具检查访问你服务器中的文件包信息,监测你网络中的问题所在。

Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是不可少的。TcpDump是Linux中强大的网络数据采集分析工具之一。用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的工具之一。

百度百科

其实说白了,tcpdump就类似我们经常在window客户端使用wireshark,区别就是一个是图形界面,一个是命令形式。



安装tcpdump



如果你的系统默认没有安装tcpdump,那么你可以使用如下命令,进行安装:

yum install tcpdump -y

Image



命令实例



为了方便大家直观理解,我简单画了个参数图,如下:

Image

注释:

option:可选参数,可以指定相关参数,输出特定信息。

proto:类过滤器,指定某种协议的数据包。如tcp。

direction:类过滤器,根据数据流向进行过滤,可识别的关键字有:src, dst,同时你可以使用逻辑运算符进行组合,比如 src or dst。

type:类过滤器,可识别的关键词有:host, net, port, portrange,这些词后边需要再接参数。

在开始玩tcpdump时,读者应该有所了解报文结构,这样才能更好读懂tcpdump输出的信息。

1、抓取特定网卡 80端口的链接情况:

我先用ifconfig查看网卡名称:

ifconfig

Image

输入下来命令后,打开百度网页:

 tcpdump -i ens33 port 80

Image

可以捕获到如下信息,截取一部分:

21:31:34.422461 IP 221.5.75.35.http > localhost.localdomain.42884: Flags [P.], seq 1715:1720, ack 302, win 64240, length 5: HTTP

21:31:34.422473 IP localhost.localdomain.42884 > 221.5.75.35.http: Flags [.], ack 1720, win 33888, length 0

关于上面输出的内容,格式注释如下:

第一列:时分秒毫秒 21:31:34.422461

第二列:网络协议 IP

第三列:发送方的ip地址+端口号,其中221.5.75.35是 ip,而http 是端口号,即80

第四列:箭头 >, 表示数据流向

第五列:接收方的ip地址+端口号,其中 localhost.localdomain. 是 ip,本机,而42884是端口号。

第六列:冒号

第七列:数据包内容,包括Flags 标识符,seq 号,ack 号,win 窗口,数据长度 length,其中 [P.] 表示 PUSH 标志位为 1。

其中Flags 标识符有以下几种:

[S] : SYN(开始连接)

[P] : PSH(推送数据)

[F] : FIN (结束连接)

[R] : RST(重置连接)

[.] : 没有 Flag,由于除了 SYN 包外所有的数据包都有ACK,所以一般这个标志也可表示 ACK

2、如果你觉得命令行不习惯,还是喜欢用wireshark来查看数据包,那么你还可以使用tcpdump来保存.cap文件,然后导出cap文件,就可以用wireshark软件来打开查看了。

tcpdump -i ens33 port 80 -w ./20210616.cap

(左右滑动一下)

注释:

-w:参数指定将监听到的数据包写入文件中保存,file.cap就是该文件。

./:保存的路径。

20210616.cap:保存的文件名。

Image

通过ls,可以看到该文件已生成:

Image

接下来,龙哥(网络工程师阿龙)将用“Winscp”软件登录该linux服务器上把“20210616.cap”文件拷贝到window电脑上。

输入linux服务器ip地址(即我虚拟机的ip地址)、账号、密码

Image

下载cap文件:

Image

已下载到window物理机上了:

Image

双击,我们就可以使用wireshark来查看数据包了:

Image

3、基于协议进行过滤,比如就只抓起icmp报文。

tcpdump icmp

输完上述命令后,我打开网页,又进行了ping测试,先ping8.8.8.8,然后中止了,再ping 114.114.114.114.

Image

来看看,命令输出的结果:

Image

23:05:28.009283 IP public1.114dns.com > localhost.localdomain: ICMP echo reply, id 24125, seq 3, length 64

4、上述我们看到了,ping 114.114.114.114,tcpdump输出显示是域名形式,如果我们希望显示ip地址,可以加一个参数:-n  (即不把ip转化成域名,直接显示 ip,避免执行 DNS lookups 的过程,速度会快很多)

tcpdump icmp -n

Image

5、捕获特定的目的IP地址的数据包。

我在linux服务器上进行ping多个地址(114.114.114.114、223.5.5.5、223.6.6.6),然后我tcpdump只需114.114.114.114的。

tcpdump icmp -n and dst host 114.114.114.114

(左右滑动一下)

and:后面就是加了限制条件,只捕获指定的目的ip地址为114.114.114.114的报文。

Image

Image

本期就先分享这些了,相信初学者对tcpdump已经有所了解了。感兴趣的同学,可以抽空专门深入研究一下该工具,其实该命令主要是了解它的语法规则,即过滤规则,以便后续工作中,能快速捕获自己想要的数据包,而不用捕获一堆无用的数据包,太多无用的数据包,一是占存储空间,二是视觉疲劳,效率低。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多