Также, если вы используете сторонние библиотеки, убедитесь, что у вас есть правильные 32/64-битные двоичные файлы
Это неправильное понимание HTTP. Протокол HTTP основан на TCP . Протокол TCP использует трехстороннее рукопожатие для инициализации запросов.
Излишне говорить, что если вы подмените исходный IP-адрес, вы никогда не пройдете этап синхронизации, и никакая информация HTTP не будет отправлена (сервер не может отправить ее на законный хост).
Если вам нужно протестировать Балансировщик нагрузки IP, это не способ сделать это.
Вы хотите установить исходный адрес, используемый для соединения. Поиск в Google "адрес источника urllib2" дает http://bugs.python.org/file9988/urllib2_util.py . Я не пробовал.
Система, в которой вы работаете, должна быть настроена с IP-адресами, с которых вы тестируете.
Краткое примечание, поскольку я только что узнал об этом вчера:
Я думаю, вы подразумевали, что уже знаете это, но любые ответы на HTTP-запрос направляются на IP-адрес, который отображается в заголовок. Поэтому, если вы хотите видеть эти ответы, вам необходимо иметь контроль над маршрутизатором и настроить его так, чтобы все поддельные IP-адреса направлялись обратно на IP-адрес, который вы используете для просмотра ответов.
Я предлагаю посмотреть, сможете ли вы настроить балансировщик нагрузки, чтобы он s Решение основано на заголовке X-Forwarded-For, а не на IP-адресе источника пакета, содержащего HTTP-запрос. Я знаю, что большинство значительных коммерческих балансировщиков нагрузки имеют эту возможность.
Если вы не можете этого сделать, то я предлагаю вам, вероятно, настроить Linux-сервер с целой кучей вторичных IP-адресов - не беспокойтесь о настройке статические маршруты на LB, просто сделайте ваш Linux-сервер шлюзом по умолчанию для устройства LB.
Вы можете просто использовать псевдоним IP на компьютере с Linux и настроить столько IP-адресов, сколько захотите. Загвоздка в том, что вы не можете предсказать, какой IP-адрес будет отмечен в заголовке IP, если вы не установите его в другую сеть и не установите явный маршрут для этой сети. ie -
current client address on eth0 = 192.168.1.10/24
server-side:
ifconfig eth0:1 172.16.1.1 netmask 255.255.255.0
client-side:
ifconfig eth0:1 172.16.1.2 netmask 255.255.255.0
route add -net 172.16.1.0/24 gw 172.16.1.1 metric 0
Повторите для любого количества подсетей. Перезапустите apache, чтобы установить слушателей на все новые интерфейсы псевдонимов, и все готово.