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-адресов в моем блоке /48.

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


Jan 17 2013 EDIT:. Я нашел, как это сделать. Ваша версия ядра должна быть не ниже 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
4
задан 13 April 2017 в 15:14
1 ответ

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

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

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

0
ответ дан 3 December 2019 в 04:29

Теги

Похожие вопросы