Linux作為網絡伺服器,特别是作為路由器和網關時,資料的采集和分析是不可少的。
TcpDump是Linux中強大的網絡資料采集分析工具之一。
TcpDump可以将網絡中傳送的資料包完全截獲下來提供分析。它支援針對網絡層、協定、主機、網絡或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的資訊。
常用選項
常用選項 | 具體含義 |
-a | 将網絡位址和廣播位址轉變成名字 |
-d | 将比對資訊包的代碼以人們能夠了解的彙編格式給出 |
-dd | 将比對資訊包的代碼以c語言程式段的格式給出 |
-ddd | 将比對資訊包的代碼以十進制的形式給出 |
-e | 在輸出行列印出資料鍊路層的頭部資訊 |
-f | 将外部的Internet位址以數字的形式列印出來 |
-l | 使标準輸出變為緩沖行形式 |
-n | 不把網絡位址轉換成名字 |
-t | 在輸出的每一行不列印時間戳 |
-v | 輸出一個稍微詳細的資訊,例如在ip包中可以包括ttl和服務類型的資訊 |
-vv | 輸出詳細的封包資訊 |
-c | 在收到指定的包的數目後,tcpdump就會停止 |
-F | 從指定的檔案中讀取表達式,忽略其它的表達式 |
-i | 指定監聽的網絡接口 |
-r | 從指定的檔案中讀取包(這些包一般通過-w選項産生) |
-w | 直接将包寫入檔案中,并不分析和列印出來 |
-T | 将監聽到的包直接解釋為指定的類型的封包,常見的類型有rpc (遠端過程調用)和snmp(簡單網絡管理協定) |
常用的執行個體
1、預設啟動-tcpdump
普通情況下,直接啟動tcpdump将監視第一個網絡接口上所有流過的資料包:
2、監視指定網絡接口的資料包(-i)
舉例:tcpdump抓取所有通過eth0的包
指令:tcpdump -i eth0
注意:如果不指定網卡,預設tcpdump隻會監視第一個網絡接口,一般是eth0。
3、抓取指定數目的包(-c)
舉例:隻針對eth0網口抓5個包。
指令:tcpdump -c 5 -i eth0
4、将抓到的包寫入檔案中(-w)
舉例:将抓包記錄到一個指定的檔案中
指令:tcpdump -w tcpdump.pcap -i eth0
5、讀取tcpdump儲存檔案(-r)
對于儲存的抓封包件,可以使用-r選項進行讀取。
舉例:tcpdump -r tcpdump.pcap
6、抓包時不進行域名解析(-n)
預設情況下,tcpdump抓包結果中将進行域名解析,顯示的是域名位址,而不是IP位址,而使用-n選項,可以指定顯示IP位址。
7、增加抓包時間戳(-tttt)
使用-tttt選項,抓包結果将包含抓包日期。
舉例:tcpdump -n -tttt -i eth0
不顯示時間戳(-t)
8、指定抓包協定類型
tcpdump支援指定協定類型有:ip,ip6,arp,tcp,udp,wlan等。
tcp ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第一個參數的位置,用來過濾資料報的類型
舉例:抓取arp協定的包。
指令:tcpdump arp -i eth0
9、監視指定主機的資料包
例如:截獲所有210.27.48.1 的主機收到的和發出的所有的資料包
指令:tcpdump host 210.27.48.1
10、監視指定主機和端口的資料包
舉例:如果想要擷取主機210.27.48.1接收或發出的telnet包,使用如下指令