linux tcp工具,linux工作利器之二,网络分析工具tcpdump

简单介绍

tcpdump是一个能够对网络上的数据包进行收集的网络分析工具,根据用户自定义条件截取数据包,具备灵活的策略,是系统管理员分析网络、排查问题的利器。tcpdump提供了源代码,有公开的接口,因此具备很强的可扩展性,它支持针对网络层、协议、主机、网络或端口的过滤,并且支持and、or、not等逻辑语句。普通用户无法执行tcpdump命令,只有具备root权限才能执行。

参数介绍

默认情况下启动tcpdump,将监听在第一个网络接口上所有流过的数据包

700f2c6724566d0fc6036822bb27b118.png

tcpdump支持很多参数,往往网络中流量很大,如果不加分辨收集所有的数据包,数据量太大,不容易发现需要的数据包,使用参数定义的过滤规则收集特定的数据包,缩小目标,便于更好的分析网络中存在的问题。

-i 指定网络接口

-w 将结果输出到文件中,通常文件以.pcap作为后缀,可以结合wirkshark分析数据

-n 不把网络地址换成名字(不进行域名解析,速度更快)

-nn 不进行端口名称的转换,直接以ip和端口显示

-v 输出一个稍微详细的信息(例如在ip包中可以包括ttl和服务类型的信息)

-vv 输出详细的报文信息

-c 在收到指定的包的数目后,tcpdump就会停止,默认tcpdump需要crtl+c结束

-C 后接file_size,指定-w写入文件的大小,如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件, file_size 的单位是兆字节

-a 将网络地址和广播地址转变成名字

-A 以ASCII格式打印出所有分组,并将链路层头最小化,方便去收集web页面内容

-d 将匹配信息包的代码以人们能够理解的汇编格式给出

-dd 将匹配信息包的代码以c语言程序段的格式给出

-ddd 将匹配信息包的代码以十进制的形式给出

-D 打印出系统中所有可以用tcpdump分析的网络接口

-q 快速输出,只输出较少信息

-e 在输出行打印出数据链路层的头部信息

-f 将外部的Internet地址以数字的形式打印出来

-l 使标准输出变为缓冲行形式

-t 在输出的每一行不打印时间戳

-tt 在每一行中输出非格式化的时间戳

-ttt 输出本行和前面一行之间的时间差

-F 从指定的文件中读取表达式,忽略其它的表达式

-r 从指定的文件中读取包(这些包一般通过-w选项产生)

-w 直接将包写入文件中,并不分析和打印出来

-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议)

tcpdump表达式

格式:

tcpdump [option] 协议 + 传输方向 + 类型 + 具体值

这是一个正则表达式,满足表达式的报文会被收集。

协议:主要包括ip、arp、rarp、tcp、udp、icmp、http,指定监听包的协议内容,如果没有指定,默认是监听所有协议的数据包

传输方向:主要包括src、dst、dst or src、dst and src,指定传输方向,源地址或目标地址,如果没有指定,默认是src or dst

类型:主要包括host、net、port、ip proto、protochain,指定收集的主机或网段,如果默认没有指定,默认是host

其他关键字:gateway, broadcast,less,greate;三种逻辑运算符,取非运算 'not ' '! ', 与运算'and','&&',或运算 'or' ,'││'

使用实例

包含主机192.0.0.19的数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 5 host 192.0.0.19

b8bea6fcebeb7b84a2e11c0f32b30f8d.png

包含192.0.0.0/24网段的数据包

[root@kafka ~]# tcpdump -i eth0 -c 1 net 192.0.0.0/24

[root@kafka ~]# tcpdump -i eth0 -c 1 net 192.0.0.0 mask 255.255.255.0

33280026f312ccafef79958cfb3a5b27.png

源ip是192.0.0.19的数据包和目标地址是192.0.0.19的数据包

[root@kafka ~]# tcpdump -i eth0 -c 4 src host 192.0.0.19

[root@kafka ~]# tcpdump -i eth0 -c 4 dst host 192.0.0.19

43f465de680f8ccd5b3574a9a1b4d4ce.png

9092端口的数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 4 port 9092

3a8f0e50549991e26f19771f36cda22d.png

ssh服务的数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 4 port ssh

3ec84d03c29f524279a81866e9cb6f48.png

源端口是9092的数据包,目标端口是9092的数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 src port 9092

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 dst port 9092

3fbecba28f30475efbecce43da474b05.png

tcp协议、udp协议、icmp协议的数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 tcp

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ip proto '\tcp'

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 udp

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ip proto '\udp'

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 icmp

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ip proto '\icmp'

1d86a6ae6f098f7caa82c6692f1491a4.png

源ip是192.0.0.19且目标端口是9092的数据包,用and

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 src 192.0.0.19 and dst port 9092

232acfa43cfd13350cc60bbff1323f20.png

源ip是192.0.0.19或目标端口是9092的数据包,用or

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 src 192.0.0.19 or dst port 9092

ac4826a71db3e833119273e3e80d87b8.png

源ip是192.0.0.19且端口是9092,或源ip是192.0.0.20且目的端口不是80的数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 4 \(src host 192.0.0.19 and port 9092\) or \(src host 192.0.0.20 and not dst port 80\)

2b7cd5a04ec3807a991214a76733d267.png

流经网卡eth0的1000个数据包保存在文件backup.cap中

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 1000 -w backup.cap

0b30c512f081ab7f3b49e7119dd0b9d8.png

从文件backup.cap中读取tcp协议的10个数据包

[root@kafka ~]# tcpdump -i eth0 -c 10 -r backup.cap tcp

59e3b26f646df3104cf445270e571c73.png

数据包类型是多播且端口不是22且协议不是icmp的数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv ether multicast and not port 22 and not icmp

c8e809a948aeb8d62921bf03d105ee5c.png

协议是ospf的数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv ip proto ospf

db2c437e68ad01c3ec08936e2e92222b.png

包长度大于50,小于100的数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 5 less 100 and greater 50

63362d452167768a6c04a5199c6b8b3a.png

ip信息类型的数据包,ip信息类型协议可以是icmp、icmp6、igmp、igrp、pim、ah、esp、vrrp、udp、tcp

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ip proto '\tcp'

ipv6信息类型的数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ip6 proto '\tcp'

4def130f49e1e00a335038c4dd65f1b5.png

ether信息类型的数据包,ether信息类型协议可以是ip、ip6、arp、rarp、atalk、aarp、decnet、sca、lat、mopdl、moprc、iso、stp、ipx或netbeui

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ether proto '\ip'

bb5c148ae1c89ef5f3a76e85d4264ded.png

以太网广播、多波数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv ether broadcast

[root@kafka ~]# tcpdump -i eth0 -nnvv ether multicast

fe79bc555e546d401864738d020fb009.png

ipv4广播、多波数据包

[root@kafka ~]# tcpdump -i eth0 -nnvv ip broadcast

[root@kafka ~]# tcpdump -i eth0 -nnvv ip multicast

e9c2eb4f4953b704c0fbb3bf8fca558d.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值