Назад | Перейти на главную страницу

Linux и IPv6: как привязать к произвольному IPv6-адресу?

Возможный дубликат:
Могу ли я привязать (большой) блок адресов к интерфейсу?

У меня блок / 48 IPv6. Я бы хотел сделать это:

$ wget --bind-address=<1st-ipv6> http://www.some-url.com
$ wget --bind-address=<2nd-ipv6> http://www.some-url.com
$ wget --bind-address=<3rd-ipv6> http://www.some-url.com
etc...

для любого из 2 ^ 80 доступных IP-адресов в блоке my / 48.

Согласно моим тестам, назначение большого количества IP-адресов интерфейсу замедляет работу (с точки зрения HTTP-запросов в секунду). И, очевидно, я не могу назначить миллиарды IP-адресов одному интерфейсу. Есть ли способ указать Linux принимать любой IP-адрес, принадлежащий моему блоку / 48, или изменить wget, чтобы это можно было сделать?


17 января 2013 РЕДАКТИРОВАТЬ: Я узнал, как это сделать. Ваша версия ядра должна быть не ниже 3.3, потому что с этой версии применяется этот патч: http://lists.openwall.net/netdev/2011/11/08/8

Затем вам нужно запустить как root (как сказал Дэвид Шварц):

# ip -6 route add local your_ipv6_block/48 dev lo

Вы должны назначить этот маршрут интерфейсу lo, даже если он не будет исходящим интерфейсом для выхода в Интернет.

Затем вам нужно изменить источники wget. В src / connect.c внутри функции connect_to_ip () после создания сокета добавьте следующее:

setsockopt(sock, SOL_IP, IP_FREEBIND, &v, sizeof(v));

Затем скомпилируйте wget (компилятор может пожаловаться на то, что IP_FREEBIND не определен, как решить эту проблему здесь не рассматривается) и установите его.

Тогда вы сможете успешно:

$ wget --bind-address=<any_ipv6_in_your_block> http://www.some-url.com

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

Это будет делать запросы к веб-серверу и использовать разные IP-адреса клиента для каждого запроса, он также может запрашивать разные страницы в одном и том же соединении, имитируя пользователя, например, переход на страницу входа и вход в систему, затем выход из системы и т. Д.

Он будет работать с IPv4 и IPv6 и настроит для вас IP-адреса, поэтому все, что вам нужно сделать, это указать ему диапазон IP-адресов, URL-адрес и максимальное количество подключений и одновременных подключений, а затем запустить команду.