MAC-адрес

Материал из «Знание.Вики»

MAC-адрес (от англ. Media Access Control[1] — управление доступом к среде передачи данных, также аппаратный адрес, физический адрес) — уникальный идентификатор, присваиваемый каждому сетевому адаптеру или его интерфейсу для связи на канальном уровне сетевой модели OSI. 48-битный MAC-адрес, как правило, назначается производителем оборудования и используется в таких сетевых технологиях, как Ethernet, Wi-Fi, Bluetooth. Он состоит из двух частей: старшие 24 бита — уникальный идентификатор организации (OUI), выдаваемый IEEE, а младшие 24 бита назначаются производителем для каждого устройства. В широковещательных сетях MAC-адрес позволяет однозначно идентифицировать отправителя и получателя кадра канального уровня, что является основой для функционирования протоколов вышележащих уровней, таких как IP.

Формат и структура

Диаграмма, показывающая структуру сетевого адреса MAC-48

MAC-адрес имеет длину 6 байт (48 бит) и состоит из двух логических частей:

  1. Первые 3 байта (старшие 24 бита) — уникальный идентификатор организации (OUI, Organizationally Unique Identifier), выдаваемый IEEE. Значение OUI однозначно определяет компанию-производителя оборудования. Для получения OUI производитель должен зарегистрироваться в IEEE Registration Authority и оплатить соответствующий взнос. IEEE поддерживает публичную базу данных выделенных OUI[2], позволяющую по известному идентификатору определить производителя.
  2. Последние 3 байта (младшие 24 бита) — порядковый номер устройства, назначаемый производителем. Поскольку производитель волен присваивать эти биты по своему усмотрению, единственным требованием является уникальность MAC-адреса для каждого производимого экземпляра оборудования. Обычно производители присваивают эти биты последовательно.

Два младших бита первого байта имеют специальное назначение:

  • Бит 0 (I/G, Individual/Group) — определяет тип адреса:
    • 0 — индивидуальный (unicast) адрес, идентифицирующий единственный сетевой интерфейс;
    • 1 — групповой (multicast) адрес, идентифицирующий группу интерфейсов.
  • Бит 1 (U/L, Universal/Local) — указывает на способ администрирования адреса:
    • 0 — универсальный (глобальный) адрес, назначаемый производителем оборудования;
    • 1 — локальный адрес, назначаемый администратором сети.

Таким образом, фактически для идентификации производителя и устройства доступны только 46 бит.

Уникальность

Теоретически, MAC-адреса должны быть глобально уникальны, что достигается принципом их выделения со стороны IEEE. На практике существуют исключения[3]:

  • Виртуальные машины могут использовать произвольные MAC-адреса из пространства локально администрируемых адресов, при этом полная уникальность не требуется. Виртуальные машины одного гипервизора могут иметь одинаковые MAC-адреса при условии, что они не взаимодействуют напрямую, а только через гипервизор.
  • В редких случаях OUI может выделяться для конкретной архитектуры или протокола, а не для производителя. Например, OUI 00:00:5E используется для групповой адресации в IPv4 поверх Ethernet (RFC 1112). В этом случае производитель оборудования назначает младшие 24 бита по своему усмотрению, возможно не соблюдая строгую уникальность.
  • Существует вероятность непреднамеренного нарушения уникальности вследствие ошибок производителя, однако на практике такие ситуации крайне редки.

В целом, за более чем 40-летнюю историю существования протокола Ethernet принцип глобальной уникальности MAC-адресов продемонстрировал свою состоятельность. Открытый формат идентификатора позволил независимым производителям создавать взаимно совместимое оборудование, а огромное адресное пространство — избегать конфликтов.

Типы адресов

IEEE, являясь регистратором, управляет выделением MAC-адресов нескольких типов[4]:

  • MAC-48 — традиционный 48-битный MAC-адрес. Исторически использовался для адресации аппаратных сетевых интерфейсов (Network Interface Card, NIC) в таких технологиях, как Ethernet, Token Ring, FDDI. Впоследствии его применение расширилось на другие технологии канального уровня — 802.11 (Wi-Fi), Bluetooth, Fibre Channel, ATM и другие.
  • EUI-48 (Extended Unique Identifier) — расширенный уникальный идентификатор, функционально идентичный MAC-48, но предназначенный для более широкого применения, в том числе вне сетевых технологий. EUI-48 рекомендуется для использования в новых приложениях вместо MAC-48. При этом MAC-48 трактуется как частный случай EUI-48, выделенный для сетевых интерфейсов. В контексте сетевых технологий понятия MAC-48 и EUI-48 обычно взаимозаменяемы.
  • EUI-64 — 64-битный расширенный уникальный идентификатор, использующий тот же принцип выделения адресного пространства, что и EUI-48. Значения EUI-64 образуются добавлением двух байт FF:FE в середину значения EUI-48 (для глобальных адресов) или FF:FF (для локальных). EUI-64 используется в таких технологиях, как FireWire, IPv6 (как часть адреса канального уровня), ZigBee, 6LoWPAN.

Адресное пространство EUI-48 содержит 2^48 (более 281 триллиона) уникальных значений, поэтому исчерпание адресов не предвидится в обозримом будущем. По оценкам IEEE, текущего выделенного адресного пространства хватит как минимум до 2100 года.

Применение в сетевых технологиях

MAC-адрес — это основной способ идентификации отправителя и получателя кадра на канальном уровне в широковещательных сетях. Каждый кадр Ethernet содержит 6-байтный MAC-адрес отправителя и получателя. Сетевой адаптер, получив кадр, сравнивает MAC-адрес назначения со своим собственным, и, в случае совпадения, передаёт его на обработку вышестоящему сетевому протоколу. Кадры, предназначенные для других получателей, отбрасываются уже на уровне сетевой карты.

В зависимости от значения I/G бита, MAC-адрес может указывать на[5]:

  • Индивидуальный (unicast) адрес — кадр предназначен для единственного получателя.
  • Групповой (multicast) адрес — кадр будет принят и обработан целой группой получателей, которые подписаны на получение кадров с таким адресом.
  • Широковещательный (broadcast) адрес — частный случай группового адреса, предназначенного для всех узлов сети. В Ethernet широковещательным является MAC-адрес FF:FF:FF:FF:FF:FF.

Важной особенностью MAC-адресов является их плоская структура — все адреса существуют в едином пространстве имён, никак не отражающем топологию сети. Это отличает MAC-адреса от составных иерархических адресов сетевого уровня (таких как IP). MAC-адреса служат для идентификации конечных точек физических соединений и не могут использоваться для маршрутизации трафика между сетями.

MAC-адреса являются адресами канального уровня и не могут использоваться для межсетевой маршрутизации трафика. Для глобальной адресации узлов используются протоколы сетевого уровня (IP). MAC-адреса при этом служат для инкапсуляции IP-пакетов в кадры технологий канального уровня. Для установления соответствия между адресами сетевого и канального уровней применяются специальные протоколы:

  • Address Resolution Protocol (ARP) в сетях IPv4;
  • Neighbor Discovery Protocol (NDP) в сетях IPv6.

С помощью этих протоколов узел может узнать MAC-адрес другого узла, зная его IP-адрес. Для этого отправляется широковещательный запрос, на который узел-владелец искомого IP-адреса отвечает своим MAC-адресом. Полученный MAC-адрес кэшируется в ARP-таблице для дальнейшего использования.

IPv6 отводит младшие 64 бита для идентификатора интерфейса (Interface Identifier), который обычно генерируется автоматически на основе MAC-адреса. При этом MAC-адрес преобразуется в модифицированный EUI-64 по следующим правилам:

  • если MAC-адрес имеет формат EUI-48, то значение 0xFF:0xFE вставляется между OUI и номером интерфейса;
  • если MAC-адрес имеет формат EUI-64, то он используется как есть;
  • инвертируется значение U/L бита.

Применение вне сетевых технологий

Благодаря уникальности и машиночитаемому формату, идентификаторы семейства MAC/EUI нашли применение и вне традиционных сетевых технологий[6]:

  • iButton использует 64-битные идентификаторы для своих микросхем и ключей, следуя тем же принципам, что и EUI-64. Здесь OUI идентифицирует производителя устройства.
  • World Wide Name (WWN) — постоянный глобально уникальный идентификатор устройства хранения в технологиях Fibre Channel и Serial Attached SCSI. WWN является частным случаем EUI-64 и присваивается производителем устройства. Он служит для идентификации подключаемых устройств независимо от изменений их сетевых адресов.
  • Медицинские приборы персонального мониторинга, соответствующие стандарту IEEE 11073-20601, включают EUI-64 в состав уникального системного идентификатора (System ID). Здесь OUI идентифицирует производителя прибора.
  • Цифровые сертификаты X.509 могут включать поле Subject Alternative Name, где в качестве идентификатора устройства указывается MAC-адрес или EUI в текстовом виде.
  • Серверы точного времени Network Time Protocol (NTP) используют MAC-адрес сетевого интерфейса в качестве уникального идентификатора сервера, сообщаемого клиентам.

Представление

Стандартная (каноническая) форма записи MAC-адреса для человека — это 6 групп из двух шестнадцатеричных цифр, разделённых дефисами, например: 01-23-45-67-89-AB. Начальные нули при этом опускаются. Группы передаются слева направо в порядке следования байт в сетевом кадре. Другими употребимыми вариантами разделителей являются двоеточия (01:23:45:67:89:AB) и точки (0123.4567.89AB)[7].

Некоторые сетевые технологии передают биты или байты MAC-адреса в обратном порядке. Например, в Token Ring младший бит каждого байта передаётся первым, а в FDDI — младший байт передаётся первым. Для таких случаев существуют нестандартные форматы записи MAC-адресов с инвертированным порядком бит или байт (например, bit-reversed, non-canonical form). Подобные форматы могут порождать путаницу при восприятии человеком, поэтому по возможности следует придерживаться канонической формы записи.

В сетевых пакетах и программных структурах данных MAC-адрес обычно представляется 6-байтным двоичным числом, например: 0×0123456789AB. В зависимости от применяемого порядка байт (endianness), адрес 01-23-45-67-89-AB может отображаться как 0×0123456789AB (big-endian) или 0xAB8967452301 (little-endian, характерно для процессоров Intel x86).

Для представления EUI-64 обычно используется тот же формат, что и для MAC-48, с добавлением ещё двух байт (например, 01-23-45-67-89-AB-CD-EF). Поскольку EUI-64 семантически является расширением EUI-48, то запись EUI-64 можно рассматривать и как запись EUI-48 с добавочными битами.

Администрирование

В большинстве случаев MAC-адрес назначается устройству при его производстве путём программирования соответствующих микросхем. Такой MAC-адрес называется жёстко заданным (burn-in address, BIA) и сохраняется на протяжении всего срока службы устройства. Уникальность BIA гарантируется производителем за счёт следования принципам выделения адресного пространства IEEE[8].

Жёстко заданный MAC-адрес, однако, не всегда является единственно возможным. Многие драйверы сетевых адаптеров позволяют программно менять используемый MAC-адрес через механизм локального администрирования. Альтернативные MAC-адреса обычно хранятся в энергонезависимой памяти устройства и загружаются при его инициализации. В этом случае драйвер перехватывает запросы к MAC-адресу и подставляет заданное администратором значение вместо аппаратного.

Программное изменение MAC-адреса может применяться в следующих случаях:

  • Виртуальные машины и контейнеры, не имеющие физических сетевых адаптеров, генерируют произвольные MAC-адреса в пространстве локально администрируемых адресов, обычно на основе какого-либо уникального идентификатора (UUID виртуальной машины, хэш-сумма конфигурации и т.п.).
  • Взаимодействие со старым или неправильно сконфигурированным сетевым оборудованием, которое ожидает MAC-адреса определённого вида. Например, некоторые DHCP-серверы отказываются выдавать настройки клиентам с неизвестными MAC-адресами. В этом случае клиент может временно сменить свой MAC-адрес на заведомо допустимый.
  • Замена вышедшего из строя сетевого устройства новым с минимумом перенастройки зависимых узлов. Например, если от коммутатора не требуется запоминание MAC-адресов, то вместо перенастройки всех узлов можно однократно сменить MAC-адрес коммутатора на адрес старого устройства.
  • Анонимизация и защита приватности в недоверенных публичных сетях, таких как общедоступные точки Wi-Fi доступа. Поскольку производители сетевых адаптеров выделяют MAC-адреса последовательно, можно идентифицировать конкретный экземпляр устройства по OUI и порядковому номеру. Использование случайного MAC-адреса из пространства локальных адресов затрудняет прослеживание перемещений устройства по множеству сетей.

Для тонкой настройки политики смены MAC-адресов в Linux предусмотрен специальный файл /etc/systemd/network/00-default.link, позволяющий указать, для каких сетевых интерфейсов следует генерировать случайный MAC-адрес (MACAddressPolicy=random), а для каких использовать аппаратно заданный (MACAddressPolicy=persistent).

Случайные локальные MAC-адреса выбираются из специально выделенного диапазона, чтобы избежать коллизий с реальными глобальными адресами. Первый октет таких адресов всегда равен 0×02, 0×06, 0×0A или 0×0E.

Для устройств интернета вещей (IoT), не имеющих классической операционной системы и управляемых прошивкой, смена MAC-адреса может быть технически невозможна. Например, смартфоны под управлением Apple iOS и Android поддерживают случайные MAC-адреса, а фитнес-трекеры и умные часы — обычно нет.

Безопасность, конфиденциальность

Глобальная уникальность и неизменность MAC-адресов может быть использована для точной идентификации и отслеживания перемещений устройств и их владельцев. Существуют базы данных соответствия OUI и производителей, а также привязки OUI и порядковых номеров к конкретным модификациям устройств. Это позволяет, например, точно определить модель и экземпляр смартфона или ноутбука по его MAC-адресу. Известно, что спецслужбы применяют базы MAC-адресов для оперативного поиска, идентификации мобильных устройств.

Даже при использовании случайных MAC-адресов полная анонимность не гарантирована, поскольку идентификацию устройства можно провести по характерным особенностям его сетевого трафика (вплоть до отпечатков пальцев в стиле взаимодействия с сенсорным экраном). Кроме того, устройства используют для своей идентификации не только MAC-адрес, но и другие уникальные идентификаторы — IMEI, серийные номера, цифровые отпечатки и т.п. Использование произвольных идентификаторов для подключения к публичным сетям может затруднить легитимную идентификацию устройства провайдером услуг или владельцем точки доступа.

Ещё одним аспектом безопасности является возможность подмены MAC-адресов (MAC-spoofing) в целях обхода контроля доступа к сетевым ресурсам[9], организованного на основе фильтрации MAC-адресов. Так как MAC-адреса назначаются уровнем ниже IP, то управление доступом исключительно по MAC-адресам можно легко обойти программной сменой MAC-адреса или созданием кадров Ethernet с любыми значениями адреса отправителя. Поэтому в целях безопасности всегда следует использовать программно реализованные механизмы аутентификации и шифрования (WPA2, 802.1X и т.п.).

Примечания

  1. Касьянова Л. Как поменять MAC-адрес: Windows, Linux, Mac, Android, iOS. iCHIP.ru (6 августа 2018).
  2. About the Registration Authority. IEEE Registration Authority.
  3. Guidelines for Use of Extended Unique Identifier (EUI), Organizationally Unique Identifier (OUI), and Company ID (CID) (PDF). IEEE Standards Association (3 августа 2017).
  4. Standard Group MAC Addresses: A Tutorial Guide (PDF). EEE-SA.
  5. Herrmann J. Generating a New Unique MAC Address (PDF). RedHat P. 58—59 (24 июня 2022).
  6. Guidelines for Fibre Channel Use of the Organizationally Unique Identifier (OUI) (PDF). IEEE-SA.
  7. Configuration Guide for Cisco Secure ACS 4.2. Cisco. Agentless Host Configuration Scenario.
  8. Brandon K. All About MAC Addresses: A Comprehensive Guide. LicenseSpring (12 июля 2024).
  9. MAC spoofing. Kaspersky IT Encyclopedia.

Ссылки