童 樺
(武漢船用電力推進(jìn)裝置研究所,湖北 武漢 430064)
隨著應(yīng)用的增長以及IT技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)設(shè)備、安全設(shè)備、應(yīng)用系統(tǒng)數(shù)量不斷激增,網(wǎng)絡(luò)工程師除了要完成諸如將設(shè)備添加至網(wǎng)絡(luò)的簡單任務(wù)外,更多的時(shí)候還需要去即時(shí)處理和解決一些復(fù)雜的網(wǎng)絡(luò)問題,保證網(wǎng)絡(luò)正??焖俚倪\(yùn)行。這樣,管理員如果利用一些網(wǎng)絡(luò)工具可以快速地獲取想要的信息,準(zhǔn)確定位影響網(wǎng)絡(luò)的原因,將大大提升網(wǎng)絡(luò)管理員的工作效率。
在本文的案例中,網(wǎng)絡(luò)管理員用到了Wireshark和Httpwatch。
Wireshark是一個(gè)網(wǎng)絡(luò)封包分析軟件,可以截取網(wǎng)絡(luò)封包,并盡可能顯示出最為詳細(xì)的網(wǎng)絡(luò)封包資料。啟動(dòng)Wireshark后,操作系統(tǒng)會(huì)將經(jīng)過網(wǎng)卡的所有數(shù)據(jù)包都復(fù)制一份并提供給它。這樣不管數(shù)據(jù)包來自哪里,還是去往何處,經(jīng)過這個(gè)網(wǎng)卡的數(shù)據(jù)包都會(huì)被Wireshark所獲取了,這也意味著網(wǎng)絡(luò)管理員就可以通過Wireshark查看所有進(jìn)出本機(jī)的數(shù)據(jù)包。網(wǎng)絡(luò)管理員可用它來分析網(wǎng)絡(luò)底層協(xié)議、尋找網(wǎng)絡(luò)安全問題、網(wǎng)絡(luò)流量檢測等,通過分析Wireshark截取的數(shù)據(jù)包能夠幫助網(wǎng)絡(luò)管理員對網(wǎng)絡(luò)行為有更清楚的了解。例如:我們使用瀏覽器訪問了HTTP服務(wù)器,這個(gè)過程一共只用了幾秒(甚至更短),在這個(gè)過程中都發(fā)生了什么呢,我們對此一無所知。但是,我們可以在Wireshark的幫助下來解讀瀏覽訪問所經(jīng)歷的一切。Wireshark將捕獲到的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為我們?nèi)菀桌斫獾男问?,同時(shí)也會(huì)將捕獲到的數(shù)據(jù)包按照順序進(jìn)行組裝。Wireshark將會(huì)對捕獲到的數(shù)據(jù)包進(jìn)行分析。這些分析包括識(shí)別數(shù)據(jù)包所使用的協(xié)議類型、源地址、目的地址、源端口和目的端口等。Wireshark有時(shí)也會(huì)根據(jù)自帶的協(xié)議解析器來深入地分析數(shù)據(jù)包的內(nèi)容。當(dāng)你需要對網(wǎng)絡(luò)進(jìn)行研究時(shí),Wireshark絕對是一個(gè)最為理想的幫手。以前的很多網(wǎng)絡(luò)分析工具都采用了先捕獲網(wǎng)絡(luò)中的數(shù)據(jù),等到捕獲停止的時(shí)候,再顯示出這些數(shù)據(jù)的工作方式。這樣使用者是無法實(shí)時(shí)地觀察網(wǎng)絡(luò)中的運(yùn)行情況的。而Wireshark采用了實(shí)時(shí)地工作方式,它可以立刻將捕獲到的數(shù)據(jù)顯示出來,以便我們對網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)的監(jiān)控,及時(shí)掌握整個(gè)網(wǎng)絡(luò)的運(yùn)行狀況。
Wireshark是開源項(xiàng)目,所有愛好者都可以參與Wireshark的開發(fā)。只有你有需求,就可以自己編寫代碼來實(shí)現(xiàn),Wireshark有極為友好的擴(kuò)展功能開發(fā)環(huán)境,是一個(gè)可以生產(chǎn)各種“武器”的“兵工廠”,得到了幾乎所有網(wǎng)絡(luò)行業(yè)人員的喜愛。
HttpWatch是一款強(qiáng)大的網(wǎng)頁抓包數(shù)據(jù)分析工具,用于錄制HTTP請求信息的工具,由Simtec Limited公司開發(fā),HttpWatch只支持IE和Firefox,也就是說只有當(dāng)你用IE或Firefox訪問網(wǎng)頁時(shí),它才會(huì)進(jìn)行錄制,不像Sniあer和Omnipeek那樣監(jiān)控所有數(shù)據(jù),但對于網(wǎng)站分析來說,已經(jīng)是不可多得的利器了。它會(huì)自動(dòng)對網(wǎng)站與瀏覽器之間的需求/回復(fù)的通訊情況進(jìn)行分析,它不用代理服務(wù)器或一些復(fù)雜的網(wǎng)絡(luò)監(jiān)控工具,就能夠在顯示網(wǎng)頁同時(shí)顯示網(wǎng)頁請求和回應(yīng)的日志信息。甚至可以顯示瀏覽器緩存和IE之間的交換信息,集成在Internet Explorer工具欄,包括:網(wǎng)頁摘要、Cookies管理、緩存管理、消息頭發(fā)送/接收、字符查詢、POST數(shù)據(jù)和目錄管理功能。Httpwatch是一款能夠收集并顯示頁面深層信息的軟件[1]。
HttpWatch的安裝很簡單,沒什么說的,來看看它的組成,HttpWatch有兩部分組成:
1.一個(gè)是嵌入到IE或Firefox中用于收集、查看、保存HTTP信息的插件;
2.一個(gè)是獨(dú)立運(yùn)行的日志查看器,叫做HttpWatch Studio。
在我們的生活和工作中,網(wǎng)絡(luò)未必總是可以正常地完成任務(wù)。如果你是一位從事網(wǎng)絡(luò)方面工作的工程師,那么應(yīng)該經(jīng)常會(huì)聽到別人向你抱怨“為什么我又上不去網(wǎng)了?”“為什么我又打不開這個(gè)網(wǎng)頁了?”“怎么今天網(wǎng)速這么慢?”這些讓人頭疼的故障。
筆者單位數(shù)據(jù)中心防火墻上線,在完成相應(yīng)的安全策略配置工作后,進(jìn)行業(yè)務(wù)測試。發(fā)現(xiàn)OA系統(tǒng)訪問速度變慢,且部分業(yè)務(wù)模塊無法正常加載。管理員第一時(shí)間開始檢查防火墻狀態(tài),并采用debug觀察業(yè)務(wù)訪問數(shù)據(jù)包。發(fā)現(xiàn)防火墻運(yùn)行狀態(tài)正常,CPU、內(nèi)存利用率均在正常范圍內(nèi),業(yè)務(wù)數(shù)據(jù)包并未發(fā)現(xiàn)異常。同時(shí),防火墻上沒有開啟IPS、AV等功能模塊,沒有出現(xiàn)誤判等情況。為排除網(wǎng)絡(luò)設(shè)備的硬件問題,又對防火墻、網(wǎng)絡(luò)設(shè)備進(jìn)行了硬件測試。測試流程如下。
第一,實(shí)際應(yīng)用中防火墻和交換機(jī)互聯(lián)采用的交叉鏈路方式,臨時(shí)改為口字型互聯(lián),保證單鏈路傳輸數(shù)據(jù)。
第二,進(jìn)行防火墻HA切換,將數(shù)據(jù)流量從主防火墻切換到備份防火墻上。
經(jīng)過上述測試,我們發(fā)現(xiàn)網(wǎng)絡(luò)連通性正常,但是訪問OA業(yè)務(wù)的延時(shí)現(xiàn)象并未改善。通過該測試,我們排除了防火墻硬件問題導(dǎo)致OA業(yè)務(wù)延時(shí)。
既然排除了硬件故障,那么結(jié)合網(wǎng)絡(luò)拓?fù)鋱D(圖1),分析整個(gè)OA業(yè)務(wù)的處理流程。
圖1 網(wǎng)絡(luò)拓?fù)鋱D
網(wǎng)絡(luò)拓?fù)淙鐖D1所示,路由配置在交換機(jī)1上,OA系統(tǒng)服務(wù)器IP地址為xxx.12.150.166,數(shù)據(jù)庫服務(wù)器IP地址為xxx.12.151.26,兩臺(tái)服務(wù)器分屬于不同的網(wǎng)段。用戶(如:xxx.12.105.4)辦理OA業(yè)務(wù)時(shí),OA系統(tǒng)需要與數(shù)據(jù)庫產(chǎn)生交互。所以O(shè)A系統(tǒng)與數(shù)據(jù)庫的交互過程為:OA服務(wù)器(xxx.12.150.166)→交換機(jī)2→防火墻→交換機(jī)1→防火墻→交換機(jī)2→數(shù)據(jù)庫服務(wù)器(xxx.12.151.26)→交換機(jī)2→防火墻→交換機(jī)1→防火墻→交換機(jī)2→OA服務(wù)器。觀察這一過程可以發(fā)現(xiàn),一次完整的訪問需要經(jīng)過4次防火墻。于是,懷疑問題可能出現(xiàn)在OA服務(wù)器與數(shù)據(jù)庫服務(wù)器之間的通訊上。為了驗(yàn)證此懷疑,通過梳理業(yè)務(wù)處理流程,結(jié)合網(wǎng)絡(luò)拓?fù)鋱D,采用Wireshark進(jìn)行網(wǎng)絡(luò)分析,對業(yè)務(wù)互訪的數(shù)據(jù)報(bào)文進(jìn)行了詳細(xì)的比對:當(dāng)客戶端上應(yīng)用程序產(chǎn)生的請求發(fā)送出去后,經(jīng)過路徑到達(dá)服務(wù)器之后,服務(wù)器會(huì)給出回應(yīng)。這兩個(gè)數(shù)據(jù)包之間的時(shí)間就是數(shù)據(jù)包傳送的時(shí)間加上服務(wù)器上應(yīng)用程序的響應(yīng)時(shí)間。
從wireshark抓包信息可以看到以下信息。
圖2為wireshark抓包軟件中的記錄的信息,由圖2可見從客戶端(xxx.12.105.4)發(fā)起請求(第1個(gè)框)與對應(yīng)的響應(yīng)(第2個(gè)框),中間耗時(shí)22.47-15.09=7.38秒。此外,從wireshark抓包的記錄中可以發(fā)現(xiàn),發(fā)起請求的數(shù)據(jù)報(bào)文為No.43308,而響應(yīng)的報(bào)文是從No.117257開始的,到No.117260結(jié)束。我們考慮到進(jìn)行抓包測試的時(shí)間為中午,而且發(fā)布過斷網(wǎng)調(diào)試的公告,所以這個(gè)期間其他的業(yè)務(wù)流量相對很少。在網(wǎng)絡(luò)相對空閑的時(shí)段,從請求到響應(yīng)之間,出現(xiàn)了117257-43308=73949個(gè)報(bào)文。
圖2 Wireshark抓包信息
圖3為同一次請求中,截取的數(shù)據(jù)包情況。分析可見從發(fā)起請求到對應(yīng)的響應(yīng)之間存在大量OA與數(shù)據(jù)庫的request和response互動(dòng)過程。此時(shí)可以發(fā)現(xiàn),瀏覽器的一次請求,OA需要與數(shù)據(jù)庫做大量的查詢,有時(shí)查詢返回?cái)?shù)據(jù)較大,會(huì)進(jìn)行網(wǎng)絡(luò)分片。這些數(shù)據(jù)包在經(jīng)過防火墻存在一定轉(zhuǎn)發(fā)延時(shí)。
圖3 Wireshark截取數(shù)據(jù)包信息
防火墻設(shè)備,在數(shù)據(jù)包通過的時(shí)候,需要進(jìn)行相應(yīng)的處理、轉(zhuǎn)發(fā),在這個(gè)過程中存在延時(shí),是無法避免的。我們?yōu)榱蓑?yàn)證這種延時(shí)的存在,進(jìn)行了以下測試實(shí)驗(yàn):
1.搭建測試環(huán)境,部署類似的網(wǎng)絡(luò)架構(gòu):核心交換機(jī)—防火墻—服務(wù)器接入交換機(jī),串聯(lián)組網(wǎng),部署php+mysql模擬應(yīng)用模型。
2.瀏覽器發(fā)起訪問請求,應(yīng)用去數(shù)據(jù)庫進(jìn)行查詢。對比通過防火墻和不通過防火墻,瀏覽器wait時(shí)間,用Httpwatch對通訊情況進(jìn)行分析。
Httpwatch 菜單區(qū)表示的含義如下:
Started: 表示開始記錄請求一個(gè)URL時(shí)間
Time: 表示記錄請求耗費(fèi)的時(shí)間
Sent: 表示客戶端向服務(wù)器端發(fā)送請求字節(jié)大小
Reveived:表示客戶端收到服務(wù)端發(fā)送請求字節(jié)大小
Method: 表示請求URL方式
Result: 表示服務(wù)器返回到客戶端結(jié)果
我們的實(shí)驗(yàn)網(wǎng)絡(luò)雖然簡化了很多,但是運(yùn)行原理和真實(shí)網(wǎng)絡(luò)是完全一樣的。剛剛,我們使用客戶端的瀏覽器訪問了服務(wù)器,這個(gè)過程很短,但是這個(gè)過程發(fā)生了什么呢。我們對此一無所知,那么現(xiàn)在,我們就在Httpwatch的幫助下來解讀剛剛所經(jīng)歷的一切。在本次實(shí)驗(yàn)中,相關(guān)結(jié)果及記錄如圖4所示:
圖4 Httpwatch截圖信息
第1個(gè)框:不通過防火墻設(shè)備,瀏覽器發(fā)起請求,應(yīng)用去數(shù)據(jù)庫查詢1000次,整個(gè)過程用時(shí)8.912秒。
第2個(gè)框:通過防火墻設(shè)備,瀏覽器發(fā)起請求,應(yīng)用去數(shù)據(jù)庫查詢1000次,整個(gè)過程用時(shí)9.610秒。分析對比,通過防火墻后,用時(shí)增加9.610-8.912=0.698秒。
第3個(gè)框:不通過防火墻設(shè)備,瀏覽器發(fā)起請求,應(yīng)用去數(shù)據(jù)庫查詢3000次,整個(gè)過程用時(shí)26.498秒。
第4個(gè)框:通過防火墻設(shè)備,瀏覽器發(fā)起請求,應(yīng)用去數(shù)據(jù)庫查詢3000次,整個(gè)過程用時(shí)28.447秒。分析對比,通過防火墻后,用時(shí)增加28.447-26.498=1.949秒。
由此可見,數(shù)據(jù)包多次經(jīng)過防火墻確實(shí)會(huì)導(dǎo)致網(wǎng)絡(luò)延時(shí):數(shù)據(jù)包在經(jīng)過防火墻之后,業(yè)務(wù)之間互訪的用時(shí)會(huì)增加,而且隨著數(shù)據(jù)包的增加,用時(shí)的增量也會(huì)增加。由于前期路由規(guī)劃的不合理,造成用戶辦理OA業(yè)務(wù)時(shí),數(shù)據(jù)包多次經(jīng)過防火墻,從而導(dǎo)致業(yè)務(wù)用時(shí)增加。管理員經(jīng)過分析,認(rèn)為OA系統(tǒng)服務(wù)器和數(shù)據(jù)庫服務(wù)器屬于同一安全域,有相同的安全保護(hù)需求,并具有相同的安全訪問控制和邊界控制策略。為了減少OA系統(tǒng)到數(shù)據(jù)庫的訪問用時(shí),將VLAN150和VLAN151的路由調(diào)整至交換機(jī)2。路由調(diào)整后,應(yīng)用系統(tǒng)到數(shù)據(jù)庫的訪問不需要經(jīng)過防火墻,訪問過程簡化為:OA系統(tǒng)(xxx.12.150.166)→交換機(jī)2→數(shù)據(jù)庫(xxx.12.151.26)→交換機(jī)2→OA系統(tǒng),這樣大大降低了延時(shí)。路由調(diào)整后,再次嘗試辦理OA業(yè)務(wù),發(fā)現(xiàn)OA業(yè)務(wù)用時(shí)正常,與防火墻部署前一致。
我們在生活和工作中經(jīng)常會(huì)遇到應(yīng)用程序可以使用,但是速度卻變得十分緩慢的情況。對于大多數(shù)人來說,這是一個(gè)非常棘手的問題,因?yàn)樵谶@個(gè)過程中有很多設(shè)備參與其中,情況錯(cuò)綜復(fù)雜。這時(shí),網(wǎng)絡(luò)工具就體現(xiàn)出優(yōu)勢了,網(wǎng)絡(luò)工具可以給管理員的運(yùn)維工作帶來極大便利,讓管理員的工作達(dá)到事半功倍的效果。管理員合理利用網(wǎng)絡(luò)工具,從微觀層面分析網(wǎng)絡(luò),對發(fā)生的問題可以迅速定位和修復(fù),提高了網(wǎng)絡(luò)管理員的勞動(dòng)效率和工作質(zhì)量,保證了信息系統(tǒng)的正常運(yùn)行。