Tcpdump介紹
Linux環境下的嗅探器tcpdump是一個多用途的網絡通信監測器,可捕獲和顯示報文及其內容。它可用來作爲協議分析器,在系統及網絡設備間提供一個最佳途徑來探查通信和(或)連通性問題。大多數時候,網絡疑難問題集中在網絡配置問題以及診斷硬件相關故障。然而,用戶將常常面對協議相關問題並且被迫鑽研特定協議的機制來解決問題。使用tcpdump,被檢查的報文將用長格式或短格式(根據使用的命令行選項)顯示其信息。tcpdump有一個非常強有力的過濾機制,可用來查找與指定字符串或規則相匹配的報文。
tcpdump提供兩種主要的捕獲模式:雜湊和非雜湊。在雜湊模式下,捕獲每個在網絡上傳遞的報文,不管該報文是否發送到執行tcpdump 的系統。tcpdump工具提供了許多命令行選項來選擇捕獲模式、控制輸出、指定過濾規則以及指定其他操作特性。這些選項根據它們的功能被分組並且包括以下種類:操作模式、顯示選項、報文過濾選項。
Tcpdump的使用
centos下安裝Tcpdump
yum install -y tcpdump*
常用的過濾器設置方法:
地址過濾:
host 192.168.98.169、src 192.168.98.169 # 過濾主機或源地址
dst 192.168.98.169、net 111.1.1.0/24 # 過濾目的地址
src net 192.168.98.0/24、dst net 192.168.98.0/24 #過濾網段
協議過濾:udp 、tcp、icmp、esp、not arp等。
端口過濾:port 端口,例如:port 80
過濾關鍵字和值之間以空格分隔;各個條件之間用and、or邏輯符連接;支持not關鍵字.例如:
1、tcpdump –i any src 192.168.98.169 or dst 111.1.1.108 and udp and port 2010
2、tcpdump –i any tcp and not port 21
過濾選項
-i 指定接口
例:-i eth0、-i ipsec0 、-i vlan001
-n 不把主機的網絡地址轉換成名字。
-e 顯示MAC地址。
tcpdump -i any -e -n -c 10
-t 不顯示時間信息。
tcpdump -i any -t -n -c 10
-tt 顯示沒有格式化的時間信息。
tcpdump -i any -tt -n -c 10
-c 收到指定的數據包數目後,就停止顯示
例:-c 10 收到10個包後停止。
tcpdump -i any -c 10
-s 顯示信息長度設置
例:-s 30
tcpdump -i any -s 30 -c 10
-q 快速輸出,僅列出少數的傳輸協議信息。
tcpdump -i any -q -c 10
-v 詳細顯示指令執行過程,使用該選項可以看到數據的ttl、ID、長度、offset、flag、協議等信息。
tcpdump -i any -v host 192.168.98.1 -c 10 and icmp
-vv 更詳細顯示指令執行過程。
tcpdump -i any -vv host 192.168.98.1 -c 10
-x 用十六進制字碼列出數據包資料。
tcpdump -i any -x -c 5
-d 把編譯過的數據包編碼轉換成可閱讀的格式,並傾倒到標準輸出。
-dd 把編譯過的數據包編碼轉換成C語言的格式,並傾倒到標準輸出。
-ddd 把編譯過的數據包編碼轉換成十進制數字的格式,並傾倒到標準輸出。
-S 用絕對而非相對數值列出TCP關聯數。
tcpdump -i any -S tcp -c 5
-w<數據包文件> 把數據包數據寫入指定的文件。
-r 從指定的文件中讀取包(這些包一般通過-w選項產生)。
tcpdump -i any -c 10 -w tcpdump.pcap
tcpdump -i any -c 10 -r tcpdump.pcap
其餘常用選項
-T<數據包類型> 強制將表達方式所指定的數據包轉譯成設置的數據包類型
-f 用數字顯示網際網絡地址。
-F<表達文件> 指定內含表達方式的文件
-l 使用標準輸出列的緩衝區
-N 不列出域名
-O 不將數據包編碼最佳化
-p 不讓網絡界面進入混雜模式:只抓發給給機的數據包
注意
各個選項之間用空格分隔,例如:
tcpdump -i any -c 20 -t -s 200 -n
選項和過濾條件組合如下面的例子:
tcpdump -i any -c 20 -t -s 200 -n host 111.1.1.108 and tcp