Модуль диагностики AirMon
Обзор и устройство
Airmon это встроенный в агент wda легковесный диагностический HTTP-сервер (по умолчанию порт 8080). Он спроектирован для работы с минимальным потреблением ресурсов (использует потоки с ограниченным стеком 128 КБ). Модуль включает в себя веб-интерфейс для ручного тестирования и API для автоматизации. Используемые данные. Инструмент агрегирует данные из нескольких источников:
- Сетевой трафик: генерация случайных данных через /dev/urandom для тестов загрузки (Download) и прием данных для тестов отдачи (Upload).
- Wireless Metrics (через netlink интерфейс ядра): реальные физические параметры радиоэфира в момент теста — MCS (Modulation and Coding Scheme), NSS (Spatial Streams), ширина канала (MHz), уровни сигнала и шума (RSSI/SNR).
- Airtime Utilization: статистика использования эфира — процент занятости канала (Busy), уровень интерференции (Interference) и доля трафика самого клиента (Self TX/RX).
- DHCP Snooping: используется для автоматического сопоставления IP-адреса тестируемого устройства с его MAC-адресом для получения точных беспроводных метрик именно для этого клиента.
Типичный сценарий использования
Диагностика последней мили между устройством пользователя (station) и точкой доступа (ap):
Инженер или система мониторинга инициирует тест с клиентского устройства на IP-адрес точки доступа. Airmon замеряет чистую пропускную способность (Mbps) и задержки (Latency/Jitter). Параллельно со скоростью фиксируются параметры радиоэфира. Если скорость низкая, данные airmon позволяют сразу определить причину: низкий уровень сигнала (RSSI), зашумленность канала (Interference) или ограничения на физическом уровне (низкий MCS).
Для интеграции модуля AirMon в сторонние системы мониторинга или скрипты автоматизации можно использовать его HTTP API. Ниже приведен раздел документации с описанием эндпоинтов и примерами использования.
HTTP API модуля AirMon
Модуль предоставляет простой REST-like интерфейс для замера пропускной способности и получения метрик радиоэфира. По умолчанию сервер слушает на порту 8080.
1. Тест загрузки (Download)
Эндпоинт: GET /<size><unit> Возвращает поток случайных данных заданного объема.
- Поддерживаемые единицы (unit): b, kb, mb, gb (регистр не важен).
- Пример: /10mb, /100KB, /1gb.
Пример использования (curl):
# Загрузка 10 МБ данных с замером скорости curl -o /dev/null http://<ap_ip>:8080/10mb
2. Тест отдачи (Upload)
Эндпоинт: POST /upload
Принимает любые данные и возвращает статистику скорости в формате JSON.
Формат ответа:
# Загрузка 10 МБ данных с замером скорости
curl -o /dev/null http://<controller_ip>:8080/10mb
{
"method": "upload",
"size_bytes": 1048576,
"duration_ms": 150,
"speed_mbps": 55.92
}
Пример использования (curl):
# Отправка 5 МБ случайных данных dd if=/dev/urandom bs=1M count=5 | curl -X POST -H "Content-Type: application/octet-stream" --data-binary @- http://<ap_ip>:8080/upload
3. Метрики радиоэфира (Wireless Stats)
Эндпоинт: GET /airtime
Возвращает текущие физические параметры подключения клиента, с которого пришел запрос.Особенности:
- Модуль автоматически определяет MAC-адрес клиента по его IP (используя данные DHCP Snooping).
- Если клиент подключен не по Wi-Fi или его MAC не найден, вернется предупреждение.
Формат ответа:
Пример использования (curl):
curl http://<ap_ip>:8080/airtime
{
"active": 1000,
"busy": 450,
"tx": 120,
"rx": 200,
"other": 80,
"interference": 50,
"signal": -55,
"noise": -95,
"snr": 40,
"rx_rate": {
"rate": 866700,
"mcs": 9,
"nss": 2,
"mhz": 80
},
"tx_rate": {
"rate": 780000,
"mcs": 8,
"nss": 2,
"mhz": 80
}
}
4. Веб-интерфейс
Эндпоинт: GET / или GET /index.html
Возвращает диагностическую страницу для ручного тестирования в браузере.