Как навести порядок в локальной сети с помощью терминала и netscanner
Иногда нужно быстро понять, кто «съел» весь канал в офисе или почему не пингуется новый микроконтроллер, который только что подключили к Wi-Fi. Обычно в таких случаях мы достаем nmap, вбиваем кучу флагов, которые вечно забываем, или запускаем тяжеловесный Wireshark. Но есть промежуточный вариант — быстрый, наглядный и работающий прямо в консоли.
Речь про netscanner. Это опенсорсная утилита на Rust, которая объединяет в себе сканер сети, диагностический инструмент и анализатор трафика с симпатичным TUI (Terminal User Interface).
Зачем он нужен, если есть nmap
Nmap — это стандарт индустрии, спору нет. Но он выдает сухую простыню текста. Если вам нужно в реальном времени мониторить появление новых устройств в подсети или быстро глянуть уровень сигнала Wi-Fi у соседа за стенкой, netscanner удобнее.
Проект использует библиотеку Ratatui, поэтому интерфейс отзывчивый: можно переключаться между вкладками, фильтровать логи и видеть графики мощности сигнала прямо в символах ASCII. Это тот случай, когда утилита делает одну вещь, но делает её наглядно.
Что умеет этот сканер
Я выделил несколько функций, которые пригодятся в ежедневной работе сетевого инженера или разработчика.
Сканирование Wi-Fi и графики сигнала. Утилита показывает список доступных точек доступа, их каналы и тип шифрования. Но самое приятное — живой график мощности сигнала. Это помогает, когда вы настраиваете роутер и ищете «мертвые зоны» в помещении.
Инвентаризация устройств в CIDR. Можно натравить сканер на диапазон адресов (например, 192.168.1.0/24). Он покажет не только IP, но и MAC-адреса, а также попытается определить производителя железа по OUI и подтянуть hostname.
Интерактивный Packet Dump. Это упрощенный сниффер. Он умеет перехватывать TCP, UDP, ICMP и ARP пакеты в IPv4 (и ICMP6 в IPv6). Поток пакетов можно поставить на паузу, изучить детали и отфильтровать лишнее. Если нужно проанализировать данные позже, есть экспорт в CSV.
Проверка открытых портов. Встроенный TCP-сканер портов позволяет быстро проверить доступность сервисов на найденных узлах без переключения на другие инструменты.
Техническая начинка
Проект написан на Rust, что дает ему два преимущества: скорость и отсутствие проблем с памятью при разборе сетевых пакетов. В основе лежат две важные библиотеки:
- libpnet — для низкоуровневой работы с сетевыми интерфейсами и формирования пакетов.
- Ratatui — для отрисовки того самого интерфейса, который не «разваливается» при изменении размера окна терминала.
Интересно, что автор добавил счетчик трафика и автоматическое сопоставление IP с DNS-записями. Это помогает быстро понять, куда именно ломится подозрительный процесс на устройстве.
Как запустить у себя
Поскольку утилита работает с сетевыми интерфейсами напрямую, ей нужны права суперпользователя.
Для пользователей Arch Linux всё просто:
pacman -S netscanner
Если у вас установлен Rust, можно собрать из исходников:
cargo install netscanner
После установки в Linux или macOS авторы рекомендуют выдать бинарнику права, чтобы не запускать его через sudo каждый раз:
sudo chown root:user ~/.cargo/bin/netscanner
sudo chmod u+s ~/.cargo/bin/netscanner
Для Windows-пользователей есть нюанс: обязательно нужен установленный Npcap, иначе библиотека для захвата пакетов просто не инициализируется.
Кому стоит попробовать
Netscanner вряд ли заменит профессиональные инструменты для пентеста, но он идеален для быстрой диагностики «на коленке». Если вам часто приходится разбираться с конфигурацией локальных сетей, искать конфликты IP-адресов или мониторить состояние Wi-Fi, этот инструмент точно заслуживает места в вашем /usr/bin.
В планах автора значится полноценная поддержка сканирования IPv6, так что проект живой и развивается. Пока что README довольно лаконичен, но сам интерфейс интуитивно понятен любому, кто хоть раз видел консоль.