Конвертация MAC в IPv6 по стандарту EUI-64
Допустимые разделители в MAC: ':', '.', '-' или отсутсвие разделителя.
Подсеть указывать не обязательно.
Допустимы любые сокращения.
Ошибка
Произошла ошибка. Проверьте, что длина MAC равна 12 символам или больше. Рекомендую прочитать инструкцию ниже.
Ошибка так же может проиcходить по другим причинам и зависеть не от вас.
Результат
Ваша IPv6 подсеть: | |
Ваш MAC: | |
Результат работы в формате IPv6 EUI-64: |
: |
Как MAC используется в IPv6
IPv6 адреса могут быть статическими и динамическими. Они так же, как IPv4 адреса состоят из части провайдера и хоста. IPv6 адрес, длиною в 128 бит, отдает в распоряжение 64 бита провайдеру и 64 бита хосту.
Один из способов получения части хоста, автоматически, называется EUI-64 и включает в себя MAC устройства.
Конвертация MAC в IPv6
В качестве примера представим, что у нас есть следующий адрес:
- 2001:DB80:3333:4444:0000:0000:0000:0000
Из этого адреса сразу можно убрать часть провайдера т.к. она не участвует в преобразовании. У нас осталась часть хоста, состоящая, без разделителей, из 16 символов (64 бита).
Возьмем, для примера, следующий MAC адрес:
- 00-15-5D-0F-5C-01
MAC адрес состоит, без участия разделителей, из 12 символов (48 бит).
Из-за разной длины адресов он пополняется символами 'FFFE'. Эти символы вставляются по середине MAC адреса:
- 0015:5DFF:FE0F:5C01
Пример выше уже похож на полноценную часть хоста, но нужно сделать еще одну операцию.
Организация, которая выдает MAC адреса, заложила в стандарт понятие универсально и локального адреса. Он подразумевает, что если вы используете MAC выданный их организацией, в 7-ом бите должна быть указана 0. Ели вы назначили этот адрес собственноручно, то в 7-ом бите должна стоять 1. Этот подход так же называется U/L bit (universal/local).
В IPv6 ситуация противоположная. Из-за этого мы должны инвертировать биты (заменить 0 на 1 или наоборот).
Я находил несколько объяснений того почему так нужно делать, самое понятное было следующим: "Значение 0, в 7-ом бите хоста, говорит о выдуманном адресе, а 1 о выданном провайдером. Т.е. биты противоположны тому, что есть в MAC".
7-ый бит находится в 2-ых двух цифрах части хоста. Что бы удобнее было преобразовывать вы можете использовать следующую таблицу:
- Первые две цифры: 00
- В двоичном представлении: 0000 0000
- После замены 7-ого бита 0 на 1 (или 1 на 0): 0000 0010
- Преобразуем обратно в 16-ую систему: 02
Заменим эти значения в части хоста:
- Было: 0015:5DFF:FE0F:5C01
- Стало: 0215:5DFF:FE0F:5C01
- Полный адрес с подсетью: 2001:DB80:3333:4444:0215:5DFF:FE0F:5C01