tcpdump工具使用
一.简单介绍
tcpdump命令是一款sniffer工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。
二.使用语法
语法:
tcpdump (选项参数)
抓包选项:
-c <数据包数目>: 指定要抓取的包数量
-i <网卡接口>: 指定tcpdump需要监听的接口,默认会抓取第一个网络接口;
-n: 对地址以数字方式显示,否则显示为主机名,也就是说-n选项不做主机名解析;
-nn: 除了-n的作用外,还把端口显示为数值,否则显示端口服务名;
-P: 指定要抓取的包是流入还是流出的包,可以给定的值为"in"、"out"和"inout",默认为"inout";
-s <数据包长度>: 设置tcpdump的数据包抓取长度为len,如果不设置默认为65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断。
输出选项:
-e: 输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。
-q: 快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。
-X: 输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-XX: 输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
-v: 当分析和打印的时候,产生详细的输出。
-vv: 产生比-v更详细的输出。
-vvv: 产生比-vv更详细的输出
其它功能选项:
-D: 列出可用于抓包的接口,将会列出接口的数值编号和接口名,它们都可以用于"-i"后。
-F: 从文件中读取抓包的表达式,若使用该选项,则命令行中给定的其它表达式都将失效。
-w: 将抓包数据输出到文件中而不是标准输出,这里可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。
-r: 从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。
三.具体使用示例
3.1 默认启动
tcpdump
默认情况下,直接启动tcpdump将监视第一个网络接口(非lo口)上所有流通的数据包,这样抓取的结果会非常多,滚动非常快。
3.2 监视指定网口的数据包
tcpdump -i em2
3.3 监视指定主机的数据包
例如这里监视所有进入或离开node1的数据包:
tcpdump -i em2 host node1
3.4 打印node1和node2或者node1和node3之间通信的数据包
tcmdump -i em2 host node1 and node2
tcmdump -i em2 host node1 and node3
3.5 打印node1和其它所有(不包含node4)主机之间通信的IP数据包
tcpdump -i em2 host node1 and not node4
3.6 截获主机node1发送的所有数据
tcpdump -i em2 src host node1
3.7 监视所有发送到主机node1的数据包
tcpdump -i em2 dst host node1
3.8 监视指定主机和端口的数据包
tcpdump -i em2 port 22 and host node1
3.9 监视指定网络的数据包
例如这里监视本机与192.168网段通信的数据包,"-c 10"表示只抓取10个包
tcpdump -i em2 -c 10 net 192.168
3.10 抓取ping包
tcpdump -c 5 -nn -i ens33
3.11 抓取到本机22端口的包
tcpdump -c 10 -nn -i em2 tcp dst port 22
3.12 解析包的数据
tcpdump -c 2 -q -XX -vvv -nn -i em2 tcp dst port 22