Как ARP помогает найти устройства
Прежде чем отправить пакет соседу по сети, компьютер должен узнать его аппаратный адрес. Для этого он рассылает всем запрос ARP: «у кого адрес 192.168.1.20, сообщите свой MAC». Устройство с таким адресом отвечает. Это происходит на канальном уровне, поэтому фильтры, отбрасывающие ping, на ARP-ответы не влияют: чтобы быть видимым в сети, устройство обязано отвечать на ARP.
Утилита arp-scan использует именно этот механизм и перебирает по очереди весь диапазон подсети, собирая ответы. В результате вы получаете почти полный список включённых устройств вместе с MAC-адресами и, по таблице производителей, названием изготовителя сетевой карты. Устройства, не отвечающие на ping, здесь всё равно видны, и в этом её преимущество перед обычной проверкой связи.
Ограничение принципиально: ARP не проходит через роутер. Утилита видит только свой широковещательный домен, то есть ту сеть, в которую вы подключены. Устройства за другим роутером или в другой подсети останутся невидимыми. Гостевая сеть с изоляцией клиентов тоже покажет лишь роутер.
Установка и права доступа
Утилита работает с сырыми сокетами, поэтому запускается с правами администратора. Установка зависит от системы.
| Система | Установка | Запуск |
|---|---|---|
| Debian, Ubuntu | apt install arp-scan | sudo arp-scan --localnet |
| Fedora | dnf install arp-scan | sudo arp-scan --localnet |
| macOS | brew install arp-scan | sudo arp-scan --localnet |
| Windows | Нет штатной версии | Используйте nmap -sn или arp -a |
В Windows можно воспользоваться nmap с ключом -sn: он по ARP обнаруживает узлы так же, но требует установки Npcap. Подсистема WSL2 подключена к виртуальной сети и не видит вашу домашнюю подсеть напрямую, поэтому запуск arp-scan внутри неё даёт список из нескольких виртуальных адресов, а не устройств дома.
Основные команды и ключи
Самый простой запуск: sudo arp-scan --localnet, где вместо длинной формы допустим ключ -l. Утилита сама определит подсеть по адресу и маске интерфейса. Если сетевых интерфейсов несколько, укажите нужный: sudo arp-scan --interface=eth0 --localnet. В macOS проводной интерфейс обычно называется en0 или en1, Wi-Fi чаще всего en0; узнать имена можно командой ifconfig.
- --localnet или -l — сканировать всю подсеть интерфейса.
- --interface=имя или -I имя — выбрать интерфейс.
- Диапазон можно задать явно: sudo arp-scan 192.168.1.0/24 или через дефис, например 192.168.1.1-192.168.1.50.
- --retry=N или -r N — число повторов запроса; при слабом Wi-Fi полезно 3.
- --timeout=мс или -t мс — начальное время ожидания ответов в миллисекундах.
- --quiet или -q — не показывать название производителя, только IP и MAC.
- --plain или -x — вывод без служебных строк, удобно для скриптов.
- --ignoredups или -g — не показывать повторные ответы одного адреса.
Пример вывода (пример): в начале строка Interface: eth0 с указанием вашего MAC и IPv4-адреса, затем Starting arp-scan и строки вида 192.168.1.1, MAC 00:00:5e:00:53:01 и название производителя. В конце статистика: сколько адресов просканировано и сколько ответило, например 256 hosts scanned, 6 responded.
Как использовать результат: пошаговый разбор
Полученный список полезно сопоставить с тем, что вы знаете о своей сети. Порядок такой.
- Запишите или сохраните вывод: sudo arp-scan --localnet > devices.txt.
- Отметьте известные устройства: компьютер, телефон, телевизор, принтер, роутер.
- Для каждого неопознанного адреса посмотрите название производителя: оно намекает на тип устройства, например умная розетка или камера.
- Сверьтесь с таблицей клиентов в веб-интерфейсе роутера: там часто указаны имена устройств.
- Если в списке остались неопознанные, подключите по очереди известные устройства к сети и посмотрите, что меняется, либо временно отключите Wi-Fi на одном устройстве.
- Неизвестное чужое устройство означает повод сменить пароль Wi-Fi и включить современное шифрование WPA2 или WPA3.
Современные телефоны и ноутбуки используют случайные MAC-адреса для каждой сети, поэтому название производителя может отсутствовать, и это не признак чужака. Один и тот же телефон в разных сетях будет выглядеть по-разному.
Дубликаты и подозрительные ответы
Иногда один IP отвечает с двух разных MAC-адресов. Причины безобидные: два интерфейса устройства в одной сети, ответы роутера на ARP от имени других устройств, мост между сегментами. Но такая картина возможна и при подмене ARP-ответов в атаке «человек посередине», когда чужое устройство выдаёт себя за шлюз. Утилита помечает такие ответы как DUP. Если повторный адрес совпадает с адресом вашего роутера, проверьте таблицу командой arp -a и сравните MAC шлюза с наклейкой на самом роутере.
Не оставляйте без внимания и неожиданно высокое число ответивших адресов: некоторые устройства отвечают за несколько IP, и это может выглядеть как обилие клиентов.
Ограничения и этика
Скан по ARP обнаруживает устройства, но ничего не говорит об их службах. Для проверки открытых портов найденных узлов используйте nmap, а для сопоставления адреса и имени изучите таблицу клиентов на роутере. Запускайте arp-scan только в своей сети или там, где владелец сети разрешил проверку: в чужой сети рассылка запросов по всей подсети может привлечь внимание защитных систем и нарушить правила использования.
Если нужно узнать имя устройства, а не только адрес, дополните результат данными роутера: в веб-интерфейсе есть список клиентов с именами и временем выдачи адреса. Сопоставив его с выводом утилиты по MAC-адресам, вы получите полную картину. Для устройств со статическим адресом сверяйтесь с собственной таблицей: записывайте адрес, назначение и место установки. Частые запуски бессмысленны: список устройств меняется медленно. Для регулярного контроля достаточно раза в неделю сравнивать результат с предыдущим через diff и смотреть на появление новых MAC-адресов.