Tcpdump的使用

    

   Tcpdump是一個命令行方式的網絡流量監測工具。它誕生的時間較早,是許多圖形化嗅探器的雛形
顧名思義,tcpdump可以將網絡中傳送的數據包的“頭”完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。 

㈠ Tcpdump
在網絡性能急劇下降的時候,可以通過 Tcpdump 來分析原因,找出造成網絡阻塞的根源,Tcpdump 能截獲網卡上收到的數據包,並能夠協助網絡管理員對其中的內容進行相應的分析。
對於運維人員、瞭解如何使用 Tcpdump 來捕獲感興趣的數據包是一項必須掌握的基本功。

⑴ Tcpdump 安裝
GNU/Linux 發行版缺省都會安裝、如果沒有可到:http://www.tcpdump.org 下載。

⑵ Tcpdump 命令行選項
Tcpdump是一個命令行方式的網絡嗅探器、如果不進行過濾,過多數量的包會使運維人員很難理清頭緒。
Tcpdump 常用命令行選項:
-a  : 將網絡地址和廣播地址轉變成容易識別的名字
-d  : 將已截獲的數據包的代碼以人容易理解的格式輸出
-dd :將已截獲的數據包的代碼以C程序的格式輸出
-ddd:將已截獲的數據包的代碼以十進制格式輸出
-e  :輸出數據鏈路層的頭部信息
-f  : 將internet地址以數字形式輸出
-l  : 將標準輸出變爲行緩衝方式
-n  :不將網絡地址轉換成易識別的主機名,只以數字形式列出主機地址(如IP地址),這樣可以避免DNS查詢
-t  : 不輸出時間戳
-v  : 輸出較詳細的信息,例如IP包中的TTL和服務類型信息
-vv :輸出詳盡的報文信息
-c  : 在捕獲指定個數的數據包後退出
-F  :從指定的文件中讀取過濾規則,忽略命令行中指定的其它過濾規則
-i  :  指定監聽的網絡接口
-r  : 從指定的文件中讀取數據包(該文件一般通過-w選項產生)
-w  :將截獲的數據包直接寫入指定的文件中,不對其進行分析和輸出
-T  : 將截獲的數據包直接解釋爲指定類型的報文

-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 直接將分組寫入文件中,而不是不分析並打印出來。


⑶ 例子
① 從指定的網絡接口截獲5個 ARP 數據包,並且不將網絡地址轉換成主機名
[plain] view plaincopy
[root@Rocky ~]# tcpdump arp -i eth0 -c 5 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
10:59:46.728425 arp who-has 192.168.1.1 tell 192.168.1.110
11:00:17.315719 arp who-has 192.168.1.1 tell 192.168.1.111
11:00:17.317911 arp who-has 192.168.1.1 tell 192.168.1.111
11:00:17.418271 arp who-has 192.168.1.1 tell 192.168.1.111
11:00:17.418980 arp who-has 192.168.1.1 tell 192.168.1.111
5 packets captured
5 packets received by filter
0 packets dropped by kernel
10:59:46:爲截獲數據包的時間
728425  :爲毫秒數
arp:表明該數據包時 ARP 請求
who-has 192.168.1.1 tell 192.168.1.110:表示 110 請求 1 的 MAC 地址
② 截獲主機“9.185.10.57”所有收到和發出的數據包
tcpdump host 9.185.10.57
③ 截獲在主機“9.185.10.57”和主機“9.185.10.58”或“9.185.10.59”之間傳遞的數據包
tcpdump host 9.185.10.57 and \>\(9.185.10.58 or 9.185.10.59\)
④ 截獲主機“9.185.10.57”和除主機“9.186.10.58”外所有其它主機之間通信的IP數據包
tcpdump ip host 9.185.10.57 and ! 9.185.10.58
⑤ 截獲主機“9.185.10.57”接收或發出的FTP(端口號爲21)數據包
tcpdump tcp port 21 host 9.185.10.57
⑥ 如果懷疑係統正受到(DoS)***,可通過截獲發往本機的所有ICMP包,確定目前是否有大量的ping流向服務器
  

 [root@BJ-60 ~]#tcpdump icmp -n -i eth1

 [root@BJ-132 ~]#ping 15.0.17.60
PING 15.0.17.60 (15.0.17.60) 56(84) bytes of data.
64 bytes from 15.0.17.60: icmp_seq=1 ttl=64 time=0.590 ms
64 bytes from 15.0.17.60: icmp_seq=2 ttl=64 time=0.682 ms

--- 15.0.17.60 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.590/0.636/0.682/0.046 ms


 [root@BJ-60 ~]#tcpdump icmp -n -i eth1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
14:40:37.692208 IP 15.6.10.132 > 15.0.17.60: ICMP echo request, id 63038, seq 1, length 64
14:40:37.692216 IP 15.0.17.60 > 15.6.10.132: ICMP echo reply, id 63038, seq 1, length 64
14:40:38.692644 IP 15.6.10.132 > 15.0.17.60: ICMP echo request, id 63038, seq 2, length 64
14:40:38.692655 IP 15.0.17.60 > 15.6.10.132: ICMP echo reply, id 63038, seq 2, length 64
當機器BJ-132(15.6.10.132 )ping BJ-60的時候,在60上能夠聽到icmp的包 ;ping操作停止,便不再收到報文。

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