Linux服務器傻瓜安裝(圖解下)(4)

2、在Linux下利用TCPDump進行網絡管理
對於網絡管理員來說,要保證整個網絡的正常運行,就必須隨時瞭解網絡中存在的異常流量、網絡阻塞等現象。打個比方,一部電話的竊聽裝置,可以用來竊聽雙方通話的內容,而計算機網絡嗅探器則可以竊聽計算機程序在網絡上發送和接收到的數據。但是,計算機所傳送的數據是大量的二進制數據。因此,一個網絡竊聽程序也必須使用特定的網絡協議來分析數據,進行正確的解碼。如圖27所示,就是一個Windows下的嗅探器。
那麼,對於鍾愛Linux的網絡安全愛好者來說,能否找到這樣一款強大的Linux下的嗅探器呢?TCPDump就是一款免費的網絡分析工具,它可以將網絡中傳送的數據包的“頭”完全截獲下來提供分析,它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。
(1)安裝和啓動
在Linux下TCPDump的安裝十分簡單,一種是以rpm包的形式來進行安裝,另一種是以源程序的形式安裝。以rpm包的安裝方法比較簡單,通過rpm命令可以直接安裝,rpm包是將軟件編譯後打包成二進制的格式,不需要修改任何東西。安裝時,以超級用戶登錄,參考命令如下:#rpm-ivhTCPDump.rpm。這樣,TCPDump就可以順利地安裝到Linux系統中。不過,現在較高版本的Linux操作系統都自帶了這個工具,關於TCPDump更詳細的信息,可以查看ManTCPDump。
普通情況下,不帶參數執行TCPDump,即:#TCPDump,截獲的是通過第一個網絡界面的數據包。直接啓動TCPDump將監視第一個網絡界面上所有流過的數據包。如圖28所示。
從上面的輸出結果來看,TCPDump的基本輸出格式爲:“系統時間 來源主機.端口 >目標主機.端口數據包參數”。仔細觀察,我們會發現,和上面的Windows界面相比,數據包格式有很多相似之處,這樣也有助於我們來了解這個軟件的使用方法。
(2)參數分析
TCPDump支持多種不同參數,如使用-i參數指定TCPDump監聽的網絡界面,這在計算機具有多個網絡界面時非常有用;使用-c參數可以指定要監聽的數據包數量;使用-w參數指定將監聽到的數據包寫入文件中保存,等等。然而,在數據的海洋中,TCPDump中更復雜的參數主要是用於過濾。這是爲什麼呢?
因爲在實際操作中,網絡中流量很大,如果將所有的數據包都截留下來,數據量就會很大,反而不容易發現所需要的數據包。如果不帶任何參數,TCPDump就會搜索系統中所有的網絡接口,並顯示它截獲的所有數據,這些數據對我們不一定全都需要,而且數據太多不利於分析。所以,我們應當先想好需要哪些數據,TCPDump的語法爲:
TCPDump[-adeflnNOpqStvx][-c<數據包數目>][-dd][-ddd][-F<表達文件>][-i<網絡界面>][-r<數據包文件>][-s<數據包大小>][-tt][-T<數據包類型>][-vv][-w<數據包文件>][輸出數據欄位]
在實際使用中,我們可以靈活應用。現列舉幾個比較常用的例子:
1、截獲所有192.168.10.1的主機收到的和發出的所有數據包。命令爲:
TCPDump host 192.168.10.1
實際效果如圖29所示。
2、截獲主機192.168.10.1和主機192.168.10.2或192.168.10.3的通信,使用命令(在命令行中適用括號時,一定要):
#tcpdump host 192.168.10.1 and \ (192.168.10.2 or192.168.10.3\)
3、如果想要獲取主機192.168.10.123接收或發出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 192.168.10.123
4、獲取主機192.168.10.1除了和主機192.168.10.2之外所有主機通信的ip包,使用命令:
#tcpdump ip host 192.168.10.1 and ! 192.168.10.2
3、Linux服務器實例分析
通過上面的操作了解,相信很多電腦愛好者在Linux技術上有了一個質的飛躍。下面,我們綜合運用這些方法來解決一個Linux服務器上安裝問題。下面是一個針對郵件服務器的網絡故障分析。某單位的局域網中有一臺Sendmail郵件服務器,收發郵件等基本功能正常,但在使用中發現一個普遍的怪現象:在PC機上發郵件時,連接郵件服務器後,要等待很長時間才能開始工作。從檢測來看,網絡連接沒有問題,郵件服務器和PC性能都沒有問題,問題可能出在哪裏呢?
爲了查找問題的所在,可以採用以下的測試方法。首先,我們在PC機client上發送郵件,同時在郵件服務器server上使用TCPDump對這個client的數據包進行捕獲分析,如下:
#TCPDump host client
TCPDump: listening hme0
23:41:30.040578 client.1065 > server.smtp:S1087965815:1087965815(0) win 64240 (DF)
23:41:30.040613 server.smtp > client.1065:S99285900:99285900(0) ack 1087965816 win 10136 (DF)
23:41:30.040960 client.1065 > server.smtp: . ack 1 win64240(DF)
然後,通過分析數據,我們看到雙方順利的完成了會話,也就是說,到目前爲止,整個狀態屬於正常的現象。沿着這個思路,我們往下看:
23:41:30.048862 server.33152 > client.113:S99370916:99370916(0) win 8760 (DF)
23:41:40.161052 server.33152 > client.113:S99370916:99370916(0) win 8760 (DF)
23:41:56.061130 server.33152 > client.113:R99370917:99370917(0) win 8760 (DF)
23:41:56.070108 server.smtp > client.1065: P 1:109(108) ack1win 10136 (DF)
通過分析就可以判斷問題所在了。原來,問題在於:我們看到server端試圖連接client的113端口,要求認證,但是沒有收到client端的迴應,server端重複嘗試了3次,費時26秒後,才放棄認證請求,並主動發送了reset標誌的數據包,開始push後面的數據;而正是在這個過程中所花費的26秒時間,造成了發送郵件時漫長的等待情況。問題找到後,通過修改服務器端的Sendmail配置,再次測試,看到郵件服務器不再進行113端口的認證嘗試,而是在三次檢測後直接push數據,問題得到完美的解決。
實際上,Linux中還有很多優秀的服務器功能,如DNS服務器、CVS服務器、DHCP服務器、數據庫服務器、Samba網絡服務器等。正是這些優秀的功能組合,再加上完全免費的優勢,使得Linux的功能越來越強大,並逐漸在激烈的操作系統市場中佔據了一席之地。通過本文的講解,相信很多用戶一定會更加喜愛Linux操作系統。文章到這裏,我們又想起了那隻讓人愛不釋手的小企鵝,毫無疑問,正是它歡快自由的腳步,我們才領略到Linux世界的無窮魅力。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章