ARP-сканирование локальной сети Linux: команды и утилиты 2026

08.06.2024
15:00

ARP-сканирование — самый надёжный способ найти все активные устройства в локальной сети. В отличие от ping, ARP работает на канальном уровне и обнаруживает узлы даже если они блокируют ICMP-запросы. Для сканирования используют три инструмента: встроенный arp, утилиту arp-scan и nmap с ARP-режимом.

Инструменты для ARP-сканирования

Инструмент Установка Когда использовать
arp -a встроен в систему Просмотр кешированной ARP-таблицы
arp-scan apt / dnf Активное сканирование всей подсети
nmap -PR apt / dnf Сканирование с дополнительными опциями

Что такое ARP и как он работает

ARP (Address Resolution Protocol) — протокол, который сопоставляет IP-адреса с MAC-адресами устройств в локальной сети. Когда компьютер хочет отправить пакет другому узлу, он знает IP-адрес получателя, но не знает его физический адрес. ARP отправляет широковещательный запрос на все устройства сети: «У кого IP-адрес 192.168.1.50?» Устройство с этим адресом отвечает: «У меня, мой MAC — aa:bb:cc:dd:ee:ff». Ответ записывается в ARP-таблицу и кешируется.

Ключевое отличие ARP от ping: ARP не маршрутизируется за пределы локальной сети и не может быть отключён на уровне брандмауэра так же легко, как ICMP. Это делает ARP-сканирование более надёжным для инвентаризации локальной сети.

Просмотр текущей ARP-таблицы — устройства с которыми система уже общалась:

arp -a

Установка arp-scan

Утилита arp-scan — специализированный инструмент для активного обнаружения устройств. Текущая версия — 1.10.0.

На Ubuntu и Debian:

sudo apt install arp-scan

На Fedora, CentOS, AlmaLinux:

sudo dnf install arp-scan

Проверить версию после установки:

arp-scan --version

Сканирование локальной сети

Перед сканированием определите имя сетевого интерфейса:

ip addr list

В выводе найдите активный интерфейс — обычно это eth0, enp3s0 или wlan0. Цифры в имени зависят от конкретного сервера.

Сканирование всех узлов в локальной сети через указанный интерфейс:

sudo arp-scan --interface=enp3s0 --localnet

Та же команда с явным указанием подсети вместо --localnet:

sudo arp-scan --interface=enp3s0 192.168.1.0/24

Оба варианта выводят таблицу со столбцами: IP-адрес, MAC-адрес, производитель сетевой карты.

Дополнительные опции

Увеличить количество ARP-запросов на адрес для повышения надёжности обнаружения:

sudo arp-scan --interface=enp3s0 --localnet --retry=3

Замедлить сканирование — полезно в сетях с большим числом устройств или нестабильным соединением:

sudo arp-scan --interface=enp3s0 --localnet --interval=5000

Параметр --interval задаёт паузу между запросами в микросекундах. Значение 5000 — 5 миллисекунд между пакетами.

Сохранить результаты в файл:

sudo arp-scan --interface=enp3s0 --localnet | tee scan-results.txt

Сканирование через Nmap

Nmap поддерживает ARP-сканирование через флаг -PR. Удобен если nmap уже установлен или нужны расширенные возможности:

sudo nmap -PR -sn 192.168.1.0/24

Флаг -sn отключает сканирование портов — выполняется только обнаружение хостов. Для ARP-сканирования нужны права суперпользователя.

Расширенный вариант с выводом MAC-адресов и производителей:

sudo nmap -PR -sn --script=arp-ping 192.168.1.0/24

Почему ARP-сканирование может не работать

Сканирование за пределами подсети — ARP работает только в пределах одного широковещательного домена. Для обнаружения устройств в других подсетях используйте ping-сканирование или трассировку маршрутов.

Конфликт IP-адресов — если два устройства используют один IP, ARP-запросы могут возвращать непредсказуемые результаты. Проверить конфликты помогает arping.

Отсутствие IP-адреса на интерфейсе — arp-scan может работать с интерфейсом без адреса, в этом случае исходящий адрес будет 0.0.0.0. Не все устройства ответят на такой запрос.

ARP-спуфинг — атакующий может подменять ARP-ответы, что исказит результаты сканирования. В защищённых сетях с Dynamic ARP Inspection сканирование также может быть ограничено.

Недостаточные праваarp-scan и nmap в ARP-режиме требуют прав суперпользователя. Без sudo команды вернут ошибку.

Часто задаваемые вопросы

Как найти все устройства в локальной сети Linux?

Выполните sudo arp-scan --interface=eth0 --localnet — команда обнаружит все активные устройства в подсети и выведет их IP и MAC-адреса. Замените eth0 на имя вашего интерфейса из вывода ip addr list. Требуются права суперпользователя.

Чем arp-scan лучше ping-сканирования?

ARP-сканирование работает на канальном уровне и обнаруживает устройства, которые блокируют ICMP. Большинство устройств не могут скрыться от ARP-запросов в локальной сети, тогда как ответы на ping можно отключить брандмауэром.

Как узнать производителя устройства по MAC-адресу?

arp-scan автоматически определяет производителя по первым трём байтам MAC-адреса (OUI) и выводит его в третьем столбце результатов. Можно также проверить вручную на сайте macvendors.com.

Можно ли сканировать несколько подсетей одновременно?

Да, укажите несколько диапазонов через пробел или используйте файл со списком адресов: sudo arp-scan --interface=eth0 192.168.1.0/24 10.0.0.0/24. Для сканирования подсетей за маршрутизатором ARP не подойдёт — используйте nmap с -sn.

Почему arp-scan не видит некоторые устройства?

Устройство может не ответить если оно находится в другой VLAN, выключено в момент сканирования, или если сеть настроена с фильтрацией ARP на уровне коммутатора. Увеличьте количество попыток флагом --retry=3 для повышения надёжности.

VPS на THE.Hosting — удобная площадка для сетевых экспериментов: выделенный сервер в изолированной среде, 50+ локаций, развёртывание за 60 секунд. Тарифы от €5.77 в месяц.

Другие статьи

08.06.2024
7 905
База знаний / Инструкции
Система x32 или x64, что лучше?
08.06.2024
7 266
База знаний / Информация
Изучаем горячие клавиши терминала Linux
08.06.2024
92 044
База знаний / Система
Разница между 32 и 64-битными системами