Получение IPv6 адреса с помошью EUI-64
Механизм EUI-64 позволяет хосту в IPv6 самостоятельно генерировать себе идентификатор интерфейса – то есть вторую половину IPv6 адреса. Перед прочтением этой статьи следует ознакомиться со структурой IPv6 адреса, так же, рекомендуется прочесть материал по автоматической конфигурации адресов в IPv6.
Когда устройство получает адрес в процессе автоматической конфигурации (SLAAC), оно получает не непосредственный готовый IP адрес, состоящий из 128 бит, а только префикс и сеть. Например, оно может получить следующую информацию:
Видно, что мы знаем только сеть, в которой находимся, а не получаем IP адрес полностью. Оставшиеся 64 бита (справа) устройство заполняет самостоятельно либо случайными числами, либо с помощью алгоритма EUI-64.
EUI-64
64 бита для идентификатора интерфейса формируются на основании MAC адреса устройства. MAC адрес состоит из 48 бит. Для получения из него 64-битного идентификатора, выполняется следующий алгоритм:
Пример
Устройство получило в процессе автоконфигурации информацию о том, что оно находится в сети 2001:0DB8:0001:0001::/64. Идентификатор интерфейса строится на основании MAC адреса. Допустим, MAC у устройства 1234.5678.9ABC. По приведённому выше алгоритму, адрес делится на две части (1234.56 и 78.9ABC), между ними вставляется FFFE – получаем адрес 1234:56FF:FE78:9ABC. В соответствии с третьим шагом, нам надо поменять седьмой бит. Каждая шестнадцатеричная цифра – это 4 бита, переведём первые две цифры (12) в двоичный вид, получится 0001 0010. В этой последовательности седьмой бит «1» поменяем на противоположный, получится 0001 0000, что соответствует шестнадцатеричным цифрам 10. Вернем цифры на место и получим готовый идентификатор интерфейса по EUI-64 – 1034:56FF:FE78:9ABC. Этот идентификатор вместе с полученной сетью и станет адресом нашего устройства в результате автоконфигурации. Итоговый адрес 2001:0DB8:0001:0001:1034:56FF:FE78:9ABC/64.
IPv6-адреса через EUI-64: Точки над i
В этой небольшой статье (ещё раз) объясняется, зачем в IPv6 адреса генерируются таким странным, на первый взгляд, образом.
Начнём с добавления FFFE.
MAC-адреса. Используются во многих протоколах (почти все IEEE 802-точка), в том числе в 802.3 (aka Ethernet) и 802.11 (aka WiFi). 48 бит, шестнадцатеричный формат, все дела.
IEEE считает, что название MAC-48 уже не отражает сути, поэтому правильно говорить «EUI-48».
Кроме 48-битных идентификаторов используются и 64-битные, т.н. EUI-64. Примеры протоколов: FireWire, ZigBee, 802.15.4, 6LoWPAN и, ожидаемо, IPv6.
Плюсы? Например, больше адресов (48 бит кончатся к 2100, бида-бида), а ещё можно включить EUI-48 как подмножество.
Собственно, первый шаг не имеет к IPv6 никакого отношения. IEEE заранее зарезервировал EUI-64 вида [24 бит] FF FE [24 бит] под адреса, полученные из EUI-48. Отсюда и механизм генерации: распилить MAC пополам и между половинками записать FFFE.
Таким образом, на шаге 1 мы просто делаем из EUI-48 (читай, MAC) более длинный EUI-64, который и используется в IPv6.
Шаг 2 – инверсия бита
И снова экскурсия в MAC-адреса. Возьмём двоичное представление адреса. Нам важен первый байт, а точнее – младший и следующий за ним биты. Поскольку по сети они будут передаваться задом-наперед, их с одинаковым успехом можно называть «первый» и «второй», либо «седьмой» и «восьмой».
За картинку спасибо Wikipedia
Самый младший бит зовётся Individual/Group, он же Multicast. Если он равен 0, то адресат – узел. Если 1 – то кадр с таким адресом назначения по умолчанию флудится на все порты.
Адреса 01:00:00:00:00:01 и 03:12:34:56:78:90 – multicast. На узлы их назначать нельзя.
Соседний бит – Unique/Local. Определяет, считается ли этот адрес уникальным или локальным (читай: его придумал местный админ). Если бит равен 0, то адрес по идее соответствует какой-либо организации (список, например). Если 1 – скорее всего, сами придумали.
Адрес 02:00:00:AB:CD:EF мы придумали сами (U/L бит равен 1), а вот адрес 04:DA:D2:AB:CD:EF, наиболее вероятно, принадлежит какой-то железке от Cisco.
Почти все уникальные MAC-адреса будут иметь первый байт, кратный 4 (04, 08, 0С, 10, 14 и т.д.). У придуманных адресов, соответственно, чётный, но не кратный 4, то есть 02, 06, 0A и так далее.
Классно, но зачем инвертировать бит U/L?
А это как раз для удобства.
Возьмём два роутера. Один постираем обычным порошком будет использовать уникальный MAC, который ему достался в наследство от дедушки-Xerox, а на другой мы назначим свой «блатной» MAC-адрес согласно воле левой пятки админа.
Включаем IPv6 на интерфейсе и чувствуем разницу:
Из-за лишнего хекстета админ первого роутера всё время матерился набирал руками больше символов и вынужден был выйти на пенсию по состоянию здоровья из-за истирания кончиков пальцев об клавиатуру, а второй админ жил долго и счастливо.
Как видим, благодаря инвертированию бита на втором роутере в адресе «сокращается» дополнительный хекстет. Уникальным адресам от инверсии обычно ни жарко, ни холодно, потому что они крайне редко бывают «красивыми». А вот локально назначаемые MAC-адреса позволят таким образом генерировать более удобные IPv6-адреса.
Резюмируя, в IPv6 для получения идентификатора интерфейса MAC-адрес сначала преобразуется к EUI-64 (распил пополам, между половинками вставляется FFFE), а затем для нашего же удобства инвертируется U/L-бит. И теперь понятно, зачем.
Ложка дёгтя:
Механизм получения адреса по EUI-64 можно ещё назвать «NSAкина радость»: в любой сети независимо от префикса он будет давать один и тот же достаточно уникальный идентификатор, по которому легко будет проследить перемещение устройства. Поэтому, приватности ради и безопасности для, современные ОС на конечных устройствах генерируют адреса случайным образом.
IPv6 хоть и кажется на первый взгляд пришельцем из космоса, на самом деле является достаточно логичным и даже, о чудо, удобным. Надеюсь, изложенная информация была полезной. И если звёзды сойдутся нужным образом, а лень самопобедится, я постараюсь написать ещё статей на тему IPv6.
Eui 64 mac адрес
Generate randomized, strong, secure passwords.
Convert IPv4 CIDR notation.
Convert IPv6 CIDR notation.
Convert a mac address between integer, hexadecimal, dot notation and more
Convert IP addresses to decimal format, integer format, and more!
Convert between unix timestamp and datetime formats.
MAC Address Converter
Convert a mac address between integer, hexadecimal, dot notation and more!
EUI-48
EUI-64
Other Info
Media Access Control (MAC) address
Identifier given to a network interface that has been attached to a physical network segment. Each network interface has a unique MAC address. These addresses are used in many modern technologies, such as Ethernet and WiFi.
Notation conventions for MAC addresses vary, most of which are covered within this tool. The most common notations are hexadecimal notation and bit-reversed notation, both of which format the MAC address in 6 groups of 2 hexadecimal digits.
EUI-48
IEEE global identifier standard that is associated with 48-bit MAC addresses. These identifiers consist of 24-bits for the organization identifier, and 24-bits for the extension identifier. EUI-48 replaces the older term «MAC-48».
EUI-64
IEEE global identifier standard associated with 64-bit MAC addresses. These identifiers consist of 24-bits for the organization identifier, and 40-bits for the extension identifier.
Форматы адресов IPv6
Идентификатор интерфейса и EUI 64
| Тип адреса | Исходный вид | Отображение в EUI 64 |
|---|---|---|
| EUI 48 | xx-yy-zz-ww-vv-tt | xx-yy-zz-FF-FE-ww-vv-tt |
| MAC 48 | xx-yy-zz-ww-vv-tt | xx-yy-zz-FF-FF-ww-vv-tt |
То есть между OUI и добавочным идентификатором возникают еще два байта с определенными значениями: FF-FE в случае EUI-48 и FF-FF в случае MAC 48. Например, из EUI-48 02-35-AB-00-64-C1 получится такой EUI 64: 02-35-AB-FF-FE-00-64-C1 (добавочные байты подчеркнуты).
Чтобы разрешить это затруднение, нам надо вспомнить, что мы знаем об адресе MAC 48, он же EUI 48. Такой адрес обладает определенной структурой, и, к нашему счастью, она сохранилась в EUI 64 без изменений, с точностью до длины поля «добавочный идентификатор «, как это показано на рис. 2.5.
Окончательное требование таково: идентификатор интерфейса в адресе IPv6 обязан отвечать модифицированному формату EUI-64. Это правило распространяется на все индивидуальные адреса IPv6 кроме блока ::/3, зарезервированного для особых целей [§2.5.1 RFС 4291].
Тогда аналогичный рецепт для EUI 48 ( MAC 48) может быть комбинацией двух уже известных нам шагов: сначала от EUI 48 к EUI 64, а затем от EUI 64 к IPv6:
а)вставить между третьим и четвертым байтами EUI 48 (то есть между OUI и добавочным идентификатором) последовательность двух байтов FF-FE
а)инвертировать бит U/L;
б)присоединить спереди префикс подсети.
Вот несколько примеров прямого преобразования:
Возможен и обратный анализ :
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
🔥 Популярное
Настройка Site-To-Site IPSec VPN на Cisco
Настройка GRE туннеля на Cisco
Cisco ASA 5506-X: интерфейс BVI
Как скачать и установить Cisco Packet Tracer
👌 Похожее
Устранение неисправностей EtherChannel
Как настроить IPSec VPN между Cisco ASA и брандмауэром Palo Alto
Настройка интерфейсов коммутатора Cisco
Устранение неисправностей в BGP – часть 2
Настройка IPv6 с EUI-64 на Cisco
Часть 2. Extended Unique Identifier
Второй метод, который мы можем использовать для настройки адреса, называется EUI-64 (расширенный уникальный идентификатор). Он может быть использован для того, чтобы заставить роутер генерировать свой собственный идентификатор интерфейса вместо того, чтобы вводить его самостоятельно.
Онлайн курс по Кибербезопасности
Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
Вот что мы сделаем, чтобы заполнить недостающие биты:
Например, если мой MAC-адрес 1234.5678.ABCD тогда, после преобразования идентификатор интерфейса получиться:

Выше вы видите, как мы разделяем MAC-адрес и помещаем FFFE в середину. «Инвертирование 7-го бита» не является заключительным шагом. Для этого вам нужно преобразовать первые два шестнадцатеричных символа первого байта в двоичный, найти 7-й бит и инвертировать его. Это означает, что если это 0, то вам нужно сделать его 1, а если это 1, то он должен стать 0.
7-й бит представляет собой «универсальный уникальны» бит. По умолчанию в MAC-адресе этот бит всегда будет установлен в 0. При изменении MAC-адреса этот бит должен быть установлен на 1. Обычно люди не меняют MAC-адрес этого роутера, что означает, что EUI-64 будет самостоятельно менять 7-й бит с 0 на 1. Вот как это выглядит:

Мы берем первые два шестнадцатеричных символа первого байта, которые являются «12», и преобразуем их обратно в двоичный код. Затем мы инвертируем 7-й бит от 1 до 0 и снова делаем его шестнадцатеричным.
Так что на самом деле мой идентификатор интерфейса EUI-64 будет выглядеть следующим образом:

Теперь давайте взглянем на конфигурацию EUI-64 на роутере! Я буду использовать 2001:1234:5678:abcd::/64 в качестве префикса:
В этом случае настроен роутер с префиксом IPv6 и с использованием EUI-64 в конце. Именно так мы можем автоматически генерировать идентификатор интерфейса, используя mac-адрес. Теперь взгляните на IPv6-адрес, который он создал:
Видите эту часть C000:18FF:FE5C:0? Это MAC-адрес, который разделен на 2, FFFE в середине и «2» в «C200» MAC-адреса были инвертированы, поэтому теперь он отображается как «C000». Когда вы используете EUI-64 на интерфейсе, который не имеет MAC-адреса, то он выберет MAC-адрес самого низкого нумерованного интерфейса на роутере.
При использовании EUI-64 вы должны ввести 64-битный префикс, а не полный 128-битный IPv6 адрес. Если вы сделаете это, вы не получите ошибку, но Cisco IOS будет только сохранять 64-битный префикс, и в любом случае сгенерирует идентификатор интерфейса.
Скорее всего вы, вероятно, не будете использовать EUI-64 на роутере для настройки интерфейса, но это очень полезный метод для обычных хостов, таких как компьютеры windows, linux или mac. Вы, возможно, настроите IPv6-адрес вручную на интерфейсе вашего роутера или используете метод автоконфигурации, такой как DHCP или SLAAC.
Этот адрес называется локальным адресом связи (link-local address), и он имеет некоторые специальные цели для IPv6.
Каждое устройство с включенным IPv6 автоматически генерирует локальный адрес связи. Эти адреса являются одноадресными, не могут быть маршрутизированы и используются только в пределах подсети, поэтому они называются «link-local».
Некоторые протоколы используют локальные адреса связи вместо глобальных одноадресных адресов, хорошим примером является NDP (Neighbour Discovery Protocol), который используется для обнаружения MAC-адресов других устройств IPv6 в подсети (NDP заменяет ARP для IPv4).
Протоколы маршрутизации также используют эти локальные адреса связи для установления соседних областей, а также в качестве следующего перехода для маршрутов. Мы увидим это, когда будем говорить о маршрутизации IPv6.
Адресное пространство FE80:: / 10 было зарезервировано для link-local, которые охватывают FE8, FE9, FEA и FEB. Однако RFC, описывающий link-local, утверждает, что следующие 54 бита должны быть нулями, поэтому link-local всегда будут выглядеть так:

link-local всегда будет начинаться с FE80:0000:0000:0000, а ID можно настроить с помощью различных методов. Роутеры Cisco будут использовать EUI-64 для создания идентификатора интерфейса, в то время как другие операционные системы, такие как Microsoft, используют случайный метод для создания идентификатора интерфейса. В приведенном ниже примере вы можете видеть, что EUI-64 был использован для создания link-local:
Когда вы настраиваете IPv6-адрес на интерфейсе (глобальный одноадресный или уникальный локальный) или когда вы включаете IPv6 на интерфейсе, вы можете сделать это следующим образом:
Использование команды ipv6 enable роутеру создать link-local адрес.
По умолчанию Cisco IOS будет использовать EUI-64 для создания link-local адреса, но вы также можете настроить его самостоятельно. Просто убедитесь, что адрес начинается с FE80:: / 10 (FE8, FE9, FEA или FEB). Вот как вы можете настроить link-local адрес:
Просто используйте ключевое слово link-local, чтобы сообщить роутеру, что это должен быть адрес link-local. Давайте проверим это:
Помимо link-local адресов существует еще один тип адресации, который мы должны обсудить, и это multicast.
Я надеюсь, вы обладаете званиями об одноадресных и широковещательных доменах. Когда хост отправляет широковещательную передачу, все остальные устройства в подсети получат ее независимо от того, хотят они этого или нет. Отправка широковещательных сообщений очень неэффективна, и они были удалены из IPv6.
Многоадресная рассылка также используется для отправки чего-то с одного хоста на несколько приемников, но разница заключается в том, что многоадресный трафик заканчивается только на хостах, которые хотят его получить. Каждый, кто прослушивает определенный адрес многоадресной рассылки, получит эти пакеты. Это просто как радиостанция, если вы хотите слушать. вы должны настроиться на нужную частоту.
IPv6 использует многоадресную рассылку по многим причинам. Узлы IPv6, которые хотят отправить что-то всем узлам, работающим под управлением IPv6, могут использовать адрес многоадресной рассылки FF02::1. Все, у кого включен IPv6, слушают этот адрес.
Когда роутер IPv6 хочет отправить что-то всем другим роутерам IPv6 (но не хостам!) он может отправить его в FF02:: 2.
Протоколы маршрутизации также используют многоадресные адреса. Например, EIGRP уже использует виде FF02::A и OSPF использует виде FF02::5 и виде FF02::6.
Многоадресный трафик маршрутизируется, но часть трафика должна оставаться в пределах подсети. Если это так, то эти адреса будут иметь link-local область, и они не будут перенаправляться роутерами из одной подсети в другую.
Диапазон FF00:: / 8 был зарезервирован для многоадресной рассылки IPv6, в то время как диапазон FF02::/16 зарезервирован для многоадресных адресов link-local области. На роутере Cisco вы можете видеть по интерфейсу, к которому многоадресные адреса роутер прослушивает:
Этот конкретный роутер прослушивает адреса многоадресной рассылки «все хосты IPv6» и «все роутеры IPv6». Как только вы настроите OSPF или EIGRP для IPv6, вы заметите, что интерфейс присоединится к соответствующим адресам многоадресной рассылки.
Третий адрес, который у нас есть (FF02::1:FF00:1), называется адресом многоадресной рассылки запрошенного узла. Он используется для обнаружения соседей.
Многоадресный адрес запрашиваемого узла основан на одноадресном IPv6-адресе хоста, а если быть более точным. последние шесть шестнадцатеричных символов одноадресного адреса. Все хосты, имеющие одинаковые 6 шестнадцатеричных символов в своем одноадресном IPv6-адресе, в конечном итоге получат один и тот же адрес запрашиваемого узла.
Когда вы отправляете что-то на этот адрес запрашиваемого узла, все хосты с одним и тем же адресом получат пакеты. Это что-то вроде многоадресного адреса «все хосты IPv6», но на этот раз у нас есть отдельная комната, где единственными членами являются VIP-персоны, которые разделяют одни и те же последние 6 шестнадцатеричных символов.
Все адреса запрашиваемых узлов начинаются с FF02::1:FF, поэтому они выглядят следующим образом:

Когда мы записываем link-local адрес полностью, это выглядит так:
Возьмите последние 6 шестнадцатеричных символов из этого адреса:
И поместите их за префиксом адреса запрашиваемого узла, чтобы получить полный адрес запрашиваемого узла:
Мы можем удалить некоторые нули, чтобы сделать его короче, и это будет выглядеть так:
Полный курс по Сетевым Технологиям
В курсе тебя ждет концентрат ТОП 15 навыков, которые обязан знать ведущий инженер или senior Network Operation Engineer





