在这个信息爆炸的年代,过多的知识搬运工,导致了我们整天被大量信息充斥着,过多无用,重复的信息充斥着我们,只会让我们视觉疲劳。快节奏的时代,我们需要的是原创、干货。2014年起,本公众号一路与大家相伴走来,收获了不少,成为深受网工们青睐的公众号。今后,将持续与大家分享干货,分享福利,让我们每天进步一点点!共同成长 by 阿龙 我们都知道,想学会网络技术,人人都绕不开“抓包”这项技能。只有把设备之间交互的信息读透了,搞懂它,那么,你在网络世界里,就能游刃有余,如鱼得水。 相信,很多网工都抓过包,可能大部分初学者都是抓网络设备、电脑上的数据包,很少抓过linux服务器上的数据包,今天龙哥就与大家分享一下,linux抓包工具:tcpdump 简介 Tcpdump是著名的sniffer,是一个被很多UNIX高手认为是一个专业的网络管理工具,记得以前TsutomuShimomura,就是使用他自己修改过的TCPDUMP版本来记录了KEVINMITNICK攻击他系统的记录,后来就配合FBI抓住了KEVINMITNICK。你能够利用这个工具检查访问你服务器中的文件包信息,监测你网络中的问题所在。
其实说白了,tcpdump就类似我们经常在window客户端使用wireshark,区别就是一个是图形界面,一个是命令形式。 安装tcpdump 如果你的系统默认没有安装tcpdump,那么你可以使用如下命令,进行安装: yum install tcpdump -y 命令实例 为了方便大家直观理解,我简单画了个参数图,如下: 注释: option:可选参数,可以指定相关参数,输出特定信息。 proto:类过滤器,指定某种协议的数据包。如tcp。 direction:类过滤器,根据数据流向进行过滤,可识别的关键字有:src, dst,同时你可以使用逻辑运算符进行组合,比如 src or dst。 type:类过滤器,可识别的关键词有:host, net, port, portrange,这些词后边需要再接参数。 在开始玩tcpdump时,读者应该有所了解报文结构,这样才能更好读懂tcpdump输出的信息。 1、抓取特定网卡 80端口的链接情况: 我先用ifconfig查看网卡名称: ifconfig 输入下来命令后,打开百度网页: tcpdump -i ens33 port 80 可以捕获到如下信息,截取一部分:
关于上面输出的内容,格式注释如下: 第一列:时分秒毫秒 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:保存的文件名。 通过ls,可以看到该文件已生成: 接下来,龙哥(网络工程师阿龙)将用“Winscp”软件登录该linux服务器上把“20210616.cap”文件拷贝到window电脑上。 输入linux服务器ip地址(即我虚拟机的ip地址)、账号、密码 下载cap文件: 已下载到window物理机上了: 双击,我们就可以使用wireshark来查看数据包了: 3、基于协议进行过滤,比如就只抓起icmp报文。 tcpdump icmp 输完上述命令后,我打开网页,又进行了ping测试,先ping8.8.8.8,然后中止了,再ping 114.114.114.114. 来看看,命令输出的结果:
4、上述我们看到了,ping 114.114.114.114,tcpdump输出显示是域名形式,如果我们希望显示ip地址,可以加一个参数:-n (即不把ip转化成域名,直接显示 ip,避免执行 DNS lookups 的过程,速度会快很多) tcpdump icmp -n 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的报文。 本期就先分享这些了,相信初学者对tcpdump已经有所了解了。感兴趣的同学,可以抽空专门深入研究一下该工具,其实该命令主要是了解它的语法规则,即过滤规则,以便后续工作中,能快速捕获自己想要的数据包,而不用捕获一堆无用的数据包,太多无用的数据包,一是占存储空间,二是视觉疲劳,效率低。 |
|