Как статический, так и SLAAC IPv6-адрес для подключения к сети

Я пытаюсь создать рабочую станцию ​​с (по крайней мере) 2 адресами IPv6. Один адрес будет статическим адресом IPv6, настроенным вручную, а другой будет автоматически сгенерированным из SLAAC (их может быть больше).

Мне удалось добиться этого через файл /etc/network/interfaces настройка интерфейса на авто, но добавление другого IP-адреса с этой строкой:

up ip -6 addr add 2001:db8::10/64 dev enp0s3

(Умышленно используется адресное пространство документации, а не фактически используемое ULA.)

Теперь я могу получить доступ моя внутренняя инфраструктура с адресом ULA и Интернет с SLAAC. Это прекрасно работает.

Однако я хочу достичь этого с помощью настроек GUI, потому что теперь мне нужно будет создать другое соединение для пользователя на рабочей станции, чтобы он мог переключать соединение по воле пару кликов.

Если я создаю вторичное соединение, оно работает. Когда я создаю вышеописанное соединение, я не могу добавить к нему статический адрес с графическим интерфейсом.

Как бы я мог использовать 2 взаимозаменяемых соединения, с которыми можно было бы получить Auto IPv6-адрес вместе со статическим IPv6 адрес?

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

3 ответа

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

я искал различные способы, чтобы добавить дополнительные адреса для подключения через настройки сетевой менеджер файлов. Я не смог найти какой-либо способ, чтобы сделать правильно, но там был устаревший параметр конфигурации для области IPv6 в файл конфигурации подключения находится в папке [Ф4]. В "адреса" директивы конфигурации, который якобы был использован для создания списка адресов для добавления в интерфейс. Значение должно быть массивом IPv6-адрес структуры, каждый из которых в свою очередь представляет собой структуру из 3 свойств. Массив байтов, содержащий адреса, Тип uint32 число, содержащее маску и еще один байтовый массив, содержащий адреса шлюза. Это описано в "нм" - "настройки" страницы. К сожалению я не смог найти каких-либо примеров в нужный формат и не смог получить эту работу, поэтому я отказался от поиска решения через настройки сетевой менеджер.

затем я посмотрел на возможность запуска пост-скрипты, а еще через диспетчера сети. Это должно быть сделано с помощью скриптов в директории [ф5], но так как он не полностью интегрированы с системой диспетчера и могут быть выявлены несоответствия (по некоторым источникам), я был вынужден продолжать поиски. Вот когда я нашла этот пост! Он объясняет, как можно запускать скрипты с сетью диспетчере встроенный диспетчер. Потом еще проблемы начинают проявляться. Пользовательский диспетчер сценариев, которые должны быть расположены в [ф6] Каталог можно запускать на различных этапах сетевых менеджеров деяния и их выполнение заказа контролируется 2 цифры в начале имени файла, но они не всегда выполняются на данном этапе. Так что если бы у меня был скрипт, который должен выполняться после (или на этапе по сети менеджер), он будет всегда выполнять на "до" фазы сетевой менеджер. Так, соединение зависимости от того, что я бы нажать на кнопку в GUI, менеджер сети будет до конца выполнения скрипта. Это не то, что я искал, потому что я обязан только добавить дополнительный адрес IPv6 к одному из выходов мне надо готовиться, а не отдыхать. Поскольку скрипт будет работать всегда, я должен был найти способ, чтобы определить, какие связи этот скрипт вызывается для, которой "Настройка" страницы пригодился. Это говорит о том, что таможня диспетчер скриптов передаются 2 аргумента (интерфейс/устройство и действие/фаза), но что окружающая среда содержит дополнительные переменные. Одним из которых является "CONNECTION_UUID" переменной. Этот содержит идентификатор uuid подключения этот скрипт вызывается Для и uuid для подключения можно найти в файле конфигурации подключения в "/etc/диспетчер связи/системы связи/ каталог". Итак, в диспетчер скриптов у меня только чтобы проверить, содержит ли переменная uuid для нужного соединения и если это так, только затем выполнить необходимую команду.

пример

файла конфигурации подключения, не требуя дополнительной адресом "в/etc/диспетчер связи/системы связи/regular_connection" :

[Ф1]

особые соединения, требующие дополнительной статический IPv6-адрес на верхней части slaac, то автоматически будут иметь файл конфигурации похожа на обычную, но ее uuid части следует отметить для использования в серверном скрипте. Пример файла конфигурации для ясности целей "/и т. д./диспетчер связи/системы связи/extra_static_ipv6_connection" :

[Ф2]

следующий шаг будет заключаться в создании диспетчер сценариев. Пример диспетчер сценариев "в/etc/networkmanager не диспетчеру.д/99_super_connection_post_up_script":

[Ф3]

теперь можно просто переключить активное соединение в GUI верхнем углу сетевое подключение в выпадающем списке (в Ubuntu 14.04 определенном месте в GUI). Всякий раз, когда "extra_ipv6_con" соединения будут выбраны, после того, как автоматической настройки IPv4 и IPv6, после до/до фазы сети Диспетчер диспетчер скрипт будет работать и дополнительный/статический IPv6-адрес будет назначен интерфейсу. Если какие-либо другие соединения будет нажата, конфигурация сети изменится на выбранный один и диспетчер сценариев будет снова работать, но не имеют никакого эффекта из-за несоответствия в uuid.

номер:

можно у диспетчера сети выполнить скрипт находящийся в "в/etc/networkmanager не диспетчеру.D каталог/" всякий раз, когда соединение включено с нажмите кнопку в GUI. Это может служить пост-скрипт или любой другой ТБХ тип и действует только на одно соединение, выбранное путем сопоставления идентификаторов соединения. Этот скрипт может содержать команды, упомянутые в вопросе, и поэтому добавить IPv6-адрес.

0
ответ дан 8 June 2018 в 14:01
  • 1
    Еще одна проблема возникла. Тот факт, что, хотя протокол IPv6 адреса источника отбора работает очень хорошо (как описано), я думала, что, поскольку статический адрес находится в другой сети и имеет свой собственный шлюз, шлюз должен быть установлен для системы, чтобы узнать как добраться до сети. Когда я посмотрел на выход [Ф1] команды, я увидел, что шлюз по умолчанию на самом деле, по ссылке локальный адрес маршрутизатора, выступающей в качестве шлюза для локальных и глобальных сетей, поэтому в зависимости от адреса источника выбирается уровень IP адрес назначения-это адрес локальной связи, следовательно, он работает, как ожидалось – Girtsd 7 June 2018 в 15:46

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

Я искал различные способы добавления дополнительных адресов к соединению через файлы конфигурации Network Manager. Мне не удалось найти способ правильно сделать это, но в области конфигурации ipv6 в файле конфигурации подключения, расположенном в папке /etc/NetworkManager/system-connections, была устаревшая настройка конфигурации. Директива конфигурации адресов «адресов», которая, как утверждается, использовалась для установки списка адресов для добавления в интерфейс. Предполагается, что это массив массивов адресов IPv6, каждый из которых является структурой из 3-х свойств. Байт-массив, содержащий адрес, номер uint32, содержащий маску и другой массив байтов, содержащий адрес шлюза. Это описано в man-странице «nm-settings». К сожалению, я не смог найти какие-либо примеры требуемого формата и не смог заставить это работать, поэтому я отказался от поиска решения через конфигурацию Network Manager.

Далее я рассмотрел вариант запуска сообщения -up, но при этом используется сетевой менеджер. Предполагается, что это делается скриптами в каталоге /etc/network/if-up.d/, но поскольку он не полностью интегрирован с Network Manager и может выявить несоответствия (по некоторым данным), я был вынужден продолжать искать. Вот когда я нашел этот пост! В нем объясняется, как можно запускать скрипты с помощью Network Manager, созданного диспетчером. Затем появилась еще одна проблема. Пользовательские сценарии диспетчера, которые должны быть расположены в каталоге /etc/NetworkManager/dispatcher.d/, могут быть запущены на разных этапах работы Network Managers, а их порядок выполнения контролируется двумя цифрами в начале имени файла, но они всегда запускаются в данной фазе. Поэтому, если бы у меня был сценарий, который должен быть запущен после (или на старте в соответствии с Network Manager), он всегда будет выполняться на этапе «вверх» в Network Manager. Таким образом, в зависимости от того, какое соединение я нажимаю в графическом интерфейсе, Network Manager завершит запуск скрипта. Это не то, что я искал, потому что мне нужно добавлять дополнительный адрес 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 должна быть указана для использования в сценарии диспетчера. Exmaple конфигурационный файл для ясности "/ 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

Теперь можно просто переключить активное соединение в раскрывающемся списке сетевого подключения верхнего правого угла графического интерфейса (Ubuntu 14.04) местоположение в графическом интерфейсе). Всякий раз, когда будет выбрано соединение «extra_ipv6_con», после получения автоматической конфигурации как IPv4, так и IPv6 будет запущен сценарий диспетчера диспетчера Network Up-up / up, а дополнительный / статический IPv6-адрес будет назначен интерфейсу. Если какое-либо другое соединение будет нажато, конфигурация сети изменится на выбранную, и сценарий диспетчера будет запущен снова, но не будет иметь эффекта из-за несоответствия в UUID.

TLDR: [ ! d8]

В Network Manager можно запустить скрипт, расположенный в каталоге «/etc/NetworkManager/dispatcher.d/» всякий раз, когда соединение разрешено щелчком в графическом интерфейсе. Это может использоваться как сценарий post-up или любой другой тип TBH и влияет только на одно соединение, которое выбирается путем сопоставления UUID соединения. Этот скрипт может содержать команду, указанную в вопросе, и для этого добавить адрес IPv6.

0
ответ дан 17 July 2018 в 13:40

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

Я искал различные способы добавления дополнительных адресов к соединению через файлы конфигурации Network Manager. Мне не удалось найти способ правильно сделать это, но в области конфигурации ipv6 в файле конфигурации подключения, расположенном в папке /etc/NetworkManager/system-connections, была устаревшая настройка конфигурации. Директива конфигурации адресов «адресов», которая, как утверждается, использовалась для установки списка адресов для добавления в интерфейс. Предполагается, что это массив массивов адресов IPv6, каждый из которых является структурой из 3-х свойств. Байт-массив, содержащий адрес, номер uint32, содержащий маску и другой массив байтов, содержащий адрес шлюза. Это описано в man-странице «nm-settings». К сожалению, я не смог найти какие-либо примеры требуемого формата и не смог заставить это работать, поэтому я отказался от поиска решения через конфигурацию Network Manager.

Далее я рассмотрел вариант запуска сообщения -up, но при этом используется сетевой менеджер. Предполагается, что это делается скриптами в каталоге /etc/network/if-up.d/, но поскольку он не полностью интегрирован с Network Manager и может выявить несоответствия (по некоторым данным), я был вынужден продолжать искать. Вот когда я нашел этот пост! В нем объясняется, как можно запускать скрипты с помощью Network Manager, созданного диспетчером. Затем появилась еще одна проблема. Пользовательские сценарии диспетчера, которые должны быть расположены в каталоге /etc/NetworkManager/dispatcher.d/, могут быть запущены на разных этапах работы Network Managers, а их порядок выполнения контролируется двумя цифрами в начале имени файла, но они всегда запускаются в данной фазе. Поэтому, если бы у меня был сценарий, который должен быть запущен после (или на старте в соответствии с Network Manager), он всегда будет выполняться на этапе «вверх» в Network Manager. Таким образом, в зависимости от того, какое соединение я нажимаю в графическом интерфейсе, Network Manager завершит запуск скрипта. Это не то, что я искал, потому что мне нужно добавлять дополнительный адрес 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 должна быть указана для использования в сценарии диспетчера. Exmaple конфигурационный файл для ясности "/ 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

Теперь можно просто переключить активное соединение в раскрывающемся списке сетевого подключения верхнего правого угла графического интерфейса (Ubuntu 14.04) местоположение в графическом интерфейсе). Всякий раз, когда будет выбрано соединение «extra_ipv6_con», после получения автоматической конфигурации как IPv4, так и IPv6 будет запущен сценарий диспетчера диспетчера Network Up-up / up, а дополнительный / статический IPv6-адрес будет назначен интерфейсу. Если какое-либо другое соединение будет нажато, конфигурация сети изменится на выбранную, и сценарий диспетчера будет запущен снова, но не будет иметь эффекта из-за несоответствия в UUID.

TLDR: [ ! d8]

В Network Manager можно запустить скрипт, расположенный в каталоге «/etc/NetworkManager/dispatcher.d/» всякий раз, когда соединение разрешено щелчком в графическом интерфейсе. Это может использоваться как сценарий post-up или любой другой тип TBH и влияет только на одно соединение, которое выбирается путем сопоставления UUID соединения. Этот скрипт может содержать команду, указанную в вопросе, и для этого добавить адрес IPv6.

0
ответ дан 20 July 2018 в 13:44

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

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