最近在忙着部署
web性能测试的环境后,对IP欺骗进行设置,特地做个笔记,给自己的
学习历程留下点足迹。
一. 什么是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的任意爬取。
网上还有些言论是说使用更多的IP来模拟较真实的用户使用环境,来测试负载均衡技术的处理能力,但是我始终想不明白这跟那个有什么关系,如果服务器可以接受同一IP大量访问,负载均衡不照样起作用,照样可以被测试到吗?(私人观点,意见可以保留)
1. 要有局域网的环境,因为只能设置局域网内的网段;
2. 本地的IP设置不能为“自动获取”,必须指定一个静态IP。
四. 如何设置
第一步:
运行Mercury LoadRunner- Tools-IP Wizard
第二步:
选择create new setting,点击“下一步”
客户端计算机上添加新的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