Подмена / изменение IP-адреса для тестирования на локальной машине - PullRequest
3 голосов
/ 27 мая 2009

Я пытаюсь ограничить трафик на мой сайт, чтобы люди, пытающиеся отсканировать большие объемы данных, через некоторое время были заблокированы. Я должен сделать это на основе IP-адресов входящих запросов. Я полагаю, что у меня написана функциональность ограничения IP, но я нахожусь в тупике, как я могу проверить это. Мне нужно много раз менять свой IP-адрес, чтобы имитировать действительный трафик. Мне также нужно протестировать> 20 разных IP-адресов, поэтому прокси-решение для каждого из них не будет работать для меня.

Я тестирую код на своем локальном компьютере (на котором запущена Ubuntu), чтобы я мог изменить настройки сервера (Apache), если мне нужно для этого теста.

Я нахожусь в корпоративной сети, поэтому я не могу изменить настройки MAC-адреса / ARP, чтобы «переназначить» новый IP-адрес. Я надеялся на что-то вроде локального хоста, меняющего тип IP, поэтому я мог воспользоваться тем, что сервер и клиент были одной и той же машиной.

Кроме того, я пытался избежать изменения кода до его развертывания на рабочих серверах, но это может быть лучшим способом сделать это.

Как мне это настроить?

Ответы [ 7 ]

6 голосов
/ 27 мая 2009

Что вы можете сделать, вместо того, чтобы фактически проверить IP, сделать что-то вроде этого:

$ip = '1337.1337.1337.1337';

Вместо:

$ip = $_SERVER['REMOTE_ADDR']

А затем продолжайте проверять ваш IP-код.

Итак, когда вы закончите, вы можете сделать так, чтобы ваш код переменной $ ip выглядел так:

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

Так что вы можете легко включать и выключать «переключатель отладки»

EDIT:

Или даже сделать IP динамическим:

$ips = Array('192.168.1.220', '120.843.592.86', '256.865.463.563');
$ip = $ips[rand(1,count($ips)-1)];
1 голос
/ 27 мая 2009

Вы можете легко сделать это, выполнив следующую команду в Linux:

ifconfig eth0: 0 127.0.0.2
ifconfig eth0: 1 127.0.0.3
и т.д ... (создание поддельных локальных интерфейсов)

Возможно, вам придется настроить apache для прослушивания этих ips, если вы не прослушиваете 0.0.0.0 (все интерфейсы), тогда вы можете получить прямой доступ к этим IP-адресам.

Если вы хотите использовать другие ips, вы тоже можете легко это сделать, но не забудьте удалить их, как только тесты будут завершены.

Это будет работать только с вашего локального компьютера, на ваш локальный компьютер.

0 голосов
/ 12 апреля 2016

используйте случайную функцию и установите предел для rand (0,255) и строки в формате IP. когда вы звоните, вы получите новый IP-адрес

0 голосов
/ 27 мая 2009

Этот ответ, вероятно, излишний для этого приложения, но мне нравится использовать tcpdump / libpcap , winpcap и необработанные сокеты для генерации трафика. Вы не только имеете большой контроль над объемом, который идет в ваше приложение и из него, вы также много узнаете о том, что, как вы можете ожидать, настройки брандмауэра / фильтра трафика и какие типы трафика блокируются, чего вы не ожидали (или что вы не хотите заблокированы).

0 голосов
/ 27 мая 2009

Вы хотите рассмотреть возможность сделать это на уровне брандмауэра (если не пограничный межсетевой экран корпорации, а брандмауэр SW на вашем хосте). Во многих случаях злонамеренный хост может по-прежнему снижать производительность вашего сайта или влиять на нее, если вы ограничиваете их только на уровне приложения. Они по-прежнему используют сокеты и рабочие потоки веб-сервера, даже если вы в конечном итоге отклоните их. У вас может даже быть некоторый код, который имеет некоторые расходы до проверки IP. На самом деле все зависит от того, насколько легким является ваше приложение, но одно можно сказать точно: брандмауэр, будь то аппаратный или SW, может блокировать недисциплинированных клиентов более эффективно, чем ваше приложение.

0 голосов
/ 27 мая 2009

Я не совсем уверен, что это то, что вы ищете, но мне пришлось подделать свой MAC-адрес, чтобы я мог получить новый IP-адрес, чтобы обойти квоту на загрузку в моем университете. Изменение MAC привело к новому IP. в стандартных репозиториях Ubuntu есть программа под названием «macchanger», просто запустите ее с правильным параметром («-r» для случайного), а затем укажите устройство. вот так.

sudo macchanger -r eth0

Сеть должна быть отключена, когда вы делаете это. Вы можете сделать это, щелкнув правой кнопкой мыши значок сети и сняв флажок «включить сеть».

0 голосов
/ 27 мая 2009

Есть много способов проверить это. Самым простым способом imo было бы создать список записей ARP, где IP-адреса, которые вы олицетворяете, указывают на MAC-адрес сервера. Затем вы можете написать простое приложение, которое устанавливает адрес src для каждого из олицетворенных IP-адресов, подключаться и отправлять любой запрос HTTP, который вы хотите. Сервер должен ответить просто отлично.

...