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 в месяц.