昨天剛接到任務平委,要對前置機進行壓力測試画拾。對于測試我還停留在對某個功能啥繁,某個頁面做測試,將這次試驗記錄下來青抛。
在主管和老羽指點后旗闽,決定用tcpreplay來實現(xiàn)數(shù)據(jù)包的重放。大致思路是蜜另,現(xiàn)在前置機上抓一段完整的前置機和讀寫器設備之間通訊的數(shù)據(jù)包适室,通過tcpreplay修改讀寫器的mac地址、ip地址举瑰,再通過回放這段數(shù)據(jù)包捣辆,達到測試效果。(為什么要這么麻煩選擇回放此迅,關鍵是讀寫器在讀寫數(shù)據(jù)時候經(jīng)過所里安全模塊加密汽畴。)
本試驗將數(shù)據(jù)包中前置機的MAC和IP修改為我自己電腦的MAC和IP
讀寫器——MAC:1e:ed:19:27:1a:b3 IP:192.168.8.63
前置機——MAC:00:21:cc:bc:59:3b ?IP:192.168.8.99
我電腦——MAC:e4:a4:71:90:f6:91 ?IP:192.168.8.142
1,數(shù)據(jù)抓取
利用WireShark對數(shù)據(jù)抓取耸序,主管給了我一份抓取好的整袁,貌似數(shù)據(jù)包被他篩選過,只有從讀寫器到前置機這部分數(shù)據(jù)包佑吝。
2,安裝tcpreplay
本來想偷懶绳匀,在win操作系統(tǒng)上芋忿,安裝Cygwin來模擬UNIX命令來安裝它的,后來由于諸多命令缺失疾棵,還是放棄安裝戈钢。
但是,Cygwin安裝時候 如果缺少默寫命令是尔,可以繼續(xù)在安裝包中搜索并添加殉了,例如缺少make,可以這樣拟枚。
回到linux系統(tǒng)上,安裝tcpreplay蜒滩,需要安裝libpcap滨达,可以先通過yum -y install libpcap,然后再進行安裝俯艰。詳見:https://github.com/appneta/tcpreplay
3捡遍,利用tcpprep對數(shù)據(jù)包進行分流
tcpprep在官網(wǎng)(http://tcpreplay.synfin.net/)是這么介紹的。
multi-pass pcap file pre-processor which determines packets as client or server and splits them into creates output files for use by tcpreplay and tcprewrite
個人理解:對多個入口的pcap文件進行預處理竹握,以決定哪些包是發(fā)往client哪些包是發(fā)往server画株,將它們進行切分并輸出文件,以備tcpreplay或tcprewrite使用涩搓。
tcpprep is the pcap pre-processor for?tcpreplayandtcprewrite. The purpose of tcpprep is to create a cache file which is used to "split" traffic into two sides (often called primary/secondary or client/server). If you are intending to use tcpreplay with two NIC's, then tcpprep is what decides which interface each packet will use. By using a seperate process to generate cache files, tcpreplay can send packets at a much higher rate then if it had to do the calculations to split traffic itself.
個人理解:tcpprep是為tcpreplay和tcprewrite的pacp文件做預處理污秆,tcpprep的目的是創(chuàng)建個cache文件,該文件能夠將數(shù)據(jù)包分成兩部分(主/從或客戶機/服務器)昧甘。如果你用一臺雙網(wǎng)卡的電腦并用tcpreplay重發(fā)包良拼,tcpprep能夠決定哪個包從哪個接口出去。通過獨立線程來操作cache文件充边,tcpreplay能夠以更快的速度進行發(fā)包否則的話它需要自己計算來決定如何分包庸推。
它有好幾種模式可選,具體參考:http://tcpreplay.synfin.net/wiki/tcpprep
因為我們這得包都是單向的浇冰,所以這個操作不做也罷贬媒。
tcpprep --auto=bridge --pcap=./b.pcapng --cachefile=./input.cache
4,利用tcprewrite修改目的MAC和IP地址
tcprewrite --enet-dmac=1e:ed:19:27:1a:b3,e4:a4:71:90:f6:91 --enet-smac=e4:a4:71:90:f6:91,1e:ed:19:27:1a:b3 --endpoints=192.168.8.142:192.168.8.63 -i ./b.pcapng -o ./out.pcap -c ./input.cache
5肘习,利用tcpreplay進行重發(fā)包
tcpreplay --intf1=eth0 ./out.pcap
再次開啟wireshark進行抓包际乘,目標地址變?yōu)槲业腎P地址,并且所有包全部發(fā)送過來漂佩。
哈哈脖含,大伙沒猜對,繼續(xù)猜投蝉!