Если вы администрируете систему Linux, обязательно будут моменты, когда вам нужно будет знать MAC-адрес вашей системы. Эта информация может понадобиться по нескольким причинам. Возможно, вы хотите, чтобы DHCP назначил вам фиксированный IP-адрес. Для этого вам понадобится MAC-адрес, чтобы вы могли добавить сопоставление IP-адреса и MAC-адреса в конфигурации вашего DHCP-сервера.
Вам также может понадобиться эта информация для фильтрации MAC-адресов, чтобы разрешить или заблокировать определенные устройства в вашей сети. Или, может быть, вы хотите настроить Wake-on-LAN. Какой бы ни была причина, вот несколько различных способов найти MAC-адрес в вашей системе Linux.
Что такое MAC-адрес?
MAC-адрес, также известный как физический или аппаратный адрес, представляет собой уникальный идентификатор, связанный с сетевой интерфейсной картой почти каждого устройства, подключенного к сети.
MAC-адрес функционирует на втором уровне (уровень канала передачи данных) модели OSI и имеет длину 48 бит, где первые 24 бита представляют собой идентификатор производителя, а последние 24 бита представляют собой уникальный идентификатор для этой сетевой карты. Как и в случае с IP-адресами, вы можете изменить MAC-адрес вашей сетевой карты.
Найдите MAC-адрес в Linux в командной строке
Вот несколько самых быстрых и простых способов найти свой MAC-адрес в Linux:
Использование команды ip
Вы можете использовать команду ip в Linux для просмотра и настройки физических и виртуальных сетевых интерфейсов, маршрутизации, политик маршрутизации и туннелей. Он может добавлять или удалять сетевой интерфейс, назначать/удалять IP-адреса, отображать состояние сетевых интерфейсов и выполнять гораздо больше полезных задач.
Вы можете узнать MAC-адрес вашей системы с помощью следующей команды ip:
ip link <span class="hljs-keyword">show</span>
Эта команда показывает сведения обо всех сетевых интерфейсах, включая их MAC-адреса, помимо метки link/ether, как показано ниже:
Чтобы найти MAC-адрес определенного сетевого интерфейса, используйте следующий синтаксис:
ip link <span class="hljs-keyword">show</span> dev
Использование команды ifconfig
Команда ifconfig в Linux позволяет настраивать и отображать состояние сетевых интерфейсов. Кроме того, он также может активировать и деактивировать сетевой интерфейс.
Чтобы узнать MAC-адреса всех доступных сетевых интерфейсов (даже если они деактивированы), используйте команду ifconfig с флагом -a следующим образом:
ifconfig -a
Чтобы узнать MAC-адрес конкретного сетевого интерфейса, укажите его имя в качестве аргумента:
ifconfig interface_name
Чтобы узнать MAC-адреса всех активных в данный момент сетевых интерфейсов, используйте команду ifconfig без каких-либо флагов:
ifconfig
В выходных данных вы можете найти MAC-адрес вашего интерфейса рядом с меткой ether, как показано ниже:
Использование утилиты ethtool
ethtool — это утилита Linux, которая позволяет запрашивать и настраивать сетевые драйверы и параметры сетевой карты. С помощью утилиты ethtool вы также можете запросить у сетевого интерфейса его MAC-адрес.
Вот команда для этого:
ethtool -P interface_name
Получить MAC-адрес из каталога /sys/class/net
Каталог /sys/class/net содержит информацию о сетевых устройствах, подключенных к системе. В этом каталоге есть отдельный подкаталог для каждого из сетевых интерфейсов, например /sys/class/net/ens33 и /sys/class/net/ens37.
Каждый подкаталог содержит разные файлы для каждого сетевого атрибута, такого как MAC-адрес, рабочее состояние сетевого устройства, его дуплекс, MTU и т. д. Информация о MAC-адресе хранится в файле address.
Чтобы получить список сетевых интерфейсов, подключенных к вашей системе, используйте следующую команду:
ls /sys/<span class="hljs-class"><span class="hljs-keyword">class</span>/<span class="hljs-title">net</span></span>
Чтобы найти MAC-адрес определенного сетевого интерфейса, используйте следующий синтаксис команды:
cat /sys/<span class="hljs-class"><span class="hljs-keyword">class</span>/<span class="hljs-title">net</span>/<span class="hljs-title">interface_name</span>/<span class="hljs-title">address</span></span>
Например, чтобы найти MAC-адрес сетевого интерфейса, скажем, ens33, команда будет выглядеть так:
cat /sys/<span class="hljs-class"><span class="hljs-keyword">class</span>/<span class="hljs-title">net</span>/<span class="hljs-title">ens33</span>/<span class="hljs-title">address</span></span>
Как найти MAC-адрес используя графический интерфейс
Те, кто предпочитает графический интерфейс для своих повседневных задач, могут найти свой MAC-адрес графически, используя сетевой менеджер, поставляемый с их дистрибутивом. Как и в Ubuntu, вы можете использовать настройки сетевых подключений.
Откройте Настройки (Settings) в дистрибутиве Linux, щелкнув правой кнопкой мыши на рабочем столе или в меню приложений. На левой панели перейдите на вкладку Сеть (Network). Вы увидите все сетевые интерфейсы, подключенные к вашей системе.
Чтобы узнать MAC-адрес сетевого интерфейса, нажмите значок Cog (настройки) перед ним.
Откроется новое окно с подробной информацией о вашем сетевом интерфейсе. Здесь вы найдете MAC-адрес рядом с меткой Аппаратный адрес (Hardware Address).
В этом руководстве мы использовали GNOME для изображений, но другие среды рабочего стола также будут иметь аналогичные настройки, только с другими метками.
Найдите MAC-адрес другой системы в локальной сети
Подобно вашему собственному MAC-адресу, вы также можете найти MAC-адреса других систем в локальной сети. Вот как:
Использование команды arp
Вы можете использовать ARP (Address Resolution Protocol) или протокол разрешения адресов, чтобы узнать MAC-адрес для данного IP-адреса. Чтобы найти MAC-адрес другой системы в локальной сети, пропингуйте ее IP-адрес с помощью:
ping -c1 <span class="hljs-tag"><<span class="hljs-name">IP</span> <span class="hljs-attr">address</span>></span>
Команда ping будет использовать ARP для получения MAC-адреса удаленной системы. Получив эту информацию, она сохраняется в таблице ARP, которую вы можете просмотреть, используя:
arp -n | grep <span class="hljs-tag"><<span class="hljs-name">IP</span> <span class="hljs-attr">address</span>></span>
Эта команда напечатает MAC-адрес для данного IP-адреса.
Использование утилиты arping
Утилита arping помогает обнаруживать и проверять локальные системы в сети. Он функционирует на втором уровне модели OSI и отправляет запрос ARP в систему, чтобы определить, активен ли он и отвечает ли он. Она отличается от утилиты ping, которая работает на третьем уровне.
Вы можете установить arping, используя следующие команды:
В дистрибутивах на основе Debian:
sudo apt <span class="hljs-keyword">install</span> arping
В дистрибутивах на основе RHEL:
sudo yum <span class="hljs-keyword">install</span> arping
После установки найдите MAC-адрес другой системы в сети, указав ее IP-адрес в качестве аргумента с помощью следующей команды:
sudo arping -c 1 <span class="hljs-tag"><<span class="hljs-name">IP</span> <span class="hljs-attr">address</span>></span>
Если в вашей системе несколько сетевых адаптеров, вы можете указать, с какого интерфейса должен быть отправлен запрос, используя флаг -I (заглавная «i»), за которым следует имя интерфейса:
sudo arping -c 1 -I interface_name <span class="hljs-tag"><<span class="hljs-name">IP</span> <span class="hljs-attr">address</span>></span>
Например, следующая команда отправит один запрос ARP со своего интерфейса ens33 на IP-адрес удаленной системы 192.168.42.133.
<span class="hljs-selector-tag">sudo</span> <span class="hljs-selector-tag">arping</span> <span class="hljs-selector-tag">-c</span> 1 <span class="hljs-selector-tag">-I</span> <span class="hljs-selector-tag">ens33</span> 192<span class="hljs-selector-class">.168</span><span class="hljs-selector-class">.42</span><span class="hljs-selector-class">.133</span>
На выходе вы получите ответ ARP от целевой системы, содержащий ее MAC-адрес.
Легко найти свой MAC-адрес в Linux
Учитывая различные методы поиска MAC-адреса в Linux, вы можете выбрать любой удобный для вас.
Как и в Linux, вы также можете найти MAC-адрес в Windows и macOS; однако у них разные наборы команд и графический интерфейс.