Привет, Хабр! Меня зовут Алексей, и я продолжаю копаться в беспроводных технологиях. В прошлый раз мы настраивали Wi-Fi в OpenWrt для максимальной стабильности и покрытия. Сегодня я хочу поговорить о другой, не менее увлекательной теме - мониторинге беспроводного эфира с помощью легедарного роутера TP-Link MR3020.Многие скажут: «Зачем мне это? У меня и так всё работает». А я отвечу: возможности, которые открываются, могут удивить. Давайте сразу к делу.

Зачем вообще мониторить эфир?

Сценариев масса, и они далеко не всегда связаны с безопасностью (хотя и там тоже).

1. Геофенсинг и аналитика посещаемости

Представьте, что вы владелец небольшого кафе, магазина или коворкинга. Вам нужно понять, сколько людей заходит в течение дня, в какие часы пик, как долго они задерживаются. Установив роутер с OpenWrt в режиме монитора у входа, вы можете пассивно подсчитывать уникальные устройства (смартфоны, ноутбуки) в радиусе действия. Это даёт понимание реального трафика посетителей — без камер, просто по факту присутствия Wi-Fi устройств. Данные можно агрегировать в CSV и строить графики - идеально для маркетинга и планирования персонала.

2. Выбор занятого, но наименее используемого канала для своей точки доступа

Самый частый кейс: вы живёте в многоквартирном доме, эфир забит соседскими роутерами, скорость проседает, пакеты теряются. Запустив мониторинг на несколько часов, вы получите объективную картину загруженности каналов и сможете выбрать тот, где меньше всего конкурентов ведут вещание. То есть простые программки для мониторинга wi-fi умеют показывать занятые каналы но вот понять насколько активно используются занятые каналы они не умеют.

3. Диагностика проблем своей сети

Упала скорость? Пропадает связь? Мониторинг покажет, не забил ли кто-то из соседей канал, не появились ли новые мощные точки доступа, нет ли скрытых помех. Вы увидите уровень сигнала, количество ретрансляций, CTS-кадры - всё, что нужно для настоящего инженерного анализа.

4. Маркетинговый Wi-Fi рада - было раньше но сейчас не так

Раньше (лет 5–7 назад) был популярен метод идентификации посетителей по MAC-адресу для показа целевой рекламы: человек заходил в торговый центр, его телефон «светился» в эфире, система запоминала MAC и потом могла показывать ему рекламу в соцсетях. Но сейчас смартфоны (iOS и Android) используют рандомизацию MAC-адресов — при каждом сканировании сетей телефон подставляется с разным виртуальным MAC. Поэтому надёжно идентифицировать конкретное устройство по MAC стало почти невозможно. Однако для приблизительной оценки потока (сколько уникальных клиентов в единицу времени) рандомизация не страшна — мы считаем не конкретного человека, а количество активных устройств, и погрешность приемлема.

Что будем использовать

Я буду использовать старенький но достаточно удачный роутер TP-Link MR3020 Да он имеет только одно радио 2.4 но зато его можно использовать в связке с повербанком и носить с собой.

  • OpenWrt

  • USB-флешка - её можно смонтировать и сохранять на ней логи. Я же заморочился и перенес файловую систему на флешку. Получив таким образом и дополнительное место для установки пакетов.

  • Немного терпения и прямые руки.

Весь роутер будет работать как пассивный датчик - он ничего не передаёт, только слушает. По сути это то не точка доступа, а радио-сниффер.

Шаг 1. Настройка /etc/config/wireless для режима монитора

Для начала убедимся, что Wi-Fi интерфейс переведён в режим монитора. Я не буду описывать установку OpenWrt - это отдельная тема. Предположим, у вас уже есть работающая система.

Открываем конфиг:

vi /etc/config/wireless

Скорее всего, у вас есть секция типа wifi-device (например, radio0) и одна или несколько wifi-iface. Нам нужно создать отдельный интерфейс в режиме monitor. Не трогайте существующие, если они нужны для раздачи интернета - просто добавьте новую секцию (Иногда нужно оставить только один wifi-iface. Но тогда позаботьтесь чтобы к роутеру можно было подключиться через LAN-разъем):

config wifi-iface
    option device 'radio0'
    option mode 'monitor'
    option ifname 'mon0'
    option hidden '1'

Где:

  • device - имя вашего радио.

  • mode 'monitor' - включает режим монитора.

  • ifname 'mon0' - имя создаваемого интерфейса (можно любое).

  • hidden '1' - просто скрывает его от лишних глаз.

После сохранения применяем:

wifi reload

И проверяем, что интерфейс появился:

ifconfig mon0

Если увидели что-то типа следующего, значит все в порядке:

Шаг 2. Установка airodump-ng - классика жанра

airodump-ng это часть пакета aircrack-ng, который есть в репозиториях OpenWrt. Он не только захватывает пакеты, но и в реальном времени отображает таблицу сетей и клиентов.

opkg update
opkg install aircrack-ng

Запуск и базовые опции

Самый простой запуск:

airodump-ng mon0

Вы увидите две таблицы:

  • Верхняя - все обнаруженные точки доступа (BSSID, канал, уровень сигнала, шифрование, SSID).

  • Нижняя - клиенты (их MAC, ассоциированная точка, мощность).

Для сохранения в файл используем ключ -w:

airodump-ng -w /mnt/usb/capture --output-format csv mon0

Форматы вывода airodump-ng

Утилита умеет сохранять данные в разных форматах. Управляется флагом --output-format (или -o). Рассмотрим самые полезные.

CSV (самый удобный для аналитики)

Создаёт файл .csv, который можно открыть в Excel, Google Sheets или импортировать в базу данных. Структура: сначала строки с точками доступазатем через пустую строку — строки с клиентами. Именно этот формат я использую для сбора статистики посещаемости.

PCAP (для глубокого анализа)

Файл .cap или .pcap — это «сырые» 802.11 кадры с radiotap-заголовками. Можно открыть в Wireshark и анализировать каждый пакет. Занимает много места, но даёт максимум информации.

IVS (только для WEP)

Файл .ivs — сохраняет только векторы инициализации. Для современных WPA/WPA2 сетей бесполезен, оставьте для ностальгии.

Мой совет: для долгосрочного сбора статистики используйте только csv. Он лёгкий, структурированный и содержит всё необходимое. Для точечной диагностики проблем — включайте pcap на короткое время.

Иногда можно собирать pcap данные используя старый добры tcpdump. Он делает ровно одну вещь, но делает её идеально - захватывает пакеты и пишет их в файл. Никакого лишнего анализа, минимум накладных расходов. Процессор почти не грузит, память не ест.

Установка

opkg install tcpdump

Если хотите минимальную версию (чуть меньше размером), есть пакет tcpdump-mini, но он конфликтует с полным. Я расширил файловую систему роутера за сет флешки поэтому могу себе позволить поставить полный.

Захват

tcpdump -i mon0 -s 0 -W 10 -G 3600 -C 100 -w /mnt/usb/capture_%Y%m%d_%H%M%S.pcap
  • -i mon0 - интерфейс.

  • -s 0 - захватывать пакет целиком.

  • -w - запись в файл.

  • -W 10 - хранить не более 10 файлов (циклическая запись).

  • -G 3600 - каждые 3600 секунд (1 час) создавать новый файл.

  • -C 100 - ограничить размер файла 100 МБ.

  • %Y%m%d_%H%M%S - временная метка в имени файла.

Такой командой можно мониторить неделями, не боясь переполнить флешку. Старые файлы будут перезаписываться.

Что внутри pcap-файла?

Откроем дамп в текстовом виде (или через Wireshark). Или предварительно можно сконвертировать его в txt с помощью того же tcpdump.

Типы кадров (краткий ликбез)

  • Beacon - маяк точки доступа. Содержит SSID, поддерживаемые скорости, канал, шифрование. Периодичность ~100 мс. По количеству Beacon можно оценить, сколько AP вещают на канале.

  • Probe Request / Probe Response - клиент ищет сеть; AP отвечает. Используется для обнаружения скрытых SSID.

  • Data - пользовательские данные. Зашифрованы (IV, KeyID). Вы не прочитаете содержимое, но увидите факт передачи.

  • Acknowledgment (ACK) - подтверждение приёма кадра. Каждый Data кадр (кроме широковещательных) порождает ACK. Много ACK → активный обмен.

  • Clear-To-Send (CTS) - разрешение на передачу (часть RTS/CTS). Если в эфире много CTS, значит, есть коллизии или скрытые станции.

  • Block Acknowledgment (BA) - подтверждение для агрегированных кадров (802.11n/ac). Признак высокоскоростного режима.

Как практически использовать эти данные?

  1. Оценка загруженности канала
    Подсчитайте количество Data-кадров за минуту на определённой частоте. Чем их больше, тем выше нагрузка. Сравните с количеством ACK - они должны быть примерно равны (если не считать повторы).

  2. Выявление помех
    Если на канале много CTS и BA, но мало Data, значит, эфир перегружен или есть скрытые станции. Роутеры вынуждены резервировать время, снижая полезную пропускную способность.

  3. Обнаружение скрытых сетей
    В столбце Probed ESSIDs у клиентов могут быть имена сетей, которых нет в верхней таблице. Это скрытые сети, которые не транслируют Beacon, но клиенты их активно ищут. Кстати по этой опции можно чуть точнее идентифицировать клиентов, даже с учетом рандомизации маков.

  4. Мониторинг «здоровья» своей точки доступа
    Если вы видите много повторных передач (retries) или необычно много CTS от вашего BSSID, возможно, у вас проблемы с антенной или сильные помехи.

Автозпуск

Для того чтобы мониторинг запускался автоматически сразу после загрузки роутера, можно создать соответствующую задачу в cron или добавить скрипт запуска в /etc/rc.local

#!/bin/sh

# Даем системе время на инициализацию (60 секунд должно быть достаточно)
sleep 60

# Папка, куда смонтирована флешка, у меня вся фйловая система лежит 
# на флешке поэтому я просто пишу /root 
MOUNT_POINT="/root"
# Базовое имя для файлов
OUTPUT_FILE="${MOUNT_POINT}/wifi_24_capture"

# Убиваем старые процессы airodump-ng (после загрузки роутера их быть не должно)
# но вдург вы решите запустить скрипт руками
killall airodump-ng
# Запускаем airodump-ng в фоновом режиме с записью в CSV-файл
airodump-ng mon1 -w "$OUTPUT_FILE" --output-format csv --write-interval 60

Главный нюанс: не забудьте добавить sleep 60 перед стартом мониторинга, чтобы успели подняться все интерфейсы.

P.S. У меня есть пара кейсов по использованию данной штуки для подсчёта аналитики проходимости и эффективности торговой точки (сколько человек прошло мимо, сколько вошло внутрь, как долго находились и т.д.) и ещё один - для детального анализа трафика. Если это кому-то интересно, напишите мне в комментариях, и я подготовлю статью на эту тему.

Комментарии (9)


  1. ifa21rus
    17.04.2026 09:25

    А когда смартфон при первом запуске просит разрешить мониторинг беспроводных сетей, то оно тоже самое делает в CSV? а что еще дополнительно он делает, что не сделает ваш снифер?


    1. GrekNirvana Автор
      17.04.2026 09:25

      Честно говоря не смог сообразить что вы имеете в виду.


  1. 12345egor
    17.04.2026 09:25

    Выбор занятого, но наименее используемого канала для своей точки доступа

    Вот мне всегда было интересно зачем таким заниматься вручную? Роутеры же, вроде, тоже должны быть не тупые, самостоятельно анализировать трафик, переключать каналы.

    Ну даже, допустим, нашли вы свободный канал, заняли - и уже через минуту его завалили.

    В общем ручной подбор канала кажется какой-то бесполезной затеей


    1. khimick
      17.04.2026 09:25

      вообще каналы должны быть прибиты гвоздями как минимум на 2.4ГГц. я полагаю и на 5Гц соседние каналы залезают друг на друга.


    1. Moog_Prodigy
      17.04.2026 09:25

      Роутеры очень часто тупят (в них нет ИИ, был бы - тупили бы еще сильнее) и выбирают наиболее загруженный канал, или дефолтный. Особенно обожают они 11 канал. Почему? А хрен их знает, моя думка такая - роутер видит сильный сигнал, и думает - "о, вот тут так много клиентов, наверное надо им раздать всем доступ...". Логика? Как сеть ложится - переключаются, а пользователи при этом ругаются страшными непечатными словами, особенно геймеры. Поэтому разводить каналы вручную смысл вполне есть. Касается это многих роутеров, и кинетики в частности. Все сидят уперто на 11 канале и страдают, переключаешь свой роутер на 3 канал вручную, и никто туда не ломится, только твои клиенты. Правда не знаю что будет, если твоих клиентов станет несколько десятков...


      1. 12345egor
        17.04.2026 09:25

        ИИ там и не нужен)) Недавно советовался с Gemini на тему 20 устройств умного дома с matter (работают по wifi локалке) - он мне советовал выбрать для 2.4 1,6,11 каналы, так как они не пересекаются с остальными (поэтому роутеры, видимо, и любят 11).

        И я все равно не понимаю зачем вручную выбирать. Как уже писал выше - против вас играют такие же энтузиасты и глупые роутеры. В моем понимании нельзя один раз занять самый свободный канал и забыть.


        1. GrekNirvana Автор
          17.04.2026 09:25

          Еще кстати бывает такая исторяи с режимом авто когда все роутеры заводят так называемый "хоровод" видя относительно свободный канал и все вместе разом на него переходят. Потом на следующий и т.д. Поэтому детальный анализ и статическое фиксирование каналов очень хорошо могут помочь.


      1. economist75
        17.04.2026 09:25

        11-й канал на 2,4 ГГц - это последний для свистков-клиентов в Windows (но в Дисп устройств можно расширить до 14-го). И это частично объясняет толчею на 11, потому что самые первые каналы 1-10 были заняты ещё раньше.

        Только после этого можно настроить роутер на 12-14 каналы. Иначе Windows просто его не увидит.


    1. GrekNirvana Автор
      17.04.2026 09:25

      Роутеры оценивают только загрузку канала. Ведет на нем кто-то вещание или нет. Как правило, в местах с плотным расположением пользователей все каналы уже заняты. И задача среди занятых определить те которые заняты но на которых меньше всего передается данных. В корпоративных сетях это умеют делать контроллеры беспроводной сети по похожему принципу собирая данные мониторинга через свои сенсоры.