Що таке MAC-адреса і де вона закінчується
MAC-адреса — це 48-бітна позначка, зашита в мережевий інтерфейс: у радіомодуль Wi-Fi, ethernet-порт, чип Bluetooth. Вона існує, щоб пристрої на одному фізичному сегменті могли відрізняти одне одного, і це вся її робота. Можливих значень близько 281 трильйона — саме тому початковий задум був такий, щоб кожен виготовлений інтерфейс мав назавжди унікальну.
Найважливіше в ній — те, де вона закінчується: на першому ж маршрутизаторі. MAC-адреса потрібна, щоб перенести кадр через один канал; наступний маршрутизатор її зрізає й пише нову для наступного хопа. Вона не подорожує з вашим трафіком, її немає в пакетах, що доходять до сайту, і жоден сайт її прочитати не може. Якщо ви потрапили сюди тому, що десь стверджували протилежне, — те твердження хибне. Вашу MAC-адресу бачать лише пристрої вашої ж локальної мережі та обладнання провайдера на тому кінці лінії.
Звідси випливає й те, що ця сторінка не може прочитати вашу адресу. Усе тут працює з адресою, яку ввели ви, а пошук іде по локальній копії реєстрів IEEE — нікуди нічого не надсилається ані вами, ані нами.
Три реєстри й помилка, якої припускається майже кожен такий інструмент
Усі знають, що перші три байти позначають виробника. До 2014 року це було правдою, а тепер хибне достатньо часто, щоб це мало значення. IEEE продає блоки трьох розмірів:
- MA-L — 24 біти, близько 16,7 млн адрес
- Класичний «OUI». Таких блоків приблизно 37 тисяч, і тримають їх виробники, достатньо великі, щоб потребувати мільйонів адрес.
- MA-M — 28 бітів, близько 1 млн адрес
- Для середніх виробників. Шістнадцять таких вміщуються в один блок MA-L.
- MA-S — 36 бітів, 4096 адрес
- Для малих компаній, поодиноких виробів і OEM-партій. У один блок MA-L їх вміщується 4096.
Ось де пастка. Блоки MA-M і MA-S фізично лежать усередині блоків MA-L, зареєстрованих
на саму IEEE Registration Authority. Тому інструмент, який дивиться лише на перші три байти
адреси дрібного виробника, не помиляється помітно — він упевнено відповідає «IEEE Registration
Authority» або назвою іншого адміністратора, і це виглядає точно як справжній результат.
Правильний пошук перевіряє найдовший префікс першим: 36 бітів, потім 28, потім 24. Саме так
робить ця сторінка, і саме тому MAC, що починається на 70:B3:D5 чи
00:50:C2, отримує тут назву реальної компанії, а деінде — знизування плечима: ці два
блоки є чистим адмініструванням реєстру й містять тисячі окремих дрібних призначень.
Два біти, які відповідають на більшість питань
Два молодші біти найпершого байта несуть зміст, і прочитати їх можна взагалі без бази.
- Біт 0 — окремий чи груповий
- Нуль означає unicast: адреса одного інтерфейса. Одиниця означає multicast — групову адресу, яку слухає кілька пристроїв. Якщо ви знайшли адресу в дампі трафіку і жоден пошук виробника не спрацював, подивіться на цей біт, перш ніж вирішити, що щось зламано.
- Біт 1 — універсальна чи локальна
- Нуль означає, що адреса прийшла з реєстру IEEE й належить виробнику. Одиниця означає локально адміністровану: обрану програмно, ні за ким не зареєстровану й гарантовано відсутню в будь-якій базі виробників. Саме цей один біт відрізняє «ми не знайшли виробника» від «виробника не існує».
На практиці другий біт видно прямо в адресі. Якщо друга шістнадцяткова цифра — 2,
6, A або E, адреса локально адміністрована.
Рандомізовані адреси, які сьогодні є звичайним випадком
Два десятиліття пристрій постійно розголошував свою сталу апаратну адресу — зокрема й тоді, коли просто шукав мережі Wi-Fi. Це означало, що будь-яка крамниця, аеропорт чи перехожий із дешевим приймачем міг записувати той самий ідентифікатор щоразу, коли ви проходили повз. Тепер це працює інакше. Apple почала рандомізувати адресу для сканування мереж 2014 року, а найважливіша зміна сталася приблизно 2019–2020: Android 10 та iOS 14 почали генерувати окрему адресу для кожної мережі, до якої ви під'єднуєтесь, і те саме запропонувала Windows.
Тож коли людина шукає адресу, яку показує телефон у налаштуваннях Wi-Fi, і не отримує нічого — це система працює правильно. Адреса локально адміністрована, вигадана для однієї цієї мережі й часто періодично перегенеровується. Поза тією мережею вона не ідентифікує нічого, у чому й був увесь задум.
Практичні наслідки варто знати, бо вони людей дивують:
- Фільтрація за MAC на домашньому маршрутизаторі стала клопіткішою. Телефон, який ротує адресу, сам себе й заблокує. Більшість пристроїв має перемикач «для цієї мережі використовувати справжню адресу» — саме він вам і потрібен.
- Закріплення адрес у DHCP за MAC ламається з тієї ж причини. Лікується так само.
- Фільтрація за MAC ніколи й не була захистом. Адреси йдуть відкритим текстом у кожному кадрі, а змінити власну — одна команда. Вона відсіює незацікавлених, а не зловмисника.
Що виробник справді каже — і чого не каже
Реєстр називає компанію, яка купила блок адрес. Це виробник мережевого чипа, а він часто не є виробником пристрою. Префікс Intel означає, що десь тут є карта Intel; а «десь тут» — це ноутбук будь-якої марки. Гірше: чималу частину світового заліза складають контрактні виробники, тож їхній префікс не каже рівно нічого ані про тип пристрою, ані про те, чий на ньому логотип.
Там, де виробник таки інформативний, він інформативний дуже: префікс виробника маршрутизаторів, ігрових консолей, принтерів чи гіпервізора одразу каже, з чим ви маєте справу. Тому ця сторінка підписує категорію лише для тих виробників, де відповідь однозначна, і мовчить там, де це було б вгадуванням. Тип пристрою з MAC-адреси не виводиться, а інструмент, який стверджує протилежне, вирішив, що правдоподібна відповідь краща за правильну.
Адреси, які не належать нікому
Частина адрес, які трапляються в дампі трафіку, означені протоколом, а не видані виробнику, — шукати для них виробника марно завжди:
FF:FF:FF:FF:FF:FF- Широкомовна — кожен пристрій сегмента. Саме так ARP узагалі щось знаходить.
01:00:5E:…- Багатоадресна IPv4. Молодші 23 біти скопійовані з групи IP-розсилки, до якої приєднуються.
33:33:…- Багатоадресна IPv6, зокрема виявлення сусідів — відповідник ARP для IPv6. У будь-якому дампі її стільки, що питають про неї постійно.
01:80:C2:00:00:00- Зарезервовано IEEE 802.1 для протоколів мостів, як-от spanning tree. Комутатори такі кадри споживають і ніколи не пересилають далі.
Від MAC до IPv6 і чому цифри змінюються
MAC-адресу можна розтягнути в 64-бітну другу половину адреси IPv6. Спосіб називається EUI-64,
і в ньому два кроки, причому саме на другому всі плутаються: вставити FF:FE
посередині і інвертувати біт universal/local. Через цю інверсію
00:1B:44:11:22:33 стає fe80::21b:44ff:fe11:2233, а не починається з
001b. Цифри справді змінилися, і все правильно.
Розуміти це варто ще й тому, що воно пояснює проблему приватності, яку відтоді полагодили. Побудована так адреса IPv6 містить апаратну адресу, тобто ходила б за ноутбуком у кожну мережу, до якої той під'єднується, — постійний ідентифікатор, видимий кожному сайту. Тому сучасні системи генерують натомість тимчасові випадкові ідентифікатори інтерфейса й ротують їх. Побачити, якими адресами користується ваше з'єднання, можна в тесті IPv6, а бік префіксів у тій самій арифметиці розбирає калькулятор підмереж.