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


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