tcpreplay工具安裝-配置-實例
TCPReplay是一個非常強大的集成工具,其中主要包括TCPReplay、TCPPrepare、TCPrewrite工具,根據其具體參數對.pcap文件進行更改,然后重放數據包。
使用條件:Linux操作系統、雙網卡
對TCPReplay工具分3個部分來講解,第一部分安裝一個操作linux操作系統、第二部分安裝TCPReplay以及相關組件、舉一個實例來分析相關參數意義。
一. Ubuntu12的USB安裝過程或者硬盤安裝過程,在WIN7操作系統上安裝;
1、 使用USB鏡像安裝ubuntu12操作系統的安裝過程:http://www.linuxidc.com/Linux/2012-11/74695.htm;
2、 使用硬盤安裝ubuntu12操作系統的安裝過程:http://www.linuxidc.com/Linux/2012-11/73500.htm;
二. TCPReplay的准備安裝過程
首先推薦一個網站:http://tcpreplay.synfin.net/ ,上面有Tcpreplay的安裝包和很多文檔,包括手冊、man頁和FAQ等。
Tcpreplay是一系列工具的總稱,包括tcpreplay、tcprewrite和tcpprep等工具,它可以用來在Unix系統或者linux系統上重放網絡包。這些包是由tcpdump、ethereal和wireshark等軟件抓取到的,即pcap格式的數據包。
安裝Tcpreplay包時,默認情況下是安裝了下面這些工具的, 用於准備發包的cache, 重寫報文等:
(1)tcpprep: 這個工具的作用就是划分客戶端和服務器,區分pcap數據包的流向,即划分那些包是client的,哪些包是server的,一會發包的時候client包從一個網卡發,另一個server的包可能從另一個網卡發。
(2)tcprewrite:這個工具的作用就是來修改報文,主要修改2層,3層,4層報文頭,即MAC地址,IP地址和PORT地址。
(3)tcpreplay: 這是最終真正發包使用的工具,可以選擇主網卡、從網卡、發包速度等。
Tcpreplay安裝條件
Tcpreplay要實現它的功能要用到其它一些庫:
1)libpcap庫:由於tcpreplay在使用過程中主要依賴於libpcap庫,因此在安裝tcpreplay之前需要先安裝libpcap,否則在安裝tcpreplay的時候會提示你libpcap沒有安裝而安裝失敗。但如果希望libpcap能在linux上正常工作,則必須使內核支持"packet"協議,也即在編譯內核時 打開配置選項 CONFIG_PACKET(選項缺省為打開)。
Libpcap可以從以下鏈接下載:http://www.tcpdump.org/ 可以用源碼安裝,比較簡單。
2)tcpdump: 這個不是必須的,這個工具的主要作用就是來解碼數據包,在linux系統下查看pcap文件內的數據包,也可以用它來進行抓包。在安裝tcpreplay時可以選擇安裝它也可以不選擇安裝。(個人建議也一起安裝,以防止在使用tcpreplay時發生其他錯誤。)
3)libnet庫。也不是必須的一個庫。Tcpreplay也可用它來發送數據包,但由於libnet自身的bug比較多且已不再有人維護,Tcpreplay未來版本有可能取消對它的支持。(目前的版本還需要這個庫的支持,因此建議也安裝)
另外,你所使用的linux系統需要安裝了GCC編譯器,否則無法安裝所有工具。
Tcpreplay安裝過程
(1)首先來說明一下如何安裝libpcap庫(在安裝tcpreplay之前需要先安裝libpcap),安裝libpcap之前需要首先安裝m4、bison,flex,否則會出現錯誤:
1)打開網址:www.tcpdump.org/ 下載 libpcap-1.1.1.tar.gz (512.0KB) 軟件包,通過命令tar zxvf libpcap-1.1.1.tar.gz 解壓文件,並將其放入自定義的安裝目錄。
2)打開網址:flex.sourceforge.net/ 下載 flex-2.5.35.tar.gz (1.40MB) 軟件包,通過 tar zxvf flex-2.5.35.tar.gz 解壓文件,並將其放入上述自定義的安裝目錄中。
注意:如果沒有編譯安裝此文件,在編譯安裝libpcap時,就會出現 “configure: error: Your operating system\'s lex is insufficient to compile libpcap.”的錯誤提示。
3)打開網址:ftp.gnu.org/gnu/bison/ 下載 bison-2.4.1.tar.gz (1.9MB) 軟件包,通過 tar zxvf bison-2.4.1.tar.gz 解壓文件,並將其放入上述自定義的安裝目錄中。
注意:如果沒有編譯安裝此文件,在編譯安裝libpcap時,就會出現 "configure: WARNING: don\'t have both flex and bison; reverting to lex/yacc checking for capable lex... insufficient" 的錯誤提示。
4)打開網址:ftp.gnu.org/gnu/m4/ 下載 m4-1.4.13.tar.gz (1.2MB)軟件包,通過 tar zxvfm4-1.4.13.tar.gz 解壓文件,並將其放入上述自定義的安裝目錄中。
注意:如果沒有編譯安裝此文件,在編譯安裝bison-2.4.1時,就會出現 “configure: error: GNU M4 1.4 is required”的錯誤提示。
然后,依次進入m4-1.4.13,bison-2.4.1,flex-2.5.35,libpcap-1.1.1 並執行以下命令:
# ./configure
# make
# make install
命令完成后,libpcap才能正常使用。
(2)安裝完libpcap后就可以安裝tcpreplay了,從這個鏈接http://tcpreplay.synfin.net/下載tcpreplay-3.4.4.tar.gz軟件包,通過 tar zxvf tcpreplay-3.4.4.tar.gz 解壓文件,並將其放入上述自定義的安裝目錄中。然后進入tcpreplay-3.4.4,並執行以下命令:
# ./configure
# make
# make install
執行完后,tcpreplay 就可以使用了,可以通過命令:tcpreplay –vesion來查看它的版本信息,tcpreplay –h來查看幫助內容。
三.Tcpreplay具體實例
通過一個經過測試的實例來介紹他們的用法。
測試拓撲圖如下圖所示
其中TCPReplay機器的配置為:
OS: Ubuntu9.04內核版本:2.6.28
TCPReplay版本:3.3.2(不同版本命令可能稍有不同,具體請通過MAN查詢)
網卡:Intel e1000e 雙千兆
PCAP文件:test.tcpdump
測試第一步:預處理生成Cache,命令為
tcpprep -a client -i test.tcpdump -o test.cache
這條命令將PCAP文件分成客戶端和服務端,默認為客戶端。發送時packet將分別從客戶端和服務端發出。
測試第二步:重寫IP地址和MAC地址,命令為:
tcprewrite -e 192.85.2.2:192.85.1.2 --enet-dmac=00:15:17:2b:ca:15,00:15:17:2b:ca:14 --enet-smac=00:10:f3:19:79:87,00:10:f3:19:79:86 -c test.cache -i test.tcpdump -o 1.pcap
這條命令將eth0設為客戶端接口,eth1設為服務端接口,重寫了IP和MAC,可通過wireshark等工具打開1.pcap,查看修改是否成功,其中IP地址誰在前,默認誰為服務端,其中IP/MAC都要驗證正確輸入,否則在重放過程中會出錯。
測試第三步:重放packet,首先為了獲取更高的發送速度,可以把文件放到/dev/shm目錄下,最高速度有1倍左右的加速。重放命令為:
tcpreplay -i eth0 -I eth1 -l 1000 -t -c /dev/shm/test.cache /dev/shm/1.pcap
命令分析:-i后面參數為主網卡/服務器網卡, -I后面參數為次網卡/客戶端網卡; -l 后面的參數為播放次數,-t表示盡可能的快 –c后面緊跟着兩個參數分別為.cache和.pcap。這條命令將文件以最高速率循環發送1000次。上述步驟通過測試,保證能夠通過。
" >
sharenet