Я знаю, что инструмент ip позволяет вам привязать несколько адресов к интерфейсу (например, http://www.linuxplanet.com/linuxplanet/tutorials/6553/1/ ). Однако сейчас я пытаюсь создать что-то поверх IPv6, и было бы очень полезно иметь доступ к целому блоку адресов (скажем, / 64), чтобы программы могли выбирать любой адрес из диапазона и привязать к этому. Излишне говорить, что подключение каждого IP-адреса из этого диапазона к интерфейсу займет некоторое время.
Поддерживает ли Linux привязку целого блока адресов к интерфейсу?
Ответы:
Linux 2.6.37 и выше поддерживает это через функцию под названием AnyIP . Например, если я бегу
на машине с Ubuntu 11.04 он будет принимать соединения по любому адресу в сети 2001: db8 :: / 32.
источник
ip route list
илиip -6 route list
добавленный маршрут не виден. Как бы вы перечислили блок адресов AnyIP?Да, Linux поддерживает привязку блока сетевых адресов к сетевому интерфейсу ... но только через интерфейс обратной связи. Так что вы можете сделать это:
И затем сделайте это:
При наличии соответствующих маршрутов это будет делать то, что вы хотите ... для адресов IPv4. Вы спрашивали об IPv6, и у меня нет опыта работы с IPv6, но есть большая вероятность, что он будет работать так же.
Первоначально я читал об этом здесь (в конце статьи). Обратите внимание, что в этой статье также обсуждается, как явно назначить несколько адресов интерфейсу, используя функции CentOS / Red Hat, о которых я раньше не знал.
источник
ip -6 route add local <ip> dev lo
.Итак, я вижу несколько вариантов здесь:
использовать скрипт, чтобы привязать все адреса к интерфейсу индивидуально
направьте блок, который вы хотите, на один адрес вашей машины, а затем попросите эту машину использовать интерфейс pcap для перехвата всего трафика для указанного блока (как если бы это был маршрутизатор) и обработки его.
Можно было бы поэкспериментировать с правилами NAT, чтобы затем переписать блок Ips, который был перенаправлен на одну машину, в один внутренний IP-адрес на этой машине ... но вы все равно получите один внутренний IP-адрес на IP, который вы действительно хотите заплатить. внимание, которое возвращает вас к решению 1.
Если бы я тебя, я бы просто написать небольшой скрипт в варианте 1. Или используйте один из здесь :
источник
Как уже говорили другие, вы можете использовать механизм AnyIP для маршрутизации прибывающих пакетов для всей подсети на интерфейс локального хоста, но имейте в виду, что вам также необходимо настроить маршрутизатор восходящего потока для маршрутизации всех требуемых пакетов на эту машину в первое место. Это можно сделать просто с помощью записей таблицы маршрутизации на маршрутизаторе или через BGP. ARP на самом деле не подходит, учитывая, что ваша машина должна будет ARP для каждого IP в отдельности.
источник
«Anyip», описанный выше, не работал для меня на centos 7. Мне пришлось создать скрипт для ручного создания адресов ipv6 при загрузке. Для этого я добавил следующее в / etc / crontab:
Вот скрипт bash для создания примерно 3000 адресов ipv6:
источник