IP地址欺骗/更改为在本地机器上测试

问题描述:

我正在尝试限制流量到我的网站,以便试图屏幕扫描大量数据的人将在一段时间后被阻止。我应该根据传入请求的IP来做到这一点。我相信我已经编写了限制IP的功能,但是我很难理解我如何测试它。我需要能够多次更改我的IP地址,以模拟有效的流量。我还需要测试> 20个不同的IP地址,因此每个代理解决方案都不适合我。IP地址欺骗/更改为在本地机器上测试

我正在测试本地机器上的代码(运行Ubuntu),所以如果需要进行此测试,可以更改我的服务器设置(Apache)。

我背后的公司网络,所以我不能改变MAC地址/ ARP设置“重新分配”一个新的IP。我希望某种本地主机IP更改类型的东西,所以我可以利用服务器和客户端是同一台机器的事实。

此外,我试图避免在将代码推出到生产服务器之前更改代码,但这可能是最好的方式。

我该如何设置?

嗯,你可以做的是不是实际检查IP做这样的事情:

$ip = '1337.1337.1337.1337'; 

相反的:

$ip = $_SERVER['REMOTE_ADDR'] 

,然后继续做你的IP校验码。

所以那么当你做,你可以让你的$ IP的变量的代码如下所示:

//$ip = '1337.1337.1337.1337'; 
$ip = $_SERVER['REMOTE_ADDR'] 

所以,你可以很容易地打开和关闭的“调试开关”

编辑:

甚至使动态IP:

$ips = Array('192.168.1.220', '120.843.592.86', '256.865.463.563'); 
$ip = $ips[rand(1,count($ips)-1)]; 
+2

更好的是,你可以在你的请求中包含一个备用的HTTP头(X-Fake-ip:10.12.23.56),并临时设置你的代码,它是真正的IP(读取$ _SERVER [HTTP_X_FAKE_IP]而不是$ _SERVER [REMOTE_ADDR]) - 这样您仍然可以在客户端交换IP“正在使用中”,而不需要任何复杂的实际IP地址。 – 2009-05-26 22:55:56

+1

您可以设置$ _SERVER ['REMOTE_ADDR']的值。这具有可以在整个脚本中运行的优点,并且可以通过注释/删除一行来删除它。 – 2009-05-27 08:34:40

有很多方法可以测试这个。最简单的方法是创建一个ARP条目列表,其中您正在模拟的IP地址指向服务器的MAC地址。然后,您可以编写一个简单的应用程序,将src地址设置为每个模拟IP地址,连接并发送您所需的任何HTTP请求。服务器应该回复得很好。

我不确定这是不是你要找的东西,但是我必须伪造我的MAC地址,这样我才能在我的大学里得到一个新的IP来绕过下载配额。改变MAC导致一个新的IP。标准的ubuntu存储库中有一个名为“macchanger”的程序,只需使用正确的选项(随机选择“-r”)运行该程序,然后指定设备。像这样。

sudo macchanger -r eth0 

当你这样做时,网络必须被禁用。您可以通过右键单击网络图标并取消选中“启用网络”框来完成此操作。

你要考虑这样一个t防火墙级别(如果不是主机上的防火墙防火墙)。在很多情况下,如果您只是在应用程序级别限制他们,滥用主机仍然可以关闭或影响您网站的性能。即使最终拒绝它们,它们仍然会消耗套接字和Web服务器工作线程上的套接字。你甚至可能有一些代码在IP检查之前有一些费用。这完全取决于应用程序的轻量级,但有一点可以肯定,无论是硬件还是软件,防火墙都可以比应用程序更有效地阻止不守规矩的客户端。

这个答案可能是矫枉过正的这个应用程序,但我喜欢使用tcpdump/libpcapwinpcap和原始套接字来产生流量。您不仅可以很好地控制应用程序的传输量,还可以了解许多您可能需要的防火墙/流量过滤器设置,以及哪些类型的流量会被阻止(您不期望)(或你不想阻止)。

+0

不错,非常强大,但确实非常复杂。 – bortzmeyer 2009-05-27 11:30:00

您可以轻松地做到这一点通过在Linux上运行以下命令:

使用ifconfig eth0的:0 127.0.0.2
使用ifconfig eth0的:1 127.0.0.3
等...(创建虚拟的本地接口)

如果您没有在0.0.0.0(所有接口)上侦听,您可能必须配置apache以监听这些ips,然后才能直接访问这些IP。

如果您想使用其他ips,您也可以轻松地做到这一点,但请记住在完成测试后将其删除。

这只能从本地机器运行到本地机器。

使用随机函数并将限制设置为rand(0,255)和concat string中的IP格式。当你打电话给你时,你会得到新的IP地址