tcpdump使用介绍

tcpdump

    tcpdump可以将网络中传输的数据包捕获下来提供分析。它支持针对主机、网络、协议或端口的过滤,并提供and、or和not等逻辑语句来去掉无用的信息。


语法

    tcpdump [OPTIONS] [expression]


常用OPTIONS

    -c count:指定要捕获数据包的数量。

    -D:显示可捕获数据包的接口列表。列表会显示一个数字和接口名,可用于-i项选指定要捕获数据包的接口。

    -F file:使用文件作为筛选器表达式的输入。在命令行上给出的附加表达式将被忽略。

    -i interface:指定要捕获数据包的接口。

    -n:不要将主机地址转换为名称。这可以用来避免DNS查找。

    -nn:在-n的基础上,也不要将协议和端口号等转换为名称。

    -#:在行首显示数据包编号。

    -Q direction:选择捕获数据包的方向。值为in、out和inout。并非所有平台都可用。

    -q:快速输出。显示较少的协议信息,以便缩短输出行。

    -r file:从文件中读取数据包。如file为-,则使用标准输入。

    -v:生成详细的数据包信息。使用-w选项写入文件时,每隔10秒报告捕获的数据包数。

    -V file:从文件中读取文件名列表。如file为-,则使用标准输入。

    -w file:将原始数据包定入文件,而不是解析并显示出来,通常使用.cap为扩展名。以后可以使用-r选项显示它们。如file为-,则使用标准输出。


expression

    expression由一个或多个基元组成的过滤器表达式。基元通常由id(名称或数字)组成,前面有一个或多个限定符。


    有三种不同的限定符:

        type

            type限定符指定引用的是什么类型的id。如未指定type,则假定为host。


            常用type

                host:指定要过滤的主机,host可为ip或主机名。

                    例:host 192.168.1.1

                net:指定要过滤的网络,可只写网络号部分,net可为网络号或来自网络数据库(/etc/networks等)的名称。

                    例:net 192.168.1

                port:指定要过滤的端口,port可使用数字或/etc/services中的对应的名称。

                    例:port 22

                portrange:指定要过滤的端口范围。

                    例:protrange 20-22


        dir

            dir限定符指定id的特定传输方向,需要和type或proto一起使用。如未指定dir,则假定为src or dst。


            常用dir

                src:针对数据包的源信息进行过滤。

                    例:src 192.168.1.1

                dst:针对数据包的目标信息进行过滤。

                    例:dst net 192.168.1

                src or dst:针对数据包的源或目标信息进行过滤。

                    例:src or dst port 22

                src and dst:针对数据包的源和目标信息进行过滤。

                    例:src 192.168.1.1 and dst port 22


        proto

            proto限定符将匹配限制为特定协议。如未指定proto,则假定为所有协议。


            常用proto

                ether:对以太网帧中的协议进行过滤。常见协议有ip,arp,rarp,stp和ipx等,协议要用\进行转义。

                    例:ether proto \ip

                ip:对ip包中的协议进行过滤。常见协议有icmp,igrp,vrrp,udp和tcp等,协议要用\进行转义。

                    例:ip proto \icmp


            也可以直接指定过滤上述某个协议。

                例:tcpdump -i ens33 icmp

                    tcpdump -i ens33 tcp


    通过使用单词and、or和not组合基元来构建更复杂的过滤器。如:

        host foo and not port ftp and not port ftp-data

        表示捕获源或目标主机为foo的所有数据包,但不包含源或目标端口为ftp和ftp-dat的数据包。


    使用基元组合时,可以省略相同的限定符列表。例:

        tcp dst port ftp or ftp-data or domain

        tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain

        上面两个表达式意义完全相同。表示捕获tcp协议目标端口为ftp或ftp-data或domain的所有数据包。


示例

    捕获10个经过网卡接口ens33的所有数据包,并且显示为IP和端口,而不是主机名和协议。

        tcpdump -i ens33 -c 10 -nn


    捕获经过网卡接口ens33,源地址为192.168.1.1,端口范围1-1000的所有数据包。

        tcpdump -i ens33 src host 192.168.1.1 and portrange 1-1000


    捕获经过网卡接口ens33,目标网络为192.168.1.0,TCP端口为22的所有数据包。

        tcpdump -i ens33 dst net 192.168.1 and tcp port 22


    捕获经过网卡接口ens33的所有ARP数据包。

        tcpdump -i ens33 arp


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章