Я пытаюсь иметь рабочую станцию с (по крайней мере) 2 адресами IPv6. Один адрес был бы статическим вручную настроенным адресом IPv6, и другой будет автоматически сгенерированный от SLAAC (могло быть больше из них).
Я успешно выполнился для достижения этого через /etc/network/interfaces
файл путем установки интерфейса на автоматическом, но добавления другого IP-адреса с этой строкой:
up ip -6 addr add 2001:db8::10/64 dev enp0s3
(Намеренно используемый адресное пространство документации, не на самом деле используемый ULA.)
Теперь я могу получить доступ к своей внутренней инфраструктуре с адресом ULA и Интернету с SLAAC один. Это хорошо работает.
Однако я хочу достигнуть этого с настройками GUI, потому что я должен буду теперь создать другое соединение для пользователя на рабочей станции, так, чтобы он мог включить соединение, будет несколькими щелчками.
Если я создаю вторичное соединение, оно работает. Когда я создаю вышеописанное соединение, я не могу добавить статический адрес к нему с GUI.
Как я пошел бы о наличии 2 взаимозаменяемых соединений, из которых будет иметь Автоматическое приобретение адреса IPv6 вместе со статическим адресом IPv6?
Мне удалось решить вопрос самому.
Я наводил справки о различных способах добавить дополнительные адреса к соединению через конфигурационные файлы Администратора сети. Я не мог найти любой способ правильно сделать это, но был параметр конфигурации устаревший для объема ipv6 в файле конфигурирования соединений, расположенном в /etc/NetworkManager/system-connections
папка. Конфигурационная директива "адресов", которая предположительно использовалась для установки списка адресов для добавления к интерфейсу. Значение, как предполагается, является массивом структур адреса IPv6, которые каждый в свою очередь - структура 3 свойств. Массив байтов, содержащий адрес, uint32 число, содержащее маску и другой массив байтов, содержащий адрес шлюза. Это описано в странице справочника "nm-настроек". К сожалению, я не мог найти любые примеры требуемого формата и не мог заставить это работать, таким образом, я разочаровался в нахождении решения с помощью конфигурации Администратора сети.
Затем я посмотрел на опцию запустить пост скрипты при тихом использовании администратора сети. Это, как предполагается, сделано сценариями в /etc/network/if-up.d/
каталог, но поскольку это не полностью интегрируется с Администратором сети и могло бы показать несоответствия (согласно некоторым источникам), я был вынужден продолжать смотреть. Это - когда я нашел это сообщение! Это объясняет, как можно запустить скрипты с Администратором сети, созданным в диспетчере. Затем другая проблема начинала показывать. Пользовательские сценарии диспетчера, которые, как предполагается, расположены в /etc/NetworkManager/dispatcher.d/
каталог может быть запущен в различных Фазах событий Администраторов сети, и их порядком выполнения управляют эти 2 цифры в начале имени файла, но они всегда выполняются в данной фазе. Таким образом, если бы у меня был сценарий, который, как предполагается, выполняется пост (или в фазе по словам Администратора сети), то она всегда выполнялась бы в фаза Администратора сети. Так, какой бы ни соединение, на которое я нажал бы в GUI, Администратор сети, закончит тем, что запустило скрипт. Это не то, что я искал, потому что я обязан только добавлять, что дополнительный IPv6 адресует к одному из соединений, которые я должен настроить и не остальные. Так как скрипт всегда запускался бы, я должен был найти способ определить, какое соединение этот сценарий требуется, где страница справочника "NetworkManager" пригодилась. Это говорит, что пользовательские сценарии диспетчера передаются 2 аргумента (интерфейс/устройство и действие/фаза), но что среда содержит дополнительные переменные. Один из которых является переменной "CONNECTION_UUID". Это содержит uuid соединения, этот сценарий требуется, и uuid соединения может быть найден в файле конфигурирования соединений в "/etc/NetworkManager/system-connections /" каталог. Таким образом в рамках моего сценария диспетчера я только должен проверить, содержит ли переменная uuid моего желаемого соединения и если так, только затем выполните необходимую команду.
Файл конфигурирования соединений в качестве примера для соединения, не требующего дополнительного адреса "/etc/NetworkManager/system-connections/regular_connection":
[802-3-ethernet]
duplex=full
mac-address=00:00:00:11:11:11
[connection]
id=regular_connection
uuid=12345678-90ab-cdef-0123-4567890abcde
type=802-3-ethernet
[ipv6]
method=auto
[ipv4]
method=auto
Специальное соединение, требующее дополнительного статического адреса IPv6 сверху сгенерированных SLAAC, будет иметь конфигурационный файл подобным регулярному, но uuid часть должна быть известна использованием в сценарии диспетчера. Конфигурационный файл экс-клена в целях ясности "/etc/NetworkManager/system-connections/extra_static_ipv6_connection":
[802-3-ethernet]
duplex=full
mac-address=00:00:00:11:11:11
[connection]
id=extra_ipv6_con
uuid=88888888-4444-4444-4444-cccccccccccc
type=802-3-ethernet
[ipv6]
method=auto
[ipv4]
method=auto
Следующий шаг должен был бы создать сценарий диспетчера. Сценарий "/etc/networkmanager/dispatcher.d/99_super_connection_post_up_script" диспетчера в качестве примера:
#!/bin/sh -e
# Script to add static local IPv6 address when connected to super network
# Runs a single command on appropriate circumstances
# $0 is command. $1 is interface. $2 is action. $UUID is the uuid of current connection.
if [ -z "$1" ]; then
echo "$0: called with no interface" 1>&2
exit1;
fi
# Set reader friendly environment
export IFACE="$1"
# Check for action and on "up" action (post-up) add IPv6 address if connection uuid matches
case "$2" in
up)
if [ "$CONNECTION_UUID" = "88888888-4444-4444-4444-cccccccccccc" ]; then
ip -6 addr add 2001:db8::10/64 dev $IFACE
fi;
;;
*)
echo "$0: called with unknown action \'$2'" 1>&2
exit 1
;;
esac
Теперь можно просто переключить активное соединение в сетевое соединение правого верхнего угла GUI выпадающий список (Ubuntu 14.04 определенное местоположение в GUI). Каждый раз, когда "extra_ipv6_con" соединение будет выбрано после получения автоматической конфигурации и IPv4 и IPv6, post-up/up скрипт диспетчера Администратора сети фазы будет запущен, и дополнительный/статичный адрес IPv6 будет присвоен интерфейсу. Если бы какое-либо из других соединений было бы нажато, конфигурация сети изменится на выбранную, и скрипт диспетчера будет запущен снова, но не иметь никакого эффекта из-за несоответствия в UUID.
Можно сделать, чтобы Администратор сети выполнил сценарий, расположенный в "/etc/NetworkManager/dispatcher.d /" каталог каждый раз, когда соединение включено щелчком в GUI. Это может служить пост сценарий или любой другой тип TBH и только иметь эффект на единственное соединение, которое выбрано путем соответствия соединению UUID. Этот сценарий может содержать команду, упомянутую в вопросе, и для этого добавить адрес IPv6.