2009-12-04 2 views
0

Мы встречаем сценарий тестирования, которому необходимо изменить исходный IP-адрес запроса Http для имитации клиентов из разных стран. Знаете ли вы какую-либо помощь по этому инструменту?Как вмешаться с исходным IP-адресом в Windows

И наконец, наш веб-сайт построен с использованием ASP.NET.

Спасибо.

ответ

3

Как указано в ответах на ServerFault question "Are IP addresses trivial to forge", вы не можете легко создавать исходные адреса в протоколе, который требует двухсторонней связи (например, TCP). Обратите внимание, что эта «двухсторонняя связь» требуется на уровне пакета. Вы не можете просто сказать «нет проблем, я хочу отправлять запросы и игнорировать ответы HTTP». Чтобы установить сеанс TCP, вам необходимо получить данные. Лучше всего использовать прокси-сервер.

+0

Таким образом, нет способа подделать IP-адрес, кроме прокси-сервера? – Ricky

+0

В принципе нет. Не тривиальный путь. Если вы не контролируете большое количество маршрутизаторов. –

+0

В справочнике, который вы указали, какой-то парень сказал: «Запрет людей по IP-адресу умеренно эффективен на SF/SO/SU ...». Что означает SF/SO/SU? – Ricky

0

Это невозможно. Потому что, когда вы создаете ip-адрес, ответ никогда не вернется, что требуется для http.

Лучший способ - использовать прокси. См. Также this вопрос об ошибке сервера.

0

Если вы измените IP-адрес источника, это означает, что трафик с вашего веб-сервера не сможет вернуться к клиенту.

Возможно, у вас есть возможность использовать какой-либо фильтр прокси-сервера и/или адреса, чтобы выполнить переназначение, сохраняя при этом возможность двусторонней связи.

+0

Если я не забочусь о получении пакетов, есть ли какой-нибудь инструмент для этого? – Ricky

+0

Без пакетов, идущих в обоих направлениях, запрос никогда не будет отображаться вашим веб-сервером. Сначала необходимо установить TCP-соединение (которое требует двухсторонней связи) до того, как будет сделан запрос HTTP. –

1

Я уверен, если стандартный IP позволяет это сделать, но если вы работаете в лабораторной среде, где вам не нужно подключение к Интернету во время теста, я могу видеть, что это работает при следующих обстоятельствах:

В принципе, я бы установил сетевой интерфейс сервера, чтобы использовать сетевую маску 0.0.0.0 и очистить оставшуюся часть таблицы маршрутизации.

Затем вы можете настроить клиентскую машину на любой IP-адрес, если вы используете сетевую маску 0.0.0.0. И двусторонняя связь должна быть возможна.

Server[1.2.3.4/0] <---> Client[x.x.x.x/0] 

Но, пожалуйста, несите меня. Я не тестировал это, поэтому я мог ошибаться :-)

4

В тестовой среде это обычно не сложно. Сначала прочитайте this SO question о виртуальных сетевых интерфейсах.

Если сервер и клиент находятся на одном компьютере, все, что вам нужно сделать, это выяснить, как заставить ваше клиентское программное обеспечение привязываться к вашему виртуальному интерфейсу. wget, например, имеет опцию --bind-address, чтобы указать, к какому локальному адресу необходимо привязать. Веб-браузеру немного сложнее сделать это; вам может потребоваться просто запустить его в виртуальной машине.

Если ваш сервер и клиент находятся в одной локальной сети, вам просто нужно настроить маршрутизатор с помощью некоторых статических маршрутов на клиентскую машину. В этом случае вам , вероятно, не нужен виртуальный сетевой интерфейс, просто установите статический IP-адрес для вашей клиентской машины; пока шлюз настроен правильно, он должен иметь возможность отправлять пакеты на сервер, и до тех пор, пока маршрут будет настроен правильно, ответы должны найти обратный путь к клиенту.

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

1

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

Server-----Router----Internet 
      /
Test_PC----/ 

В качестве альтернативы вы можете посмотреть в PBR (Policy Based Routing) и на маршрутизаторах вы можете исходные пакеты флагов и изменить источник на лету, так что ваш сервер будет думать, что они приходят от того, где вы хотели бы их приехать из.

Server-------------Router_with_PBR-------------Internet----- PC 
SCR:4.2.2.2  Change SCR:6.6.6.6 to 4.2.2.2    6.6.6.6 

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

Лучше всего использовать прокси-серверы, или если вы ищете долгосрочное решение, тогда настройте сервер (для этого отлично работает) и используйте RDP для тестирования. Я уверен, что вы можете арендовать виртуальный сервер где-то месяц или два.

Смежные вопросы