目錄
- 一、tcpdump介紹
- 二、安裝&用法說明
- 1)安裝
- 2)用法說明
- 三、tcpdump示例
一、tcpdump介紹
tcpdump 是一個Linux的網路抓包工具,它允許用戶攔截和顯示發送或收到過網路連接到該計算機的TCP/IP和其他資料包,tcpdump 適用于大多數的類Unix系統作業系統(如linux,BSD等),
二、安裝&用法說明
1)安裝
$ yum -y install tcpdump
2)用法說明
tcpdump采用命令列方式,它的命令格式為
tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ] [ -w file ] [ expression ]

抓包選項:
- -c:指定要抓取的包數量,注意,是最終要獲取這么多個包,例如,指定"-c 10"將獲取10個包,但可能已經處理了100個包,只不過只有10個包是滿足條件的包,
- -i interface:指定tcpdump需要監聽的介面,若未指定該選項,將從系統介面串列中搜尋編號最小的已配置好的介面(不包括loopback介面,要抓取loopback介面使用tcpdump -i lo),一旦找到第一個符合條件的介面,搜尋馬上結束,可以使用'any'關鍵字表示所有網路介面,
- -n:對地址以數字方式顯式,否則顯式為主機名,也就是說-n選項不做主機名決議,
- -nn:除了-n的作用外,還把埠顯示為數值,否則顯示埠服務名,
- -N:不列印出host的域名部分,例如tcpdump將會列印'nic'而不是'nic.ddn.mil',
- -P:指定要抓取的包是流入還是流出的包,可以給定的值為"in"、"out"和"inout",默認為"inout",
- -s len:設定tcpdump的資料包抓取長度為len,如果不設定默認將會是65535位元組,對于要抓取的資料包較大時,長度設定不夠可能會產生包截斷,若出現包截斷,輸出行中會出現"[|proto]"的標志(proto實際會顯示為協議名),但是抓取len越長,包的處理時間越長,并且會減少tcpdump可快取的資料包的數量,從而會導致資料包的丟失,所以在能抓取我們想要的包的前提下,抓取長度越小越好,-s0:防止包截斷,
輸出選項:
- -e:輸出的每行中都將包括資料鏈路層頭部資訊,例如源MAC和目標MAC,
- -q:快速列印輸出,即列印很少的協議相關資訊,從而輸出行都比較簡短,
- -X:輸出包的頭部資料,會以16進制和ASCII兩種方式同時輸出,
- -A :列印資料報文的 ASCII 值
- -XX:輸出包的頭部資料,會以16進制和ASCII兩種方式同時輸出,更詳細,
- -v:當分析和列印的時候,產生詳細的輸出,
- -vv:產生比-v更詳細的輸出,
- -vvv:產生比-vv更詳細的輸出,
其他功能性選項:
- -D:列出可用于抓包的介面,將會列出介面的數值編號和介面名,它們都可以用于"-i"后,
- -F:從檔案中讀取抓包的運算式,若使用該選項,則命令列中給定的其他運算式都將失效,
- -w:將抓包資料輸出到檔案中而不是標準輸出,可以同時配合"-G time"選項使得輸出檔案每time秒就自動切換到另一個檔案,可通過"-r"選項載入這些檔案以進行分析和列印,
- -r:從給定的資料包檔案中讀取資料,使用"-"表示從標準輸入中讀取,
三種修飾符:
- type:指定ID的型別,
可以給定的值有host/net/port/portrange,例如"host foo","net 128.3","port 20","portrange 6000-6008",默認的type為host,
- dir:指定ID的方向,
可以給定的值包括src/dst/src or dst/src and dst,默認為src or dst,例如,"src foo"表示源主機為foo的資料包,"dst net 128.3"表示目標網路為128.3的資料包,"src or dst port 22"表示源或目的埠為22的資料包,
- proto:通過給定協議限定匹配的資料包型別,
常用的協議有tcp/udp/arp/ip/ether/icmp等,若未給定協議型別,則匹配所有可能的型別,例如"tcp port 21","udp portrange 7000-7009",
三、tcpdump示例
3.1、默認啟動,不帶引數
$ tcpdump
默認情況下,直接啟動tcpdump將監視第一個網路介面(非lo口)上所有流通的資料包,這樣抓取的結果會非常多,滾動非常快,
3.2、tcpdump -D 命令列出可以抓包的網路介面
$ tcpdump -D

3.4、監視指定網路介面的資料包
$ tcpdump -i ens33
如果不指定網卡,默認tcpdump只會監視第一個網路介面,如ens33,
3.5、對本機的udp 123埠進行監視(123為ntp的服務埠)
$ tcpdump udp port 123
3.6、監視指定網路的資料包,如本機與192.168網段通信的資料包,"-c 10"表示只抓取10個包
$ tcpdump -c 10 net 192.168
3.7、抓取ping包
$ tcpdump -c 5 -nn -i ens33 icmp

如果明確要抓取主機為192.168.182.130對本機的ping,則使用and運算子,
$ tcpdump -c 5 -nn -i ens33 icmp and src 192.168.182.130

注意不能直接寫icmp src 192.168.182.130,因為icmp協議不支持直接應用host這個type,
3.9、抓取到本機22埠包
$ tcpdump -c 10 -nn -i bond0 tcp dst port 22
4.0、決議包資料
$ tcpdump -c 2 -q -XX -vvv -nn -i bond0 tcp dst port 22

4.1、引數只抓取和特定主機相關的資料包
$ tcpdump -i any -c5 -nn host 192.168.182.152
$ tcpdump -i any -c5 -nn host 192.168.182.130

4.2、保存抓包資料
tcpdump 提供了保存抓包資料的功能以便后續分析資料包,也可以利用wireshark等圖形化工具進行分析,
1)使用 -w 選項來保存資料包而不是在螢屏上顯示出抓取的資料包
$ tcpdump -i any -c10 -nn -w webserver.pcap port 22

該命令將抓取的資料包保存到檔案 webserver.pcap,后綴名 pcap 表示檔案是抓取的資料包格式,
2)tcpdump 將資料包保存在二進制檔案中,所以不能簡單的用文本編輯器去打開它,使用 -r 選項引數來閱讀該檔案中的報文內容
$ tcpdump -nn -r webserver.pcap

【溫馨提示】一般
tcpdump抓的網路包會使用wireshark圖形化工具來分析,使用wireshark分析網路包更加清晰方便,關于wireshark的使用,可以參考我之前的文章:wireshark網路抓包詳解,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/489340.html
標籤:其他
