Гид по технологиям

Как найти MAC‑адрес на Linux

7 min read Linux Обновлено 25 Dec 2025
Как найти MAC‑адрес в Linux
Как найти MAC‑адрес в Linux

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

Найти MAC‑адрес в системе Linux

Если вы администрируете 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).

Просмотр MAC с помощью ip

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)

Просмотр MAC с помощью ifconfig

Важно: если ifconfig отсутствует, установите пакет net-tools или используйте ip.

ethtool

ethtool запрашивает параметры физического NIC (скорость, дуплекс, EEPROM и т. д.) и умеет возвращать MAC для некоторых драйверов.

Команда:

ethtool -P enp3s0

Пример вывода:

Permanent address: 00:11:22:33:44:55

ethtool полезен, когда нужно получить «постоянный» MAC, хранящийся в NIC, особенно если адрес был спуфлен программно.

Просмотр MAC с помощью ethtool

/sys/class/net

Система Linux хранит атрибуты интерфейсов в sysfs. Это самый надёжный источник текущего MAC‑адреса интерфейса.

Список интерфейсов:

ls /sys/class/net

Чтение файла адреса:

cat /sys/class/net/enp3s0/address

Вы получите строку вида 00:11:22:33:44:55.

Содержимое /sys/class/net

Этот метод работает даже если сетевой стек отключён.

Чтение MAC из /sys/class/net

GUI: как найти MAC‑адрес в окружении рабочего стола

Если вы предпочитаете графику, большинство окружений (GNOME, KDE, XFCE) показывают MAC в настройках сети.

Пример для GNOME (Ubuntu и родственные дистрибутивы):

  1. Откройте «Настройки» → «Сеть».
  2. В списке интерфейсов нажмите значок шестерёнки (Cog) рядом с нужным подключением.
  3. В разделе деталей ищите «Аппаратный адрес» или «Hardware Address» — это и есть MAC.

Окно настроек сети в GNOME

MAC в деталях соединения GNOME

Отличия: в 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.

Использование arp для получения MAC

arping

arping отправляет ARP‑запрос напрямую и полезен, если вы хотите получить ответ от конкретного IP на L2.

Установка:

Debian/Ubuntu:

sudo apt install arping

RHEL/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.133

arping полезен в средах, где ICMP‑ping может быть заблокирован, но ARP всё ещё работает.

Использование arping

Когда методы не сработают (контрпример)

  • Устройство находится в другой подсети: 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 up

macchanger (пакет):

sudo apt install macchanger
sudo macchanger -m 02:aa:bb:cc:dd:ee enp3s0

NetworkManager (постоянно для конкретного соединения):

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‑хостов (микро‑план)

  1. Подготовка: список хостов (IP/имена) и SSH‑доступ.
  2. Выполните параллельную команду (пример с 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
  1. Соберите вывод в CSV: hostname, интерфейс, mac, last_seen.
  2. Сверьте с DHCP и таблицей коммутатора.
  3. Поместите 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/порта.
  • Записи в инвентаре имеют отметку времени и источник (команда/журнал).

Тест‑кейсы и приёмочные проверки

  1. Локальный интерфейс: выполнить cat /sys/class/net/enp3s0/address и проверить формат (6 байтов).
  2. Виртуальная сеть: убедиться, что ip link show возвращает значение для veth/virtio.
  3. ARP для удалённого узла в той же подсети: arp -n после ping показывает MAC.
  4. Спуфинг: после изменения 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 и рекомендации по безопасности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Отключить кнопку показа пароля в Windows
Security

Отключить кнопку показа пароля в Windows

Разблокировка отключённого iPhone или iPad
Руководство

Разблокировка отключённого iPhone или iPad

Как подключиться к VPN в Windows
Сеть и безопасность

Как подключиться к VPN в Windows

Как настроить пароль прошивки на Intel‑Mac
Безопасность macOS

Как настроить пароль прошивки на Intel‑Mac

Как удалить загруженные файлы с Oculus Go
Руководство

Как удалить загруженные файлы с Oculus Go

Сменить пароль в Ubuntu — быстро и безопасно
Ubuntu

Сменить пароль в Ubuntu — быстро и безопасно