duid= и iaid для сетей ipv6

Ответить
ya
^-^
Сообщения: 3145
Зарегистрирован: 16 дек 2021, 19:56

duid= и iaid для сетей ipv6

Сообщение ya »

Статус сети для linux:

Код: Выделить всё

networkctl status
Статус сети для win

Код: Выделить всё

netsh interface ipv6 show address
PowerShell

Код: Выделить всё

Get-NetIPInterface -AddressFamily IPv6 | Select-Object InterfaceAlias, InterfaceIndex
DUID (Идентификатор конкретного интерфейса) можно найти в:

Код: Выделить всё

cat /etc/machine-id
рассчитать IAID (Идентификатор вашего устройства) вручную
Если система не показывает IAID напрямую, полезно знать, что это 4-байтовое число. Обычно оно формируется на основе MAC-адреса сетевой карты.

В Linux (dhcpcd) IAID — это последние 4 байта MAC-адреса.
В Windows IAID — это просто порядковый номер интерфейса.
ya
^-^
Сообщения: 3145
Зарегистрирован: 16 дек 2021, 19:56

Re: duid= и iaid для сетей ipv6

Сообщение ya »

для win

Чтобы более эффективно управлять IPv6 в своей сети, я хочу иметь возможность программно определять пару DUID + IAID для любого сетевого адаптера с поддержкой DHCPv6 на рабочей станции. Эта информация отображается в открытом виде при выполнении команды

Код: Выделить всё

ipconfig /all
результат:

Код: Выделить всё

DHCPv6 IAID . . . . . . . . . . . : nnnnnnnnn
DHCPv6 Client DUID. . . . . . . . : nn-nn-nn-[etc.]
ya
^-^
Сообщения: 3145
Зарегистрирован: 16 дек 2021, 19:56

Re: duid= и iaid для сетей ipv6

Сообщение ya »

Генерация IAID на основе MAC-адреса:IAID обычно создается из MAC-адреса интерфейса. В большинстве случаев IAID — это 4-байтовое число, полученное из MAC-адреса. Например, для интерфейса с MAC-адресом 00:11:22:33:44:55 IAID может быть 0x00112233.

автоматически получить IAID, основанный на MAC-адресе

Код: Выделить всё

ip link show <интерфейс> | awk '/ether/ {print $2}'
Стандартная формула для вычисления IAID из MAC-адреса:

Вставьте ff:fe посередине MAC-адреса (между первым и вторым байтом, или между третьим и четвертым байтом):
MAC: 00:e0:4c:68:4c:2b Преобразование в EUI-64:

00:e0:4c:68:ff:fe:4c:2b

Инвертируйте 7-й бит первого байта (Universal/Local bit). В данном случае первый байт 00 (в двоичной форме 00000000), 7-й бит — это бит с порядковым номером 1 (отсчет с нуля), т.е. он равен 0 — значит ничего менять не нужно.

В результате, получаем 8 байтов: 00:e0:4c:68:ff:fe:4c:2b.

Для IAID обычно берут последние 4 байта. В случае с GUA (Global Unicast Address), IAID — это последние 4 байта (в данном случае 4c:2b), или иногда используют первые 4 байта.


Конкретный пример:
MAC: 00:e0:4c:68:4c:2b
IAID: можно взять как последние 4 байта: 68:4c:2b или первые 4 байта после преобразования, в зависимости от практики.

Итоговая формула (примитивная):
В большинстве случаев, IAID — это последние 4 байта MAC-адреса, либо полученные по формуле EUI-64.

Вариант для автоматического расчёта:

Код: Выделить всё

echo -n 00:e0:4c:68:4c:2b | awk -F: '{print $4$5$6}'
Чтобы перевести шестнадцатеричное значение в десятичное

Код: Выделить всё

hex_value="1a2b"
dec_value=$((16#$hex_value))
echo "$dec_value"
Ответить