Вопрос или проблема
Я хочу удалить адрес 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 необходимо выполнить несколько шагов. Этот процесс включает в себя удаление старого адреса и добавление нового, кастомизированного адреса. Давайте рассмотрим эти шаги подробнее.
1. Понимание IPv6 Link-Local адресов
IPv6 Link-Local адреса начинаются с префикса fe80::/64
и используются для связи устройств в пределах одной сети. Они автоматически назначаются интерфейсам по умолчанию, и их можно использовать для связи между соседними устройствами.
2. Получение информации об интерфейсе
Для начала необходимо проверить текущие адреса IPv6, назначенные вашему интерфейсу. Для этого используйте следующую команду:
ip -6 addr show
Эта команда выдаст список всех IPv6-адресов, связанных с интерфейсами, включая их статус (например, активен или неактивен).
3. Удаление старого IPv6 Link-Local адреса
Если вы хотите удалить старый 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
4. Назначение нового IPv6 Link-Local адреса
Теперь, когда старый адрес удален, вы можете добавить новый адрес. Используйте следующую команду для этого:
ip -6 addr add fe80::[ваш_кастомный_адрес]/64 dev eth0 scope link
5. Проверка новой настройки
После выполнения указанных команд проверьте, что новый адрес назначен, а старые адреса успешно удалены, опять же используя:
ip -6 addr show dev eth0
Заключение
Таким образом, вы можете изменить link-local IPv6 адрес вашего интерфейса в Linux, следуя этим шагам. Процесс требует удаления старого адреса и назначения нового, кастомизированного адреса. Имейте в виду, что link-local адреса могут автоматически назначаться с помощью SLAAC, поэтому их вручную менять следует умеренно.
Обязательно проверяйте конфигурацию и убедитесь, что ваше сетевое окружение функционирует правильно после изменений.