Маршрутизатор в моей сети передает префикс IPv6, назначенный моим провайдером. Этот префикс динамический, но «довольно липкий».
Я хотел бы, чтобы мои машины автоматически выбирали префикс, объявленный в RA, но объединяли его с указанной пользователем локальной частью, а не генерировали ее случайно или на основе MAC-адреса. Есть ли простой способ сделать это?
Ответы:
Есть два способа сделать это. Один - это легкий путь, а другой - трудный.
Самый простой способ - запустить сервер DHCPv6 в своей сети и назначить адреса хостов каждому устройству самостоятельно. Или позвольте серверу выбрать часть хоста; серверы DHCPv6, которые я видел, сохранят ту же часть хоста, даже если префикс изменится.
ip token
Сложный способ - использовать для установки идентификаторов токенизированных интерфейсов. Это описано как:Причина, по которой это сложный путь, заключается в том, что, хотя Linux включает в себя эту функцию, ни в одном из известных мне дистрибутивов Linux нет поддержки для сохранения такой конфигурации и ее применения во время загрузки, как это делается для адресов, настроенных вручную или через DHCP. Так что это, вероятно, не будет работать очень хорошо для вас, пока какой-то дистрибутив не сделает это.Обратите внимание, что теперь можно настроить токены IPv6 в NetworkManager и systemd-networkd; более свежие ответы содержат конкретные инструкции по настройке.Наконец, если ваш провайдер периодически меняет ваш префикс, рассмотрите возможность использования уникальных локальных адресов в вашей сети. Таким образом, все ваши устройства всегда будут иметь адрес, который никогда не изменится, с которым они могут общаться друг с другом. Некоторые домашние / SOHO-маршрутизаторы с поддержкой IPv6 (такие как OpenWrt) имеют возможность включить ULA во всей домашней сети; если в доме несколько маршрутизаторов, это следует включить на маршрутизаторе, который подключается к провайдеру.
источник
Майкл сделал очень хорошее резюме, и недавний совет plugwash был лучшим, что я смог найти после нескольких часов поиска решения CentOS 7 / RHEL (также systemd и network manager). После привыкания к nmcli (я в основном все еще использовал ifcfg и ip) - я смог успешно применить его.
Но копать глубже в соответствии с https://developer.gnome.org/NetworkManager/stable/settings-ipv6.html NetworkManager напрямую поддерживает идентификаторы интерфейса с токеном IPv6 как свойство (с версии 1.4, август 2016 г. http://news.softpedia.com/ news / networkmanager-1-4-добавления-поддержки-для-установки-ipv6-tokenized-interface-identifiers-507601.shtml ).
Таким образом, вам не нужно настраивать параметры диспетчера сети IPv6 для игнорирования, но вы должны установить параметры
который запишет
IPV6_TOKEN=::2
в / etc / sysconfig / network-scripts / ifcfg-eth0, чтобы пережить перезагрузку. Чтобы немедленно применить это перезагрузите интерфейсисточник
Спасибо Майклу за подтверждение того, что Linux поддерживает эту функцию, и за указание на команду низкого уровня. Этот ответ описывает, как заставить его работать на практике на рабочем столе Debian Stretch (с помощью systemd и network-manager).
Сначала отредактируйте соединение в диспетчере сети и установите игнорирование настроек IPv6.
Теперь создайте файл /etc/NetworkManager/dispatcher.d/pre-up.d/iptoken. Файл должен принадлежать root, права доступа 755 и со следующим содержимым.
Замените eth0 на нужное вам устройство и :: 2 на нужный суффикс.
источник
Под Linux вы можете использовать
systemd-network
.Просто создайте
.network
файл под/etc/systemd/network/somename.network
:вместо того,
e*
чтобы соответствовать всем интерфейсам, начиная сe
, вы можете ввести полное имя интерфейса. Это включает DHCP {v4, v6} и использует в::1
качестве суффикса. Вы можете выбрать любой адрес IPv6, но первые 64 бита должны быть установлены на ноль.После этого включите и запустите
systemd-networkd.service
.источник