日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux网络抓包分析工具(tcpdump、wireshark)

發布時間:2023/12/9 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux网络抓包分析工具(tcpdump、wireshark) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

?一、tcpdump

1、作用

2、命令選項

3、tcpdump表達式

4、tcpdump捕獲方式

5、常用的過濾條件

二、wireshark

1、什么是wireshark

2、安裝wireshark

3、tshark 命令

4、圖形化界面?

三、Tcpdump和wireshark合用

總結


一、tcpdump

1、作用

?行tcpdump指令可列出經過指定網絡界面的數據包文件頭,可以將網絡中傳送的數據包的“頭”完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,并提供and、or、not等邏輯語句來幫助你摘取有用信息

由于它需要將網絡接口設置為混雜模式,普通用戶不能正常執行,但具備root權限的用戶可以直接執行它來獲取網絡上的信息

其他抓包工具

wireshark,具有圖形化和命令行兩種版本,可以對tcpdump抓的包進行分析,其主要功能就是分析數據包。

ngrep,它將抓到的包數據以文本形式直接顯示出來,適用于包數據包含文本的抓包分析(如HTTP、MySQL)

2、命令選項

tcpdump [選項] [協議] [數據流方向] [范圍]

-a #將網絡地址和廣播地址轉變成名字
-A #以ASCII格式打印出所有分組,并將鏈路層的頭最小化
-b #數據鏈路層上選擇協議,包括ip/arp/rarp/ipx都在這一層
-c #指定收取數據包的次數,即在收到指定數量的數據包后退出tcpdump
-d #將匹配信息包的代碼以人們能夠理解的匯編格式輸出
-dd ?#將匹配信息包的代碼以c語言程序段的格式輸出
-ddd #將匹配信息包的代碼以十進制的形式輸出
-D #打印系統中所有可以監控的網絡接口
-e #在輸出行打印出數據鏈路層的頭部信息
-f #將外部的Internet地址以數字的形式打印出來,即不顯示主機名
-F #從指定的文件中讀取表達式,忽略其他的表達式
-i #指定監聽網絡接口
-l #使標準輸出變為緩沖形式,可以數據導出到文件
-L #列出網絡接口已知的數據鏈路
-n #不把網絡地址轉換為名字
-N 不輸出主機名中的域名部分,例如www.baidu.com只輸出www
-nn #不進行端口名稱的轉換
-P #不將網絡接口設置為混雜模式
-q #快速輸出,即只輸出較少的協議信息
-r #從指定的文件中讀取數據,一般是-w保存的文件
-w #將捕獲到的信息保存到文件中,且不分析和打印在屏幕
-s #從每個組中讀取在開始的snaplen個字節,而不是默認的68個字節
-S #將tcp的序列號以絕對值形式輸出,而不是相對值
-T #將監聽到的包直接解析為指定的類型的報文,常見的類型有rpc(遠程過程調用)和snmp(簡單網絡管理協議)
-t #在輸出的每一行不打印時間戳
-tt #在每一行中輸出非格式化的時間戳
-ttt #輸出本行和前面以后之間的時間差
-tttt #在每一行中輸出data處理的默認格式的時間戳
-u #輸出未解碼的NFS句柄
-v #輸出稍微詳細的信息,例如在ip包中可以包括ttl和服務類型的信息
-vv#輸出相信的保報文信息

3、tcpdump表達式

關于數據類型的關鍵字

包括host、port、net:

? ? ? ? host 192.168.100.1表示一臺主機,net 192.168.100.0表示一個網絡網段,port 80 指明端口號為80,在這里如果沒有指明數據類型,那么默認就是host

數據傳輸方向的關鍵字

包括src、dst、dst or src、dst and src,這些關鍵字指明了傳輸的方向,比如src 192.168.100.1說明數據包源地址是192.168.100.1。dst net 192.168.100.0指明目的網絡地址是192.168.100.0,默認是監控主機對主機的src和dst,即默認監聽本機和目標主機的所有數據
協議關鍵字

包括 ip、arp、rarp、udp

其他關鍵字

運算類型:or、and、not、!

輔助功能型:gateway、less、broadcast、greater

4、tcpdump捕獲方式

#tcpdump [協議類型] [源或目標] [主機名稱或IP] [or/and/not/!條件組合] [源或目標] [主機名或IP] [or/and/not/!條件組合] [端口] [端口號] …… [or/and/not/!條件組合] [條件]

tcpdump ?ip dst 192.168.10.1 and src 192.168.10.10 and port 80 and host ?! www.baidu.com

?tcpdump
#默認監聽在第一塊網卡,監聽所有經過此網卡的數據包

tcpdump??-i??ens33
#監聽指定網卡ens33的所有傳輸數據包

tcpdump -i ens33 host 192.168.100.10
#捕獲主機192.168.100.10 經過網卡ens33的所有數據包(也可以是主機名,但要求可以解析出IP地址)

第一列:報文的時間
第二列:網絡協議 IP
第三列:發送方的ip地址、端口號、域名,上圖顯示的是本機的域名,可通過/etc/hosts查看本機域名
第四列:箭頭 >, 表示數據流向
第五列:接收方的ip地址、端口號、域名,
第六列:冒號
第七列:數據包內容,報文頭的摘要信息,有ttl、報文類型、標識值、序列、包的大小等信息

tcpdump host 192.168.130.151 and ?192.168.130.152or192.168.130.153192.168.130.152or192.168.130.153
#捕獲主機 192.168.56.209 和主機192.168.56.210或192.168.56.211的所有通信數據包

tcpdump ip host node9 and not www.baidu.com

#捕獲主機node9與其他主機之間(不包括www.baidu.com)通信的ip數據包

tcpdump ip host node9 and ! www.baidu.com

#捕獲node9與其他所有主機的通信數據包(不包括www.baidu.com)

tcpdump -i ens33 src node10

#捕獲源主機node10發送的所有的經過ens33網卡的所有數據包

tcpdump -i ens33 dst host www.baidu.com

#捕獲所有發送到主機www.baidu.com的數據包

監聽主機192.168.56.1和192.168.56.210之間ip協議的80端口的且排除www.baidu.com通信的所有數據包:
tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host ! baidu.com

#也可以寫成tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host not www.baidu.com,即not和!都是相同的取反的意思

tcpdump arp

#監控指定主機的通信數據包與1.9.1方式相同

tcpdump tcp port 22 and host 192.168.56.210

#捕獲主機192.168.56.210接收和發出的tcp協議的ssh的數據包

tcpdump udp port 53

#監聽本機udp的53端口的數據包,udp是dns協議的端口,這也是一個dns域名解析的完整過程

5、常用的過濾條件

tcpdump可以支持邏輯運算符

and:與運算,所有的條件都需要滿足,可用 “and”和“&&”表示
or:或運行,只要有一個條件滿足就可以,可用“or”和“|”表示
not:取反,即取反條件,可以用“not”和“!”表示

tcpdump icmp and src 192.168.100.10 -i ens33 -n

過濾icmp報文并且源IP是192.168.100.10

多條件格式
? ? 在使用多個過濾條件進行組合時,有可能需要用到括號,而括號在shell中是特殊符號,又需要使用引號將其包含。用括號的主要作用是邏輯運算符之間存在優先級,!>and > or,為例條件能夠精確所以需要對一些必要的組合括號括起來,而括號的意思相當于加減運算一樣,括起來的內容作為一個整體進行邏輯運算。

過濾源地址是192.168.100.1并且目的地址是192.168.20.20的數據包或者ARP協議的包

tcpdump src host 192.168.10.10 -i ens33 -n -c 5

過濾源IP地址是192.168.10.10的包

tcpdump dst host 192.168.10.10 -i ens33 -n -c 5

過濾目的IP地址是192.168.10.10的包

基于端口進行過濾
tcpdump port 22 -i ens33 -n -c 5
過濾端口號為22即ssh協議的

?tcpdump portrange 22-433 -i ens33 -n -c 8
過濾端口號22-433內的數據包

二、wireshark

1、什么是wireshark

Wireshark是一個網絡封包分析軟件。網絡封包分析軟件的功能是捕獲網絡數據包,并盡可能顯示出最為詳細的網絡封包資料。Wireshark使用WinPCAP作為接口,直接與網卡進行數據報文交換

2、安裝wireshark

Linux中有兩個版本的wireshark,一個是 wireshark,這個版本是無圖形化界面,基本命令是”tshark“。

一個是 wireshark-gnome(界面版本),這個版本只能安裝在支持GUI功能的Linux的版本中。

yum -y install wireshark // 安裝無圖形化版本
yum -y install wireshark-gnome // 安裝圖形化版本

?

?

:這里的通過yum進行安裝,需要提前做好epel源(即紅帽操作系統額外拓展包),裝上了 EPEL之后,就相當于添加了一個第三方源。官方的rpm repository提供的rpm包也不夠豐富,很多時候需要自己編譯那太辛苦了,而EPEL可以解決官方yum源數據包不夠豐富的情況。

安裝epel源
?yum -y install epel-release

3、tshark 命令

tshark是wireshark的命令行工具
? ? tshark 選項 參數
? ? -i:指定捕獲的網卡接口,不設置默認第一個非環回口接口
? ? -D:顯示所有可用的網絡接口列表
? ? -f:指定條件表達式,與tcpdump相同
? ? -s:設置每個抓包的大小,默認65535,多于這個大小的數據將不會不會被截取。
? ? -c:捕獲指定數量的數據包后退出
? ? -w:后接文件名,將抓包的結果輸出到.pcap文件中,可以借助其他網絡分析工具進行分? ? ? ? ? ? ? 析,也可以使用重定向>把解碼后的輸出結果以txt的格式輸出。
? ? -p:設置網絡接口以非混合模式工作,即只關心和本機有關的流量
? ? -r:后接文件路徑,用于分析保持好的網絡包文件,比如tcpdump的輸出文件
? ? -n:禁止所有地址名字解析,即禁止域名解析,默認是允許所有
? ?-N:指定對某一層的地址名字解析,如果-n和-N同時存在,則-n將被忽略,如果兩者都不寫,則會默認打開所有地址名字解析
? ? ? ? ?m:代表數據鏈路層
? ? ? ? ?n:代表網絡層
? ? ? ? ?t:代表傳輸層
? ? -V:設置將解碼結果的細節輸出,否則解碼結果僅顯示一個packet一行的summary
? ? -t:設置結果的時間格式
? ? ? ? ?ad:表示帶日期的絕對時間
? ? ? ? ?a:表示不帶日期的絕對時間
? ? ? ? ?r:表示從第一個包到現在的相對時間
? ? ? ? ?d:表示兩個相鄰包之間的增量時間

tshark -f " icmp " -i ens33 -V -c 1

過濾icmp報文,并展開詳細信息

?tshark -f " arp " -i ens33
過濾arp報文

4、圖形化界面?

?

三、Tcpdump和wireshark合用

?Tcpdump解析報文信息沒有wireshark詳細,所以可以通過Tcpdump捕獲數據并輸出,再通過wireshark進行解析,輸出文件格式為.pcap? 或者其他

?在虛擬機上通過wireshark 讀取

使用ip.addr == [ip地址號]可以過濾掉無關ip

??圖形讀取

用wireshark直接打開查看?

總結

tcpdump和wireshark兩種單以抓包的功能來看,是相似的,兩者的命令行的選項也是有相同,但是tcpdump對數據包分析的能力不是很好,同時目前很多Linux內置安裝了tcpdump這個工具,所以我們可以通過tcpdump把數據包抓出并存放到我們自定義的文件(.pcap)中,再通過把文件取出用wireshark進行分析排障

總結

以上是生活随笔為你收集整理的Linux网络抓包分析工具(tcpdump、wireshark)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。