最近在忙着部署web性能測試的環境後,對IP欺騙進行設置,特意作個筆記,給本身的學習歷程留下點足跡。web
一. 什麼是IP欺騙?服務器
作什麼事首先要問個爲何,若是知道爲何了,即便不知道如何作,簡單,google it,答案總會找獲得,google.cn不行,google.com總行,來自全球的搜索結果,總會有幫助。微信
IP spoof即IP 電子欺騙,咱們能夠說是一臺主機設備冒充另一臺主機的IP地址,與其它設備通訊,從而達到某種目的技術。 IP是網絡層的一個非面向鏈接的協議, IP數據包的主要內容由源IP地址,目地IP地址,所傳數據構成,IP的任務就是根據每一個數據報文的目的地址,路由完成報文從源地址到目的地址的傳送。至於報文在傳送過程當中是否丟失或出現差錯,IP不會考慮,那是TCP的事。對IP來說,源設備與目的設備沒有什麼關係,它們是相互獨立的。IP包只是根據數據報文中的目的地址發送,所以藉助高層協議的應用程序來僞造IP地址是比較容易實現的。
網絡
二. 爲何要設置IP欺騙?負載均衡
對於某些服務器,是根據IP來分配資源,當某個IP地址訪問頻繁或者訪問量過大時,服務器會拒絕訪問,或者讓你輸入驗證碼,固然也有多是來避免搜索引擎robot的任意爬取。post
網上還有些言論是說使用更多的IP來模擬較真實的用戶使用環境,來測試負載均衡技術的處理能力,可是我始終想不明白這跟那個有什麼關係,若是服務器能夠接受同一IP大量訪問,負載均衡不照樣起做用,照樣能夠被測試到嗎?(私人觀點,意見能夠保留)性能
三. 設置前的準備工做學習
1. 要有局域網的環境,由於只能設置局域網內的網段;測試
2. 本地的IP設置不能爲「自動獲取」,必須指定一個靜態IP。搜索引擎
四. 如何設置
第一步:
運行Mercury LoadRunner- Tools-IP Wizard
第二步:
選擇create new setting,點擊「下一步」
此時出現的頁面是讓輸入服務器的IP地址,Loadrunner經過該地址更新路由表。
客戶端計算機上添加新的IP地址後,服務器須要將該地址添加到路由表,以便可以識別返回到客戶端的路由。若是服務器和客戶端具備相同的子網掩碼、IP 類和網絡,則不須要修改服務器的路由表。若是客戶端和服務器計算機之間有一個路由器,則服務器須要識別通過該路由器的路徑。確保將如下路由添加到服務器路由表:從 Web 服務器到路由器的路由,以及從路由器到負載生成器計算機上的全部 IP 地址的路由。
第三步:
在輸入web服務器地址的頁面中輸入地址後,直接點擊「下一步」
進入IP添加頁面,點擊「add」進行添加
第四步:
在from ip 輸入框中輸入起始ip,在Number to輸入框中輸入ip地址的位數,輸入正確的子網掩碼,選中「verify that new ip addresses are not already used」,點擊「ok」,此時IP Wizard會自動按照設置生成IP地址,而且將已經佔用的IP列出。
第五步:
確承認用IP地址列表內容後,點擊「ok」,此時IP Wizard提示須要從新啓動計算機,點擊「save as」保存IP列表,點擊「ok」,從新啓動計算機。
注:當保存IP地址列表後,下次啓用IP欺騙時直接選擇load previous setting from.....
第六步:
啓用IP欺騙
選中Tools下的Expert mode,啓動專家模式Expert mode,再點擊Tools下的options,在Genearl選項卡中設置以線程方式或進程方式進行性能測試,這個選項必定要與當前場景的模式相匹配,也就是說使用本地虛擬IP測試時須要選中線程方式,使用負載生成器使用虛擬IP測試時須要選中進程方式。
在controller中,選擇 Scenario-〉Enable IP Spoofer,此項設置容許使用IP欺騙。
第七步:
驗證IP欺騙是否有效
方法一
計算機從新啓動後,在運行行中輸入:CMD,在DOS命令提示符窗口中輸入:IPCONFIG,此時即可看到虛擬的IP地址均已經被啓用;
方法二
在腳本的Action()部分增長以下代碼:
char * ip=lr_get_vuser_ip();
if(ip)
lr_vuser_status_message("The ip address is %s",ip);
else
lr_vuser_status_message("IP spoofing disabled");
而後經過控制器設置並運行場景,日誌中能夠看到IP地址。
第八步:
這一部很重要,若是不作這一步,不少IP地址就被佔用了,可能大家網管跟你鬧上了呵呵。打開IP Wizard,選擇restore original settings釋放全部虛擬IP。
五.誤區及答疑
到如今爲止,IP spoofer設置就了結了,可是最後有些疑問或者叫誤區須要分享一下。
Q/A:
1.本身本地的IP地址不在虛擬IP段內,有影響嗎?
答:沒有
2.是否須要配置多個load generator來對應不一樣的虛擬IP呢?
答:不用,這個過程是generator本身完成的。
3.不一樣的generator是否都須要設置IP spoof呢?
答:Definitely Yes,否則的話不設IP欺騙的那臺只會使用一個本地的IP執行。
4.虛擬用戶數和虛擬IP數量上有什麼關係呢?
答:若是虛擬用戶數大於IP數量時,每一個用戶會獲得不一樣的IP,不然,會有IP重複的現象。
5. 還有別的辦法添加虛擬IP嗎?
條條大路通羅馬,試試這個。
在一臺機上虛擬的IP跨網段的處理,可經過在服務器端添加路由來實現。
例:
服務器IP:192.168.0.1
測試機IP:192.168.0.206
測試機上添加的虛擬IP: 192.168.10.1~128
那麼在服務器端執行如下命令:
route add 192.168.10.0 mask 255.255.255.0 192.168.0.206
===========================
添加微信「zzzmmmkkk」,能夠經過:
1. 請在微信「添加好友」->「搜索公衆帳號」裏查找「zzzmmmkkk」
2. 或者點擊本文右上角按鈕後選擇「關注公衆帳號」
3. 掃描頭像:
zzzmmmkkk,本名趙敏科,6年測試經驗,2年項目及團隊管理經驗,從事過多年功能測試,性能測試及自動化測試,樂於分享。不按期發佈有關測試技術文章,測試經驗分享,測試思考和問題探討。