Как найти MAC‑адрес на Linux
Кратко: в Linux MAC‑адрес можно быстро посмотреть через ip, ifconfig, ethtool или из /sys/class/net; для чужих устройств используйте arp или arping. В статье подробно описаны команды, GUI‑шаги, случаи, когда методы не сработают, чек‑листы для админов и советы по безопасности.

Если вы администрируете Linux‑систему или просто настраиваете домашнюю сеть, иногда требуется узнать MAC‑адрес сетевого адаптера. MAC‑адрес нужен, например, чтобы назначить фиксированный IP в DHCP на основании привязки IP↔MAC, настроить фильтрацию устройств по MAC, проверить Wake‑on‑LAN или инвентаризировать оборудование.
В этой статье собраны все актуальные способы для командной строки и GUI, рекомендации по проверке, способы сбора MAC‑адресов в большом парке машин, а также советы по безопасности и приватности.
Что такое MAC‑адрес
MAC‑адрес (физический или аппаратный адрес) — это уникальный 48‑битный идентификатор сетевого интерфейса. Первые 24 бита обычно указывают производителя (OUI), остальные 24 бита — уникальный идентификатор интерфейса. MAC работает на канальном уровне (Data Link, уровень 2) модели OSI.
Факт: стандартная длина — 48 бит (6 байт), формат обычно отображают как шесть байтов в шестнадцатеричном виде, разделённых двоеточиями: 00:11:22:33:44:55.
Краткое определение: MAC‑адрес — неизменяемый (по умолчанию) идентификатор сетевого интерфейса, используемый в локальных сетях для доставки кадров на уровне L2.
Командная строка: быстрые способы найти MAC‑адрес
Ниже — наиболее распространённые команды. Все примеры выполняйте в терминале.
ip
Команда ip — современный инструмент для работы с сетями. Она заменяет устаревшее ifconfig в большинстве дистрибутивов.
Пример вывода для всех интерфейсов:
ip link showРезультат содержит строки с link/ether, после которых идёт MAC‑адрес:
2: enp3s0: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff Чтобы посмотреть конкретный интерфейс:
ip link show dev enp3s0Примечание: имя интерфейса может быть eth0, enpXsY, wlpXsY и т. д. (предсказуемые имена по systemd).
ifconfig
ifconfig входит в пакет net-tools и на некоторых системах может быть не установлен по умолчанию. Он показывает MAC рядом с меткой ether.
Все интерфейсы (включая отключённые):
ifconfig -aТолько активные интерфейсы:
ifconfigКонкретный интерфейс:
ifconfig enp3s0Вывод выглядит так:
enp3s0: flags=4099 mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:11:22:33:44:55 txqueuelen 1000 (Ethernet) Важно: если ifconfig отсутствует, установите пакет net-tools или используйте ip.
ethtool
ethtool запрашивает параметры физического NIC (скорость, дуплекс, EEPROM и т. д.) и умеет возвращать MAC для некоторых драйверов.
Команда:
ethtool -P enp3s0Пример вывода:
Permanent address: 00:11:22:33:44:55ethtool полезен, когда нужно получить «постоянный» MAC, хранящийся в NIC, особенно если адрес был спуфлен программно.
/sys/class/net
Система Linux хранит атрибуты интерфейсов в sysfs. Это самый надёжный источник текущего MAC‑адреса интерфейса.
Список интерфейсов:
ls /sys/class/netЧтение файла адреса:
cat /sys/class/net/enp3s0/addressВы получите строку вида 00:11:22:33:44:55.
Этот метод работает даже если сетевой стек отключён.
GUI: как найти MAC‑адрес в окружении рабочего стола
Если вы предпочитаете графику, большинство окружений (GNOME, KDE, XFCE) показывают MAC в настройках сети.
Пример для GNOME (Ubuntu и родственные дистрибутивы):
- Откройте «Настройки» → «Сеть».
- В списке интерфейсов нажмите значок шестерёнки (Cog) рядом с нужным подключением.
- В разделе деталей ищите «Аппаратный адрес» или «Hardware Address» — это и есть MAC.
Отличия: в KDE то же самое обычно через System Settings → Network → Connections; названия полей могут отличаться, но смысл тот же.
Как узнать MAC другого устройства в локальной сети
На L2‑сети можно узнать MAC удалённого узла, если он отвечает на ARP‑запросы.
arp
Если устройство уже в ARP‑таблице, покажите её:
arp -n | grep 192.168.1.50Если в таблице нет записи, отправьте одно ICMP‑эхо, чтобы система узнала MAC через ARP:
ping -c1 192.168.1.50
arp -n | grep 192.168.1.50В выводе будет пара IP ↔ MAC.
arping
arping отправляет ARP‑запрос напрямую и полезен, если вы хотите получить ответ от конкретного IP на L2.
Установка:
Debian/Ubuntu:
sudo apt install arpingRHEL/CentOS:
sudo yum install arpingПример использования:
sudo arping -c 1 192.168.1.50Если у вас несколько интерфейсов, укажите отправляющий интерфейс:
sudo arping -c 1 -I enp3s0 192.168.1.50Пример конкретной команды:
sudo arping -c 1 -I enp3s0 192.168.42.133arping полезен в средах, где ICMP‑ping может быть заблокирован, но ARP всё ещё работает.
Когда методы не сработают (контрпример)
- Устройство находится в другой подсети: ARP не пересекает маршрутизаторы, вы не увидите MAC удалённого подсети.
- Адрес программно спуфлен: вывод
ip/ifconfigможет показывать «фейковый» MAC, отличающийся от «permanent» в ethtool. - Интерфейс отключён и не имеет HW‑адреса в драйвере: некоторые виртуальные интерфейсы могут не иметь обычного MAC.
- Пакеты ARP/ICMP блокируются фаерволом: arping/arp не даст ответа.
Альтернативные подходы
- Проверка коммутатора: в управляемых коммутаторах можно посмотреть MAC‑таблицу портов (CLI/SNMP) и найти соответствие порту↔MAC.
- DHCP‑сервер: журналы и лизинги на DHCP показывают привязку IP↔MAC.
- Инвентаризация: системы управления конфигурацией (Ansible, Salt, Puppet) могут собрать MAC автоматически.
Как изменить (спуфить) MAC и сделать изменение постоянным
Коротко: можно временно задать MAC через ip или с помощью macchanger, а для постоянного изменения — конфигурацию NetworkManager, systemd‑networkd или netplan.
Временная смена (до перезагрузки или down/up):
sudo ip link set dev enp3s0 down
sudo ip link set dev enp3s0 address 02:aa:bb:cc:dd:ee
sudo ip link set dev enp3s0 upmacchanger (пакет):
sudo apt install macchanger
sudo macchanger -m 02:aa:bb:cc:dd:ee enp3s0NetworkManager (постоянно для конкретного соединения):
nmcli connection modify "Wired connection 1" 802-3-ethernet.cloned-mac-address 02:aa:bb:cc:dd:ee
nmcli connection up "Wired connection 1"systemd‑networkd или netplan — задаются через конфиги в /etc/systemd/network/ и /etc/netplan/ соответственно.
Важно: изменение MAC может нарушить политики сети, авторизацию по MAC и вызвать конфликты. Используйте сознательно.
Безопасность и приватность
- MAC‑адрес обычно не считается чувствительной личной информацией сам по себе, но в сочетании с другими данными он может идентифицировать устройство и поведение пользователя. Обращайтесь с MAC‑данными осторожно.
- При сборе MAC‑адресов для аналитики или логирования учитывайте локальные требования по защите данных и корпоративные правила.
- В публичных Wi‑Fi сетях некоторые ОС по умолчанию используют рандомизацию MAC для защиты приватности — это нормальная практика.
Примечание: это не юридическая консультация. За юридическими вопросами по GDPR/локальным законам обращайтесь к юристу.
Чек‑лист и роли
Чек‑лист для настольного пользователя:
- Откройте настройки сети и посмотрите «Аппаратный адрес».
- Если есть терминал: выполните
ip link show. - При необходимости — сделайте снимок экрана или запишите MAC.
Чек‑лист для оператора/системного администратора:
- Выполните
ip link showна целевой машине. - Если нужно «постоянное» значение NIC, используйте
ethtool -P. - Для массового сбора — прогоните Ansible playbook, который читает
/sys/class/net/*/address. - Сверьте данные с DHCP/коммутатором по необходимости.
Чек‑лист для инженера безопасности:
- Проверьте, не используются ли спуф‑MAC для обхода политик.
- Убедитесь, что журналы, содержащие MAC, имеют ограниченный доступ.
- Рассмотрите рандомизацию MAC на клиентских устройствах, где это приемлемо.
SOP: собрать MAC‑адреса с парка Linux‑хостов (микро‑план)
- Подготовка: список хостов (IP/имена) и SSH‑доступ.
- Выполните параллельную команду (пример с Ansible):
- hosts: all
gather_facts: no
tasks:
- name: Get MAC addresses
shell: cat /sys/class/net/*/address || true
register: macs
- debug: var=macs.stdout_lines- Соберите вывод в CSV: hostname, интерфейс, mac, last_seen.
- Сверьте с DHCP и таблицей коммутатора.
- Поместите CSV в защищённое хранилище и обновите CMDB.
Шаблон CSV:
hostname,interface,mac,last_seen
server01,enp3s0,00:11:22:33:44:55,2025-12-01T12:00:00ZКритерии приёмки
- Для каждой машины в выборке найден хотя бы один MAC‑адрес.
- Найденный MAC совпадает с записью в DHCP/коммутаторе для данного IP/порта.
- Записи в инвентаре имеют отметку времени и источник (команда/журнал).
Тест‑кейсы и приёмочные проверки
- Локальный интерфейс: выполнить
cat /sys/class/net/enp3s0/addressи проверить формат (6 байтов). - Виртуальная сеть: убедиться, что
ip link showвозвращает значение для veth/virtio. - ARP для удалённого узла в той же подсети:
arp -nпослеpingпоказывает MAC. - Спуфинг: после изменения MAC командой
ip linkпроверяем, чтоip linkиcat /sys/class/net/.../addressпоказывают новый адрес.
Ментальные модели и эвристики
- Если устройство в той же L2‑сети — используйте ARP/arping. Если в другой подсети — используйте логи DHCP/коммутатора.
- Для проверки «реального» аппаратного адреса обращайтесь к ethtool (permanent address).
- /sys/class/net — одиночный источник правды для текущего состояния в ядре.
Decision flowchart
flowchart TD
A[Нужно узнать MAC?] --> B{Локально или удалённо?}
B -->|Локально| C{Есть GUI?}
C -->|Да| D[Открыть Настройки → Сеть]
C -->|Нет| E[Использовать ip или cat /sys/class/net/*/address]
B -->|Удалённо, в той же подсети| F[arping или ping + arp]
B -->|Удалённо, в другой подсети| G[Проверить DHCP/коммутатор/CMDB]
E --> H[Если нужно «permanent» — ethtool -P]
F --> H
G --> I[Если не найдено — запросить у владельца/скан сети]Совместимость и примечания по версиям
ifconfigустарел, но доступен в net-tools. Новые дистрибутивы ориентированы наip.ethtoolиarpingмогут отсутствовать по умолчанию — установите пакеты через менеджер пакетов.- Команды и пути (
/sys/class/net) стабильны для большинства современных ядер Linux.
Edge‑case gallery
- Виртуальные интерфейсы Docker/Podman (veth): MAC генерируется динамически и может менять владельца при перезапуске контейнера.
- Бриджи и VLAN: MAC‑адрес моста может отличаться от интерфейсов, объединённых в мост.
- Wi‑Fi: устройства часто поддерживают рандомизацию MAC при сканировании сетей; реальный MAC может быть скрыт.
Часто задаваемые вопросы
Какой MAC считается постоянным и где его посмотреть?
Permanent (постоянный) MAC иногда доступен через ethtool -P interface. Это адрес, записанный в EEPROM/чипе NIC. Однако драйвер может перезаписать MAC в рантайме.
Можно ли найти MAC устройства за маршрутизатором?
Нет: ARP действует только в пределах одной L2‑сети. Чтобы узнать MAC удалённого хоста, используйте журналы DHCP на маршрутизаторе/сервере или таблицу коммутатора.
Безопасно ли публиковать MAC‑адреса?
Осторожность рекомендуется: MAC может быть использован для отслеживания устройства и авторизации в сети. Публикуйте только в рамках безопасной политики и с минимально необходимым объёмом данных.
Краткое резюме
- Самый универсальный способ:
ip link showи чтение/sys/class/net/*/address. - Для «перманентного» аппаратного адреса используйте
ethtool -P. - Для других устройств в сети —
arp/arpingили проверка DHCP/коммутатора. - Учитывайте приватность и корпоративные политики при сборе и хранении MAC‑адресов.
Обслуживание сети становится проще, когда у вас есть стандартизованный процесс сбора и верификации MAC‑адресов. Используйте приведённые чек‑листы и SOP, чтобы автоматизировать и минимизировать ошибки.
Социальный предпросмотр
Заголовок: Как найти MAC‑адрес на Linux Описание: Быстрые команды, GUI‑шаги, проверка чужих устройств, смена MAC и рекомендации по безопасности.
Похожие материалы
Отключить кнопку показа пароля в Windows
Разблокировка отключённого iPhone или iPad
Как подключиться к VPN в Windows
Как настроить пароль прошивки на Intel‑Mac
Как удалить загруженные файлы с Oculus Go