И статический и IPv6 SLAAC обращается для соединения NW

Я пытаюсь иметь рабочую станцию с (по крайней мере) 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?

1
задан 23 May 2018 в 11:46

1 ответ

Мне удалось решить вопрос самому.

Я наводил справки о различных способах добавить дополнительные адреса к соединению через конфигурационные файлы Администратора сети. Я не мог найти любой способ правильно сделать это, но был параметр конфигурации устаревший для объема 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.

TLDR:

Можно сделать, чтобы Администратор сети выполнил сценарий, расположенный в "/etc/NetworkManager/dispatcher.d /" каталог каждый раз, когда соединение включено щелчком в GUI. Это может служить пост сценарий или любой другой тип TBH и только иметь эффект на единственное соединение, которое выбрано путем соответствия соединению UUID. Этот сценарий может содержать команду, упомянутую в вопросе, и для этого добавить адрес IPv6.

0
ответ дан 8 December 2019 в 00:56

Другие вопросы по тегам:

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