Структура
48 бит = 6 байт, обычно записывается шестнадцатерично через двоеточие
или дефис: aa:bb:cc:dd:ee:ff.
- Первые 3 байта - OUI (Organizationally Unique Identifier), выдаются IEEE производителям (Cisco, Intel, Dell, ...). По OUI можно найти вендора: https://www.wireshark.org/tools/oui-lookup.html
- Последние 3 байта - серийник от производителя
Специальные значения
ff:ff:ff:ff:ff:ff- broadcast (все на сегменте)01:00:5e:xx:xx:xx- IPv4 multicast (используется протоколами вроде ospf,ip multicast)33:33:xx:xx:xx:xx- IPv6 multicast- Locally administered (второй младший бит первого октета,
U/L bit) - адрес НЕ глобально уникальный, выдан админом локально.
Так делают VM/container managers (Docker, libvirt). Видно по форматам
типа
02:42:...(Docker, 0x02 =…10) или0a:...(0x0a =…10).
ip link и MAC
В Linux MAC живёт «на интерфейсе», не «на IP». Один интерфейс = один MAC (исключение: macvlan/macvtap создают доп. виртуальные карты).
ip -br link
# eth0 UP fe:80:42:... ← lladdr
# lo UNKNOWN 00:00:... ← у loopback нулевой MAC
cat /sys/class/net/eth0/address # тот же MAC через sysfs
Можно сменить (если NIC поддерживает):
sudo ip link set eth0 down
sudo ip link set eth0 address aa:bb:cc:00:11:22
sudo ip link set eth0 up
Зачем менять - MAC spoofing в обход 802.1x, тесты, обход MAC-allowlist у провайдера.
Диапазон видимости MAC
MAC - L2-адрес, виден только в одном broadcast-домене (между коммутаторами). Когда пакет проходит через роутер, его destination MAC на каждом hop'е переписывается на MAC следующего роутера. Source MAC тоже меняется. IP-адреса же сохраняются от первого до последнего hop'а (исключение - nat).