Как изменить локальный адрес IPv6 интерфейса в Linux?

Вопрос или проблема

Я хочу удалить адрес IPv6 link-local по умолчанию с интерфейса и заменить его на пользовательский адрес IPv6 link-local?

Можете помочь мне с этим?

Если я присваиваю новый адрес IPv6 link-local, как указано ниже, то интерфейс показывает два адреса IPv6 link-local.
/sbin/ip -6 addr add fe80::ade1:ac14:1334/64 dev eth0 scope link

Я знаю, что следующая команда может удалить старый адрес IPv6 link-local, есть ли другой способ удалить его без указания адреса?
sbin/ip -6 addr del dev eth0.

Адреса IPv6 link-local не гарантируются и не требуют, чтобы они были получены с помощью SLAAC, и даже не обязательно должны быть уникальными, именно поэтому их использование в сценариях маршрутизации всегда требует указания имени интерфейса.

Я обнаружил, что ip -6 addr show возвращает адреса на стандартный выход в формате, который можно напрямую добавлять в команду ip -6 addr del или ip -6 addr add , с добавлением имени интерфейса в качестве dev <if_name>. Это можно легко записать в сценарий с использованием стандартных инструментов разбора текста GNU (sed, awk и т.д.).

# ip -6 addr show ....... 33: eno332: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UNKNOWN qlen 100 inet6 fe80::230:1234:5678:9abc/64 scope link valid_lft forever preferred_lft forever

После этого:

ip -6 addr del fe80::230:1234:5678:9abc/64 scope link dev eno332
ip -6 addr add fe80::f01:3456:789a:bcde/64 scope link dev eno332

IP-адрес обязателен для команды ip -6 a del, поэтому вам следует написать небольшой скрипт для получения адреса IPv6. Исходный адрес link-local содержит MAC-адрес интерфейса в преобразованном формате EUI-64 ID, что означает, что первый байт 7-го бита MAC-адреса дополнен.

Пример:
ip a show enp0s8 вывод команды (ненужные части удалены):

enp0s8: …

link/ether 08:00:27:02:8a:41 brd ff:ff:ff:ff:ff:ff

inet6 fe80::0a00:27ff:fe02:8a41/64 scope link

EUI-64 ID: 08:00:27:FFFE:02:8a:41

Преобразованный EUI-64 ID, дополните 7-й бит: 08 (0000 1000) станет 0a (0000 1010)

Из MAC-адреса вы можете построить исходный IP-адрес link-local, а затем использовать его для удаления этого адреса IPv6.

Ответ или решение

Для изменения ссылки локального IPv6-адреса интерфейса в Linux необходимо выполнить несколько шагов. Этот процесс включает в себя удаление старого адреса и добавление нового, кастомизированного адреса. Давайте рассмотрим эти шаги подробнее.

IPv6 Link-Local адреса начинаются с префикса fe80::/64 и используются для связи устройств в пределах одной сети. Они автоматически назначаются интерфейсам по умолчанию, и их можно использовать для связи между соседними устройствами.

2. Получение информации об интерфейсе

Для начала необходимо проверить текущие адреса IPv6, назначенные вашему интерфейсу. Для этого используйте следующую команду:

ip -6 addr show

Эта команда выдаст список всех IPv6-адресов, связанных с интерфейсами, включая их статус (например, активен или неактивен).

Если вы хотите удалить старый link-local адрес, вы можете использовать следующую команду:

ip -6 addr del fe80::[старая_адреса]/64 dev [имя_интерфейса]

Однако, как вы упомянули, вы хотите удалить адрес без его указания. Для этого можно использовать утилиты обработки текста, такие как awk, чтобы получить адреса динамически. Пример скрипта для удаления старого link-local адреса:

# Получаем старые link-local адреса
OLD_LINK_LOCAL=$(ip -6 addr show dev eth0 | grep 'inet6 fe80' | awk '{print $2}')

# Удаляем старый адрес
if [ -n "$OLD_LINK_LOCAL" ]; then
    ip -6 addr del $OLD_LINK_LOCAL dev eth0
fi

Теперь, когда старый адрес удален, вы можете добавить новый адрес. Используйте следующую команду для этого:

ip -6 addr add fe80::[ваш_кастомный_адрес]/64 dev eth0 scope link

5. Проверка новой настройки

После выполнения указанных команд проверьте, что новый адрес назначен, а старые адреса успешно удалены, опять же используя:

ip -6 addr show dev eth0

Заключение

Таким образом, вы можете изменить link-local IPv6 адрес вашего интерфейса в Linux, следуя этим шагам. Процесс требует удаления старого адреса и назначения нового, кастомизированного адреса. Имейте в виду, что link-local адреса могут автоматически назначаться с помощью SLAAC, поэтому их вручную менять следует умеренно.

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

Оцените материал
Добавить комментарий

Капча загружается...