天天看點

你所不了解的Wireshark,當程式員肚裡的“蛔蟲”

Wireshark早已成為網絡分析領域裡的标配工具,随着Internet和TCP/IP網絡的極速發展,該工具受到了網絡分析專家及排障工程師的熱捧,同時獲得了研發工程師們的青睐,因為後一類人需要知道協定在網絡中的實際運作方式以及在運作時所碰到的問題。

文中包含了許多示例,所有示例均來源于真實案例。作者在處理這些案例時,所花費的時間雖長短不一,但所遵循的原則隻有一條,

那就是:按部就班,選擇正确的工具,當應用程式開發者肚裡的“蛔蟲” ,外加像某些人說的那樣,從網絡的角度思考問題。 隻要按此原則行事,兼之能活學活用Wireshark,定能将故障查個水落石出。本文的目的也正在于此,享受這一切吧。
你所不了解的Wireshark,當程式員肚裡的“蛔蟲”
你所不了解的Wireshark,當程式員肚裡的“蛔蟲”

Wireshark版本2基礎知識 

本文會介紹Wireshark所能行使的基本功能。在得出需要動用Wireshark協定分析器的結論之後,就應先行測試,将其安置在網絡中正确的位置,賦予其基本的配置,進行相應的優化,使其用起來更為順手。

設定Wireshark執行簡單的抓包任務雖然簡單、直覺,但該軟體有諸多選項可在某些特殊情況下使用,這樣的特殊情況包括:通過某條鍊路持續抓包的同時,希望将抓封包件分割為更小的檔案,以及在檢視抓封包件時,希望顯示參與連接配接的裝置名稱而不隻是裝置的IP位址等。本文将會向讀者傳授如何配置Wireshark來應對這些特殊情況。

在簡單介紹過Wireshark第2版之後,本文還會透露幾個如何安置及啟動該軟體的秘訣。

本文首先會介紹安置Wireshark的秘訣,涉及如何安置以及在何處安置Wireshark來執行抓包任務。應将Wireshark軟體安裝在伺服器上呢,還是應該将安裝它的主機連接配接在交換機的某個端口上呢?應将Wireshark置于防火牆身前還是身後呢?應置于路由器的WAN一側,還是LAN一側呢?到底應在上述的哪個位置才能正确采集到自己想要得到的資料呢?這些問題的答案、安置Wireshark的訣竅以及更多與Wireshark抓包有關的内容請見1.2節。

最近幾年,在虛拟機上抓包變得越來越重要,本文介紹的第二個秘訣就與此有關。用Wireshark監視虛拟機的實用安裝及配置秘訣請見1.3節,近年來,所使用的大多數伺服器都是虛拟機。

緊随而來的問題是如何監控駐留在雲内的虛拟機,這同樣十分重要。“在雲内抓取資料”一節會讨論幾個問題,其中包括如何解密在本端和雲端之間加密(大多數情況都會如此行事)的資料,如何使用雲内可用的分析工具,以及諸如Amazon AWS和Microsoft Azure之類的主要雲提供商會提供哪些工具。

啟動Wireshark軟體的秘訣以及配置、列印和導出資料的秘訣請見1.4節。該節會介紹如何操縱抓封包件,即如何儲存抓取的資料,是要完整儲存、部分儲存,還是隻準備儲存經過過濾的資料呢?我們不但能以各種檔案格式來導出抓取的資料,而且還能合并抓封包件(比如,将兩份Wireshark抓封包件合二為一,這兩份抓封包件中的資料分别從不同的路由器接口抓取)。

安置Wireshark 

了解了網絡故障的症狀,決定動用Wireshark查明故障原委之前,應确定Wireshark(程式或主機)的安裝或部署位置。為此,需要設法弄到一張精确的網絡拓撲圖(起碼要清楚受故障影響的那部分網絡的拓撲),并根據這張圖來安置Wireshark。

安置Wireshark的原理非常簡單。首先,應确定要抓取并監控由哪些(哪台)裝置發出的流量;其次,要把安裝了Wireshark的主機(或筆記本電腦)連接配接到受監控裝置所連交換機;最後,開啟交換機的端口監控功能(按Cisco的行話,該功能叫做端口鏡像或交換式端口分析器[Switched Port Analyzer,SPAN]),把受監控裝置發出的流量重定向給Wireshark主機。按此操作,便可抓取并檢視所有進出受監控裝置的流量了,這是最簡單的抓包場景。

可用Wireshark監控LAN端口、WAN端口、伺服器/路由器端口或接入網絡的任何其他裝置收發的流量。

以圖1.1所示的網絡為例,将Wireshark軟體安裝在左邊的筆記本電腦和受監控的伺服器S2上。

在這一最簡單的抓包場景中,按圖1.1所示方向配置端口鏡像,即可監控到進出伺服器S2的所有流量。當然,也可以直接将Wireshark安裝在伺服器S2上,如此行事,便能在伺服器S2上直接觀看進進出出的流量了。

你所不了解的Wireshark,當程式員肚裡的“蛔蟲”

圖1.1

某些廠商的交換機還支援以下流量監控特性。

監控整個VLAN的流量

:即監控整個VLAN(伺服器VLAN或語音VLAN)的所有流量。可借助該特性,在指定的某一具體VLAN内進行流量監控。

“多源歸一”的流量監控方式

:以圖1.1為例,借助該特性,可讓Wireshark主機同時監控到伺服器S1和S2的流量。

方向選擇

:可配置交換機,令其将受監控端口的入站流量、出站流量或同時将出入站流量鏡像(重定向)給監控端口。

1.2.1 準備工作    

使用Wireshark抓包之前,請先通路Wireshark官網,下載下傳并安裝最新版本的Wireshark。

Wireshark軟體的2.0版本以及後續更新釋出在Wireshark官網的Download頁面下。

每個Wireshark Windows安裝包都會自帶WinPcap驅動程式的最新穩定版本,WinPcap驅動程式為實時抓包所必不可缺。用于抓包的WinPcap驅動程式是UNIX libpcap庫的Windows版本。

在安裝過程中,會看到圖1.2所示的軟體包安裝視窗。

你所不了解的Wireshark,當程式員肚裡的“蛔蟲”

圖1.2

通常,在圖1.2所示的元件選擇視窗中,隻需選擇安裝所有元件。對于這樣的選擇,會安裝以下元件。

Wireshark元件:Wireshark軟體版本2。

TShark元件:一種指令行協定分析器。

Wireshark 1元件:老版Wireshark軟體,Wireshark版本1。選擇安裝該元件時,會同時安裝老的Wireshark版本1。就個人經驗而言,作者還是會在安裝Wireshark未來的幾個版本時,選擇安裝該元件。作者之是以會如此行事,是因為當Wireshark版本2無法正常抓包,或不知如何使用某些功能時,總是有順手的老版Wireshark可用。

Plugins & Extensions(插件及擴充功能)元件

,由以下子產品構成。

Dissector Plugins:包含某些擴充的解析(dissection)功能的插件。

Tree Statistics Plugins:擴充的統計資訊。

MATE(Meta-Analysis and Tracing Engine):可供使用者配置的顯示過濾引擎的擴充功能。

SNMP MIB:更細緻的SNMP解析功能。

Tools(工具)元件

Editcap:讀取抓封包件并将全部或部分資料包寫入另一個抓封包件。

Text2Pcap:在ASCII十六進制dump檔案中讀取資料并将資料寫入pcap抓封包件。

Reordercap:用時間戳來記錄制抓封包件。

Mergecap:将多個已儲存的抓封包件組合并為單個輸出檔案。

Capinfos:提供與抓封包件有關的資訊。

Rawshark:原始資料包過濾器。

1.2.2 操作方法    

現以一個典型的網絡為例,來看一下部署在其中的網絡裝置的運作方式、如何在必要時配置這些裝置,以及如何安置Wireshark,如圖1.3所示。

你所不了解的Wireshark,當程式員肚裡的“蛔蟲”

圖1.3

請讀者仔細研究一下圖1.3給出的簡單而又常見的網絡拓撲結構。

1.伺服器流量監控

像伺服器流量監控這樣的需求,在實戰中經常會有人提出。要想監控某台伺服器收/發的流量,既可以在交換機上針對連接配接伺服器的端口配置端口鏡像,将流量重定向至Wireshark主機(如圖1.3中的編号1所示),也可以在伺服器上直接安裝Wireshark。

2.路由器流量監控

可根據以下具體情形,來監控進出路由器的流量。

情形1:監控路由器連接配接交換機的LAN口的進出流量。

1.對于這種情形,如圖1.3中的編号2所示,請将安裝了Wireshark的筆記本電腦連接配接至路由器所連接配接的交換機。

2.在交換機上開啟端口鏡像功能,把與路由器LAN口相連的端口的流量重定向至連接配接Wireshark主機的端口。

情形2:監控安裝在路由器上的交換子產品的端口的進出流量。

1.對于這種情形,當路由器安裝了一塊交換子產品(比如Cisco EtherSwitch或HWIC子產品)時,如圖1.3中的編号6(編号5所指為WAN端口,編号6所指為LAN端口)所示,可将交換子產品視為标準交換機。

路由器一般不支援端口鏡像或SPAN功能。對于簡單的家用/SOHO路由器,根本就沒有相應的配置選項。安裝在某幾款Cisco路由器(比如Cisco 2800或3800)上的交換子產品支援端口鏡像功能,Cisco 6800等大型路由器就更不用說了。

2.此時,隻能監控連接配接到交換子產品的裝置的流量。

情形3:監控未安裝交換子產品的路由器的WAN口的流量。

1.對于這種情形,可在路由器WAN口和服務提供商(SP)網絡裝置之間架設一台交換機,在該交換機上執行端口監控,如圖1.4所示。

你所不了解的Wireshark,當程式員肚裡的“蛔蟲”

圖1.4

2.此時,要在交換機上開啟端口鏡像功能,将連接配接路由器WAN口的端口的流量重定向至連接配接了Wireshark筆記本電腦的端口。

在SP網絡與路由器WAN口之間部署一台交換機,是一項會導緻網絡中斷的操作。但隻要準備充分,斷網的時長最多也就一兩分鐘。

情形4:嵌入了抓包功能的路由器。

最近幾年,某些廠商将抓包功能內建進了路由器或路由器作業系統。12.4(20)T或更高版本的Cisco IOS路由器、15.2(4)S-3.7.0或更高版本的Cisco IOS-XE路由器、Juniper SRX/J系列路由器、Riverbed Stealhead路由器,以及諸多其他廠商的路由器都嵌入了抓包功能。

啟用路由器内置的抓包功能時,請確定路由器有足量的記憶體,不能因為開啟該功能而影響路由器的運作速度。

監控路由器的流量時,有一點請務必留意:發往路由器的資料包并不一定都會得到轉發。有些資料包或許會在途中走失,而路由器既有可能會因緩存溢出而對部分資料包忍痛割愛,也有可能會把某些資料包從接收端口原路送回。再就是,廣播包不會得到路由器的轉發。

3.防火牆流量監控

防火牆流量監控的手段有兩種,一種是監控防火牆内口(如圖1.5中的編号1所示)的流量,另外一種是監控防火牆外口(如圖1.5中的編号2所示)的流量。當然,這兩種方法有所不同。

你所不了解的Wireshark,當程式員肚裡的“蛔蟲”

圖1.5

監控防火牆内口,可以觀看到内網使用者發起的所有通路Internet的流量,其源IP位址均為配置設定給内網使用者的内部IP位址。監控防火牆外口,能觀看到所有經過防火牆放行的通路Internet的流量,這些流量的源IP位址均為外部IP位址(拜NAT所賜,配置設定給内網使用者的内部IP位址被轉換成了外部IP位址);由内網使用者發起,但防火牆未予放行的流量,監控防火牆外口是觀察不到的。若有人從Internet發動對防火牆或内網的攻擊,要想觀察到攻擊流量,觀測點隻能是防火牆外口。

某些廠商的防火牆也像前文描述的路由器那樣支援嵌入式抓包功能。

4.分路器和Hub

執行流量監控任務時,可能會用到以下兩種裝置。

分路器

:可在受監控鍊路上用一種叫做分路器(Test Access Point,TAP)的裝置來取代圖1.4中的交換機。這是一種簡單的“三通”(三端口)裝置,執行流量監控時,其所起作用跟交換機相同。與交換機相比,TAP不但便宜而且使用友善。此外,TAP還會把錯包原樣傳遞給Wireshark,而LAN交換機則會把錯包完全丢棄。交換機不但價格高昂,而且還得花時間來配置,當然它所支援的監控功能也更多(比如,一般的LAN交換機都支援簡單網絡管理協定[SNMP])。排除網絡故障時,最好能用可管理的交換機,哪怕是功能沒那麼豐富的可網管交換機也好。

Hub

:可在受監控的鍊路上用一台Hub來取代圖1.4中的交換機。Hub屬于半雙工裝置。借此裝置,路由器和SP裝置之間穿行的每一個資料包都能被Wireshark主機看得一清二楚。使用Hub最大的壞處是,會顯著加劇流量的延遲,進而對流量采集産生影響。如今,監控千兆端口的流量可謂是家常便飯,在這種情況下使用Hub,将會使鍊路速率驟降為百兆,這會對抓包産生嚴重影響。是以說,在抓包時一般都不用Hub。

1.2.3 幕後原理    

要想弄清端口鏡像(端口監控)的運作原理,需先了解LAN交換機的運作方式。以下所列為LAN交換機執行資料包轉發任務時的舉動。

LAN交換機會“堅持不懈”地學習接入本機的所有裝置的MAC位址。

收到發往某MAC位址的資料幀時,LAN交換機隻會将其從學得此MAC位址的端口外發。

收到廣播幀時,交換機會從除接收端口以外的所有端口外發。

收到多點傳播幀時,若未啟用Cisco組管理協定(Cisco Group Management Protocol,CGMP)或Internet組管理協定(Internet Group Management Protocol,IGMP)監聽特性,LAN交換機會從除接收端口以外的所有端口外發;若啟用了以上兩種特性之一,LAN交換機将會通過連接配接了相應多點傳播接收主機的端口外發多點傳播幀。

收到目的MAC位址未知的資料幀時(這種情況比較罕見),交換機會從除接收端口以外的所有端口外發。

現以圖1.6所示網絡為例,來說明第二層(L2)網絡的運作方式。接入網絡的每一台裝置都會定期發送廣播包。ARP請求消息和NetBIOS通告消息都屬于廣播包。廣播包一經發出,就會傳遍整個L2網絡(如圖中虛線箭頭所示)。對于本例,所有交換機都會用學到M1的端口,外發目的MAC位址為M1的以太網幀。

你所不了解的Wireshark,當程式員肚裡的“蛔蟲”

圖1.6

當PC2要将一幀發給PC1時,該幀會被先發給直連PC2的交換機SW5。SW5已從左起第6個端口學到了PC1的MAC位址M1,即該幀的目的MAC位址。同理,網絡内的每台交換機都會通過學到M1的端口外發該幀,直至其最終抵達PC1。

是以,将交換機上的某端口配置為鏡像端口,先把受監控端口的流量重定向至該端口,再接入安裝了Wireshark的筆記本電腦,即可觀察到所有進出受監控端口的流量。但若将筆記本電腦随便連接配接到交換機的某個端口,不做任何配置,則隻能觀察到進出該筆記本電腦的單點傳播流量,以及網絡内的廣播和多點傳播流量。

1.2.4 拾遺補缺    

用Wireshark抓包時,還需提防幾種特殊情況。

在抓取整個VLAN的流量(VLAN流量監控)時,有幾個重要事項需要銘記。第一個要注意的地方是,即便目的是要監控整個VLAN的流量,但Wireshark主機隻能采集到與其直連的交換機承載的同一VLAN的流量。比方說,在一個交換式網絡(LAN)内,有多台交換機的端口都被劃入VLAN 10(多台交換機都擁有隸屬于VLAN 10的端口),要是隻讓Wireshark主機直連某台接入層交換機,那必然采集不到VLAN 10内其他接入層交換機上的主機通路直連核心層交換機的伺服器的流量。請看圖1.7所示的網絡,使用者主機一般都分布在各個樓層,跟所在樓層的接入層交換機相連。各台接入層交換機會上連至1~2台(出于備援)核心層交換機。Wireshark主機要想監控到某個VLAN的所有流量,就得與承載此VLAN流量的交換機直連。也就是,要想抓全VLAN 10的流量,Wireshark主機必須直連核心層交換機。

你所不了解的Wireshark,當程式員肚裡的“蛔蟲”

圖1.7

在圖1.7所示的網絡中,若讓Wireshark主機直連SW2,且在SW2上激活了相關端口的鏡像功能,監控VLAN 30的流量,則隻能抓取到進出SW2的P2、P4、P5端口的流量,以及由SW2承載的同一VLAN的流量。該Wireshark主機絕不可能采集到SW3和SW1之間來回穿行的VLAN 30的流量,以及連接配接在SW3或SW1上隸屬于VLAN 30的不同裝置之間的流量。

基于整個VLAN來實施抓包任務時,可能會抓到重複的資料包,是另外一個需要注意的地方。之是以會出現這種情況,是因為啟用端口鏡像時,對于在不同交換機端口之間交換的同一VLAN的流量,Wireshark主機會從流量接收端口的流入(input)方向及流量發送端口的流出(output)方向分别收取一遍。

在圖1.8所示的交換機上激活了端口鏡像功能,對VLAN 30的流量實施監控。對于伺服器S4向S2發送的資料包,當其(從連接配接S4的交換機端口)流入VLAN 30時,Wireshark主機會收取一次;當其從(從連接配接S2的交換機端口)流出VLAN 30時,Wireshark主機會再收取一次。這麼一來,便抓到了重複的流量。

你所不了解的Wireshark,當程式員肚裡的“蛔蟲”
你所不了解的Wireshark,當程式員肚裡的“蛔蟲”
《Wireshark網絡分析實戰(第2版)

    [印度]甘德拉·庫馬爾·納納、堯戈什·拉姆多斯[以色列]約拉姆·奧紮赫 著

本書是同名暢銷圖書的全新更新版,按部就班地講解了 Wireshark的用法以及如何使用該工具解決實際的網絡問題。

本書共分為19章,其内容涵蓋了Wireshark版本2簡介,熟練使用Wireshark排除網絡故障,抓包過濾器的用法,顯示過濾器的用法,基本資訊統計工具的用法,進階資訊統計工具的用法,Expert Information工具的用法,Ethernet和LAN交換,無線LAN,網絡層協定及其運作方式,傳輸層協定分析,FTP、HTTP/1和HTTP/2,DNS協定分析,E-mail協定分析,NetBIOS和SMB協定分析,企業網應用程式行為分析,排除SIP、多媒體及IP電話故障,排除由低帶寬或高延遲所引發的故障,網絡安全和網絡驗證等知識。

繼續閱讀