PQ
PQ.Hosting

Валюта

ARP-сканирование сети в Linux: arp-scan, nmap и защита от ARP-спуфинга

Автор
PQ
04 марта 2026
5 мин чтения
395 просмотров
ARP-сканирование сети в Linux: arp-scan, nmap и защита от ARP-спуфинга

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

Как работает ARP и почему его нельзя обмануть

ARP (Address Resolution Protocol) — механизм, который позволяет устройствам в локальной сети находить друг друга по MAC-адресу, зная только IP. Когда компьютер хочет отправить пакет на IP-адрес в той же подсети, он сначала спрашивает у всей сети: «У кого адрес 192.168.0.50?» Это широковещательный запрос, его слышат все устройства. Владелец адреса отвечает: «У меня, мой MAC — xx:xx:xx:xx:xx:xx». Ответ кешируется в ARP-таблице.

Принципиальная особенность ARP: протокол работает на канальном уровне и не использует маршрутизацию. Это значит, что arp-scan обнаружит только устройства в той же подсети — но зато все, включая те, что настроены блокировать ping или не отвечают на TCP-соединения.

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

arp -a

Или через более современную команду:

ip neigh show

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

arp-scan — специализированная утилита для ARP-сканирования, работает на уровне сырых сокетов и требует прав суперпользователя.

Установка на Debian/Ubuntu:

sudo apt install arp-scan

Установка на Fedora/RHEL:

sudo dnf install arp-scan

Установка на Arch Linux:

sudo pacman -S arp-scan

Определить сетевой интерфейс перед сканированием

Перед сканированием нужно знать имя активного сетевого интерфейса. Посмотреть список всех интерфейсов:

ip addr list

В выводе нужно найти интерфейс с присвоенным IP-адресом и статусом UP. Типичные имена: eth0, enp24s0, ens3 для проводных; wlan0, wlp3s0 для беспроводных. На VPS это чаще eth0 или ens3.

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

Запустить сканирование с автоматическим определением диапазона IP для текущей подсети:

sudo arp-scan --interface=enp24s0 --localnet

--localnet автоматически вычисляет диапазон сканирования на основе IP и маски интерфейса. Если интерфейс имеет адрес 192.168.0.102/24 — будет просканирован весь диапазон 192.168.0.0–192.168.0.255.

Если параметр --interface не указан, arp-scan выберет интерфейс с наименьшим номером в системе самостоятельно.

Задать диапазон вручную через маску подсети

Вместо --localnet можно указать конкретную подсеть в нотации CIDR:

sudo arp-scan --interface=enp24s0 192.168.0.0/24

Для подсети /16 (65534 хоста):

sudo arp-scan --interface=enp24s0 10.0.0.0/16

Для сканирования конкретного диапазона:

sudo arp-scan --interface=enp24s0 192.168.1.1-192.168.1.50

Что показывает вывод arp-scan

Типичный вывод:

Interface: enp24s0, type: EN10MB, MAC: 00:d8:61:16:a5:a5, IPv4: 192.168.0.102
Starting arp-scan 1.9.7 with 256 hosts

192.168.0.1     b0:be:76:43:21:41       TP-LINK TECHNOLOGIES CO.,LTD.
192.168.0.101   74:d4:35:00:b1:ef       GIGA-BYTE TECHNOLOGY CO.,LTD.

2 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.989 seconds. 2 responded

Три столбца: IP-адрес, MAC-адрес, производитель (определяется по первым 3 байтам MAC из базы IEEE OUI). Производитель помогает быстро идентифицировать устройство: роутер, ноутбук, принтер, умный дом и т.д.

Если одно и то же устройство отвечает с двух разных MAC-адресов — возможен ARP-спуфинг.

Полезные флаги arp-scan

Увеличить задержку между пакетами (для нестабильных сетей):

sudo arp-scan --interface=enp24s0 --localnet --bandwidth=1000000

Повторить каждый запрос N раз (снижает шанс пропустить устройство):

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

Сохранить результат в файл для последующего сравнения:

sudo arp-scan --interface=enp24s0 --localnet > scan_$(date +%Y%m%d).txt

Альтернатива: nmap с ARP-обнаружением

nmap умеет делать ARP-сканирование через флаг -PR:

sudo nmap -sn -PR 192.168.0.0/24

-sn отключает сканирование портов, -PR использует ARP для обнаружения. На выходе — список активных хостов с их именами (если резолвится DNS).

Почему ARP не работает: типичные проблемы

Конфликт IP-адресов. Два устройства с одним IP создают непредсказуемую ситуацию: arp-scan может показать оба MAC-адреса для одного IP, или видеть только один из них. Признак в выводе — DUP напротив IP.

ARP-спуфинг (отравление ARP). Атакующий рассылает поддельные ARP-ответы, привязывая свой MAC к чужому IP. В выводе arp-scan это видно как дублирующиеся записи. Для детектирования использовать arpwatch:

sudo apt install arpwatch
sudo systemctl enable --now arpwatch

arpwatch мониторит ARP-таблицу и отправляет уведомление при каждом изменении пары IP/MAC.

Неправильная маска подсети. Если интерфейс настроен с маской /32 — --localnet не просканирует ничего. Проверить маску:

ip addr show enp24s0

Блокировка на коммутаторе. Некоторые управляемые коммутаторы фильтруют ARP между VLAN. В таком случае сканирование даст результаты только в рамках одного VLAN.

Шпаргалка

Задача Команда
Установить arp-scan sudo apt install arp-scan
Посмотреть интерфейсы ip addr list
Сканировать всю подсеть sudo arp-scan --interface=eth0 --localnet
Сканировать конкретный диапазон sudo arp-scan --interface=eth0 192.168.0.0/24
Посмотреть ARP-таблицу arp -a или ip neigh show
Сохранить результат sudo arp-scan --localnet > scan.txt
ARP-сканирование через nmap sudo nmap -sn -PR 192.168.0.0/24
Мониторинг изменений ARP sudo systemctl enable --now arpwatch

Поделиться статьей

Похожие статьи