MAC-адрес
MAC-адрес (от англ. Media Access Control[1] — управление доступом к среде передачи данных, также аппаратный адрес, физический адрес) — уникальный идентификатор, присваиваемый каждому сетевому адаптеру или его интерфейсу для связи на канальном уровне сетевой модели OSI. 48-битный MAC-адрес, как правило, назначается производителем оборудования и используется в таких сетевых технологиях, как Ethernet, Wi-Fi, Bluetooth. Он состоит из двух частей: старшие 24 бита — уникальный идентификатор организации (OUI), выдаваемый IEEE, а младшие 24 бита назначаются производителем для каждого устройства. В широковещательных сетях MAC-адрес позволяет однозначно идентифицировать отправителя и получателя кадра канального уровня, что является основой для функционирования протоколов вышележащих уровней, таких как IP.
Формат и структура
MAC-адрес имеет длину 6 байт (48 бит) и состоит из двух логических частей:
- Первые 3 байта (старшие 24 бита) — уникальный идентификатор организации (OUI, Organizationally Unique Identifier), выдаваемый IEEE. Значение OUI однозначно определяет компанию-производителя оборудования. Для получения OUI производитель должен зарегистрироваться в IEEE Registration Authority и оплатить соответствующий взнос. IEEE поддерживает публичную базу данных выделенных OUI[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 и т.п.).
Примечания
- ↑ Касьянова Л. Как поменять MAC-адрес: Windows, Linux, Mac, Android, iOS . iCHIP.ru (6 августа 2018).
- ↑ About the Registration Authority . IEEE Registration Authority.
- ↑ Guidelines for Use of Extended Unique Identifier (EUI), Organizationally Unique Identifier (OUI), and Company ID (CID) (PDF). IEEE Standards Association (3 августа 2017).
- ↑ Standard Group MAC Addresses: A Tutorial Guide (PDF). EEE-SA.
- ↑ Herrmann J. Generating a New Unique MAC Address (PDF). RedHat P. 58—59 (24 июня 2022).
- ↑ Guidelines for Fibre Channel Use of the Organizationally Unique Identifier (OUI) (PDF). IEEE-SA.
- ↑ Configuration Guide for Cisco Secure ACS 4.2. Cisco. Agentless Host Configuration Scenario .
- ↑ Brandon K. All About MAC Addresses: A Comprehensive Guide . LicenseSpring (12 июля 2024).
- ↑ MAC spoofing . Kaspersky IT Encyclopedia.