linux下的tcpdump

前期主要介绍了wireshark抓包工具的基本和组合用法,这款工具可以与tcpdump进行结合,在Linux主机用tcpdump抓取我们需要的数据包,然后保存在本地,最后用wireshark工具打开进行查看数据包。这里先介绍tcpdump如何使用。
TCPDump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
---来源百度百科

1、查看tcpdump帮助命令:

tcpdump --help

-A:以ASCII编码打印每个报文(不包括链路层的头),这对分析网页来说很方便;
-a:将网络地址和广播地址转变成名字;
-c<数据包数目>:在收到指定的包的数目后,tcpdump就会停止;
-C:用于判断用 -w 选项将报文写入的文件的大小是否超过这个值,如果超过了就新建文件(文件名后缀是1、2、3依次增加);
-d:将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd:将匹配信息包的代码以c语言程序段的格式给出;
-ddd:将匹配信息包的代码以十进制的形式给出;
-D:列出当前主机的所有网卡编号和名称,可以用于选项 -i;
-e:在输出行打印出数据链路层的头部信息;
-f:将外部的Internet地址以数字的形式打印出来;
-F<表达文件>:从指定的文件中读取表达式,忽略其它的表达式;
-i<网络界面>:监听主机的该网卡上的数据流,如果没有指定,就会使用最小网卡编号的网卡(在选项-D可知道,但是不包括环路接口),linux 2.2 内核及之后的版本支持 any 网卡,用于指代任意网卡;
-l:如果没有使用 -w 选项,就可以将报文打印到 标准输出终端(此时这是默认);
-n:显示ip,而不是主机名;
-N:不列出域名;
-O:不将数据包编码最佳化;
-p:不让网络界面进入混杂模式;
-q:快速输出,仅列出少数的传输协议信息;
-r<数据包文件>:从指定的文件中读取包(这些包一般通过-w选项产生);
-s<数据包大小>:指定抓包显示一行的宽度,-s0表示可按包长显示完整的包,经常和-A一起用,默认截取长度为60个字节,但一般ethernet MTU都是1500字节。所以,要抓取大于60字节的包时,使用默认参数就会导致包数据丢失;
-S:用绝对而非相对数值列出TCP关联数;
-t:在输出的每一行不打印时间戳;
-tt:在输出的每一行显示未经格式化的时间戳记;
-T<数据包类型>:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议);
-v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv:输出详细的报文信息;
-x/-xx/-X/-XX:以十六进制显示包内容,几个选项只有细微的差别,详见man手册;
-w<数据包文件>:直接将包写入文件中,并不分析和打印出来;
expression:用于筛选的逻辑表达式

2、启动默认抓取命令:

tcpdump --将会抓取主机的相关的所有的数据包信息

3、抓取特定网卡口的流量:

一般在生产环境中,一台服务器为了业务的需要,需要设置多个网卡口,这样我们在抓取书包的时候,
需要制定我们想要的数据包的网卡口。
tcpdump -i 网卡扣的名称

4、抓取指定端口的数据包:

tcpdump -i ens33 port 80 ---抓取访问本地主机的80端口的数据包

5、根据协议进行抓取数据包

tcpdump -i ens33 icmp ---抓取ping主机的icmp数据包。
tcpdump udp port 2323 --抓取udp数据包。

6、抓取指定主机的数据包

tcpdump -vv host 192.168.19.129 -i ens33

7、逻辑关系参数

and --逻辑与;
or --逻辑或,
! --逻辑非

7.1 逻辑与:

抓取经过网卡口ens33,并且过滤主机是192.168.19.2的icmp数据包
tcpdump -i ens33 -v ip host 192.168.19.136 and ! 192.168.19.2 and icmp

7.2 逻辑或

抓取192,168.19.1或者136主机ping主机129的数据包
tcpdump -i ens33 -vv ip host 192.168.19.129 and (192.168.19.1 or 192.168.19.136 ) and icmp

8、抓取经过某个主机网卡口的所有流量

tcpdump -i ens33 -vv host 192.168.19.129
抓取经过主机ens33网卡口的icmp的数据包信息。
tcpdump -i ens33 -vv host 192.168.19.129 and icmp

9、抓取某个主机发出的所有的流量

抓取主机192.168.19.129主机发出的icmp数据包
tcpdump -i ens33 src host 192.168.19.129 and icmp

10、抓取某个主机接受的所有的流量

抓取主机192.168.19.129主机几首的icmp数据包
tcpdump -i ens33 src host 192.168.19.129 and icmp

11、抓取所有经过ens33,网络是 192.168上的数据包

tcpdump -i ens33 net 192.168 and icmp
抓取所有经过ens33,网络源地址为192.168的数据包。
tcpdump -i en0 src net 192.168
抓取所有经过ens33,网络目的地址为192.168的数据包。
tcpdump -i en0 dst net 192.168
抓取所有经过ens33,网络地址为192.168.1的数据包。
tcpdump -i en0 net 192.168.1
抓取所有经过ens33,网络地址为1.0的C端。
tcpdump -i en0 net 192.168.1.0/24

12、1、首先抓取与192.168.19.129主机之间的通信,并保存在本地,文件名为1.pcap。

13、使用wireshark将1.pacp文件导入,这样我们就可以进行本地查看

原文地址:https://www.cnblogs.com/0x7e/p/13935527.html