1. 程式人生 > 其它 >Linux命令之tcpdump

Linux命令之tcpdump

概述

  • tcpdump是一個用於擷取網路分組,並輸出分組內容的抓包工具,類似於window下的wireshark。
  • 是Linux系統下用於網路分析和問題排查的首選工具
  • 普通使用者不能執行,需要使用root許可權的使用者才可執行
  • 我們可以使用tcpdump對資料包進行抓取

原理

將網路中傳送的資料包的“頭”完全截獲下來提供分析,類似防火牆的包過濾。它支援針對網路層、協議、主機、網路或埠的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的資訊。

注意:不帶引數的tcpdump會收集網路中所有的資訊包頭,資料量巨大,必須過濾。

選項

-A 以ASCII格式打印出所有分組,並將鏈路層的頭最小化。 
-c 在收到指定的數量的分組後,tcpdump就會停止。 
-C 在將一個原始分組寫入檔案之前,檢查檔案當前的大小是否超過了引數file_size 中指定的大小。如果超過了指定大小,則關閉當前檔案,然後在開啟一個新的檔案。引數 file_size 的單位是兆位元組(是1,000,000位元組,而不是1,048,576位元組)。 
-d 將匹配資訊包的程式碼以人們能夠理解的彙編格式給出。 
-dd 將匹配資訊包的程式碼以c語言程式段的格式給出。 
-ddd 將匹配資訊包的程式碼以十進位制的形式給出。 
-D 打印出系統中所有可以用tcpdump截包的網路介面。 
-e 在輸出行打印出資料鏈路層的頭部資訊。 
-E 用spi@ipaddr algo:secret解密那些以addr作為地址,並且包含了安全引數索引值spi的IPsec ESP分組。 
-f 將外部的Internet地址以數字的形式打印出來。 
-F 從指定的檔案中讀取表示式,忽略命令列中給出的表示式。 
-i 指定監聽的網路介面。 
-l 使標準輸出變為緩衝行形式,可以把資料匯出到檔案。 
-L 列出網路介面的已知資料鏈路。 
-m 從檔案module中匯入SMI MIB模組定義。該引數可以被使用多次,以匯入多個MIB模組。 
-M 如果tcp報文中存在TCP-MD5選項,則需要用secret作為共享的驗證碼用於驗證TCP-MD5選選項摘要(詳情可參考RFC 2385)。 
-b 在資料-鏈路層上選擇協議,包括ip、arp、rarp、ipx都是這一層的。
-n 不把網路地址轉換成名字。
-nn 不進行埠名稱的轉換。
-N 不輸出主機名中的域名部分。例如,‘nic.ddn.mil‘只輸出’nic‘。 
-t 在輸出的每一行不列印時間戳。 
-O 不執行分組分組匹配(packet-matching)程式碼優化程式。 
-P 不將網路介面設定成混雜模式。 
-q 快速輸出。只輸出較少的協議資訊。 
-r 從指定的檔案中讀取包(這些包一般通過-w選項產生)。 
-S 將tcp的序列號以絕對值形式輸出,而不是相對值。 
-s 從每個分組中讀取最開始的snaplen個位元組,而不是預設的68個位元組。 
-T 將監聽到的包直接解釋為指定的型別的報文,常見的型別有rpc遠端過程呼叫)和snmp(簡單網路管理協議;)。 
-t 不在每一行中輸出時間戳。 
-tt 在每一行中輸出非格式化的時間戳。 
-ttt 輸出本行和前面一行之間的時間差。 
-tttt 在每一行中輸出由date處理的預設格式的時間戳。 
-u 輸出未解碼的NFS控制代碼。 
-v 輸出一個稍微詳細的資訊,例如在ip包中可以包括ttl和服務型別的資訊。 
-vv 輸出詳細的報文資訊。 
-w 直接將分組寫入檔案中,而不是不分析並打印出來。

相關命令

  • rpm -qi tcpdump:查詢是否安裝了tcpdump
  • tcpdump:每一行會顯示抓包的內容,並且預設監聽eth0網絡卡
  • tcpdump -c 10 :只抓取10個數據包的內容。c,count
  • tcpdump -c 10 -w tcpdump.log:將抓取的資料包內容寫入到 tcpdump.log 檔案中。w,write。 注意:其生成的檔案可以在任意的抓包軟體中進行讀取,但不能直接使用cat或者more等檢視
  • tcpdump -r tcpdump.log:使用上面"-w"將資料包寫入到檔案中,可使用此命令檢視。r,read
  • tcpdump -D :顯示當前作業系統有哪些網絡卡
  • tcpdump -i eth0:監聽eth0網絡卡,並抓取上面的流量
  • tcpdump -v:顯示更詳細的抓包資訊。 如果還需要更詳細就加多個v。比如:tcpdump -vv
  • tcpdump -n:抓包資訊不顯示域名,以IP的形式顯示
  • tcpdump udp:只抓取udp協議的內容
  • tcpdump src 192.168.1.1:只抓取資料包源地址為 192.168.1.1 的請求包
  • tcpdump dst 192.168.1.105:只抓取資料包目標地址為192.168.1.105的請求包
  • 引數的邏輯組合
    • 邏輯與運算
      • 抓取tcp協議、來自於某個IP、並且埠為1000:tcpdump tcp and src 192.168.1.1 and port 80
    • 邏輯或運算
      • 抓取來自 IP為192.168.0.1 或者 192.168.0.2的資料包:tcpdump src 192.168.0.1 or 192.168.0.2
    • 邏輯非運算
      • 抓取排除使用80埠的資料包:tcpdump not port 80
    • 三者可以隨意組合
      • 抓取是tcp協議,並且源IP為:192.168.1.1,但埠不是80的資料包:tcpdump tcp and src 192.168.1.1 and not port 80