linux工作利器之二,網絡分析工具tcpdump

簡單介紹

tcpdump是一個能夠對網絡上的數據包進行收集的網絡分析工具,根據用戶自定義條件截取數據包,具備靈活的策略,是系統管理員分析網絡、排查問題的利器。tcpdump提供了源代碼,有公開的接口,因此具備很強的可擴展性,它支持針對網絡層、協議、主機、網絡或端口的過濾,並且支持and、or、not等邏輯語句。普通用戶無法執行tcpdump命令,只有具備root權限才能執行。

參數介紹

默認情況下啓動tcpdump,將監聽在第一個網絡接口上所有流過的數據包
linux工作利器之二,網絡分析工具tcpdump

tcpdump支持很多參數,往往網絡中流量很大,如果不加分辨收集所有的數據包,數據量太大,不容易發現需要的數據包,使用參數定義的過濾規則收集特定的數據包,縮小目標,便於更好的分析網絡中存在的問題。

-i 指定網絡接口
-w 將結果輸出到文件中,通常文件以.pcap作爲後綴,可以結合wirkshark分析數據
-n 不把網絡地址換成名字(不進行域名解析,速度更快)
-nn 不進行端口名稱的轉換,直接以ip和端口顯示
-v 輸出一個稍微詳細的信息(例如在ip包中可以包括ttl和服務類型的信息)
-vv 輸出詳細的報文信息
-c 在收到指定的包的數目後,tcpdump就會停止,默認tcpdump需要crtl+c結束
-C 後接file_size,指定-w寫入文件的大小,如果超過了指定大小,則關閉當前文件,然後在打開一個新的文件, file_size 的單位是兆字節
-a 將網絡地址和廣播地址轉變成名字
-A 以ASCII格式打印出所有分組,並將鏈路層頭最小化,方便去收集web頁面內容
-d 將匹配信息包的代碼以人們能夠理解的彙編格式給出
-dd 將匹配信息包的代碼以c語言程序段的格式給出
-ddd 將匹配信息包的代碼以十進制的形式給出
-D 打印出系統中所有可以用tcpdump分析的網絡接口
-q 快速輸出,只輸出較少信息
-e 在輸出行打印出數據鏈路層的頭部信息
-f 將外部的Internet地址以數字的形式打印出來
-l 使標準輸出變爲緩衝行形式
-t 在輸出的每一行不打印時間戳
-tt 在每一行中輸出非格式化的時間戳
-ttt 輸出本行和前面一行之間的時間差
-F 從指定的文件中讀取表達式,忽略其它的表達式
-r 從指定的文件中讀取包(這些包一般通過-w選項產生)
-w 直接將包寫入文件中,並不分析和打印出來
-T 將監聽到的包直接解釋爲指定的類型的報文,常見的類型有rpc (遠程過程調用)和snmp(簡單網絡管理協議)

tcpdump表達式

格式:
tcpdump [option] 協議 + 傳輸方向 + 類型 + 具體值
這是一個正則表達式,滿足表達式的報文會被收集。
協議:主要包括ip、arp、rarp、tcp、udp、icmp、http,指定監聽包的協議內容,如果沒有指定,默認是監聽所有協議的數據包
傳輸方向:主要包括src、dst、dst or src、dst and src,指定傳輸方向,源地址或目標地址,如果沒有指定,默認是src or dst
類型:主要包括host、net、port、ip proto、protochain,指定收集的主機或網段,如果默認沒有指定,默認是host
其他關鍵字:gateway, broadcast,less,greate;三種邏輯運算符,取非運算 'not ' '! ', 與運算'and','&&',或運算 'or' ,'││'

使用實例

包含主機192.0.0.19的數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 5 host 192.0.0.19

linux工作利器之二,網絡分析工具tcpdump

包含192.0.0.0/24網段的數據包

[root@kafka ~]# tcpdump -i eth0 -c 1 net 192.0.0.0/24
[root@kafka ~]# tcpdump -i eth0 -c 1 net 192.0.0.0 mask 255.255.255.0

linux工作利器之二,網絡分析工具tcpdump

源ip是192.0.0.19的數據包和目標地址是192.0.0.19的數據包

[root@kafka ~]# tcpdump -i eth0  -c 4 src host 192.0.0.19
[root@kafka ~]# tcpdump -i eth0  -c 4 dst host 192.0.0.19

linux工作利器之二,網絡分析工具tcpdump

9092端口的數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 4 port 9092

linux工作利器之二,網絡分析工具tcpdump

ssh服務的數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 4 port ssh

linux工作利器之二,網絡分析工具tcpdump

源端口是9092的數據包,目標端口是9092的數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 src port 9092
[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 dst port 9092

linux工作利器之二,網絡分析工具tcpdump

tcp協議、udp協議、icmp協議的數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 tcp
[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ip proto '\tcp'
[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 udp
[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ip proto '\udp'
[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 icmp
[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ip proto '\icmp'

linux工作利器之二,網絡分析工具tcpdump

源ip是192.0.0.19且目標端口是9092的數據包,用and

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 src 192.0.0.19 and dst port 9092

linux工作利器之二,網絡分析工具tcpdump

源ip是192.0.0.19或目標端口是9092的數據包,用or

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 src 192.0.0.19 or dst port 9092

linux工作利器之二,網絡分析工具tcpdump

源ip是192.0.0.19且端口是9092,或源ip是192.0.0.20且目的端口不是80的數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 4 \(src host 192.0.0.19 and port 9092\) or \(src host 192.0.0.20 and not dst port 80\)

linux工作利器之二,網絡分析工具tcpdump

流經網卡eth0的1000個數據包保存在文件backup.cap中

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 1000 -w backup.cap

linux工作利器之二,網絡分析工具tcpdump

從文件backup.cap中讀取tcp協議的10個數據包

[root@kafka ~]# tcpdump -i eth0 -c 10 -r backup.cap tcp

linux工作利器之二,網絡分析工具tcpdump

數據包類型是多播且端口不是22且協議不是icmp的數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv ether multicast and not port 22 and not icmp

linux工作利器之二,網絡分析工具tcpdump

協議是ospf的數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv ip proto ospf

linux工作利器之二,網絡分析工具tcpdump

包長度大於50,小於100的數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 5 less 100 and greater 50

linux工作利器之二,網絡分析工具tcpdump

ip信息類型的數據包,ip信息類型協議可以是icmp、icmp6、igmp、igrp、pim、ah、esp、vrrp、udp、tcp

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ip proto '\tcp'

ipv6信息類型的數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ip6 proto '\tcp'

linux工作利器之二,網絡分析工具tcpdump

ether信息類型的數據包,ether信息類型協議可以是ip、ip6、arp、rarp、atalk、aarp、decnet、sca、lat、mopdl、moprc、iso、stp、ipx或netbeui

[root@kafka ~]# tcpdump -i eth0 -nnvv -c 3 ether proto '\ip'

linux工作利器之二,網絡分析工具tcpdump

以太網廣播、多波數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv ether broadcast
[root@kafka ~]# tcpdump -i eth0 -nnvv ether multicast

linux工作利器之二,網絡分析工具tcpdump

ipv4廣播、多波數據包

[root@kafka ~]# tcpdump -i eth0 -nnvv ip broadcast
[root@kafka ~]# tcpdump -i eth0 -nnvv ip multicast

linux工作利器之二,網絡分析工具tcpdump

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