"Быстрый
<br />
В ROS 7 старый /interface wireless удалён.<br />
Теперь всё через wifiwave2: создай configuration profile командой <strong>/interface/wifiwave2/configuration add</strong>, примени к интерфейсу через <strong>set wifi1 configuration=имя-профиля disabled=no</strong>.<br />
Клиентов ищи через <strong>/interface/wifiwave2/registration-table/print</strong>.<br />
Если после обновления ничего не работает — это не баг, это новая архитектура. Читай дальше.<br />
<h2>Диагноз: обновился на ROS 7 и остался без WiFi</h2>
<p>Обновил прошивку. Зашёл в Winbox. /interface wireless — пустой. Клиенты не подключаются. В логах тишина. Классика.</p>
<p>ROS 7 убил старый пакет wireless и заменил его на wifiwave2. Тихо, без предупреждения, без автомиграции конфигурации. Просто убил и положил рядом новое. Разбирайся сам.</p>
<p>В большинстве случаев причина проблем одна: пытаешься применить логику ROS 6 к ROS 7. Не работает. Структура другая, параметры другие, даже путь в CLI другой.</p>
<p>Что получишь на выходе: понимание архитектуры wifiwave2, готовые конфиги для офиса и гостевой <a class="wpil_keyword_link" title="Сети" href="https://it-apteka.com/category/networks/" target="_blank" rel="noopener" data-wpil-keyword-link="linked" data-wpil-monitor-id="1469">сети</a>, настройку CAPsMAN, VLAN-изоляцию, роуминг 802.11r, разбор типовых ошибок и скрипты мониторинга. Времени: час на первичную настройку, 15 минут на диагностику по чек-листу.</p>
<p>Что нужно: <a title="Настройка NTP на MikroTik: клиент и сервер - шпаргалка для ROS 6 и 7" href="https://it-apteka.com/nastrojka-ntp-na-mikrotik-klient-i-server-shpargalka-dlja-ros-6-i-7/" target="_blank" rel="noopener" data-wpil-monitor-id="1473">MikroTik с ROS</a> 7.x, железо с поддержкой wifiwave2 (hAP ax², ax³, Audience, cAP ax и другие ax-серия), права администратора.</p>
<hr />
<h2>Wifiwave2 vs Wireless: что изменилось и почему</h2>
<p>Главное изменение — не в интерфейсе, а в логике. Раньше ты настраивал параметры прямо на интерфейсе. Теперь создаёшь профиль (configuration), а потом применяешь его к одному или нескольким интерфейсам.</p>
<table>
<thead>
<tr>
<th>Параметр</th>
<th>Wireless (ROS 6)</th>
<th>Wifiwave2 (ROS 7)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Путь в CLI</td>
<td>/interface wireless</td>
<td>/interface/wifiwave2</td>
</tr>
<tr>
<td>Конфигурация</td>
<td>Прямо на интерфейсе</td>
<td>Отдельные configuration profiles</td>
</tr>
<tr>
<td>Wi-Fi 6 (802.11ax)</td>
<td>Нет</td>
<td>Да</td>
</tr>
<tr>
<td>WPA3</td>
<td>Нет</td>
<td>Да</td>
</tr>
<tr>
<td>802.11r Fast Roaming</td>
<td>Костыльно</td>
<td>Нативно</td>
</tr>
<tr>
<td>MU-MIMO</td>
<td>Ограниченно</td>
<td>Полная поддержка</td>
</tr>
<tr>
<td>ACS (Auto Channel)</td>
<td>scan-list</td>
<td>channel.frequency=»»</td>
</tr>
<tr>
<td>CCA Threshold</td>
<td>Есть</td>
<td>Нет прямого параметра</td>
</tr>
<tr>
<td>RTS/Fragmentation</td>
<td>Есть</td>
<td>Нет явно</td>
</tr>
<tr>
<td>CAPsMAN</td>
<td>Отдельный пакет</td>
<td>Встроен в wifiwave2</td>
</tr>
<tr>
<td>Детальные логи</td>
<td>Развёрнутые</td>
<td>Скромнее</td>
</tr>
</tbody>
</table>
<p><strong>Экспорт старой конфигурации перед обновлением</strong> — если ещё не поздно:</p>
<pre><code class="language-bash">
# На ROS 6, до обновления:
/interface wireless export file=wifi-backup
# Файл ляжет в Files. Сохрани - потом хотя бы будет с чего переписывать вручную.
</code></pre>
"Автомиграция
<br />
После обновления ROS 6 → ROS 7 старая конфигурация /interface wireless не переносится автоматически. Перенастраивать придётся вручную через wifiwave2. Это не баг <a title="DynDNS: полный гайд по настройке динамического DNS на роутере, Keenetic и MikroTik — бесплатно и без боли" href="https://it-apteka.com/dyndns-polnyj-gajd-po-nastrojke-dinamicheskogo-dns-na-routere-keenetic-i-mikrotik-besplatno-i-bez-boli/" target="_blank" rel="noopener" data-wpil-monitor-id="1472">— это дизайн-решение MikroTik</a>. Спорить бесполезно.<br />
<hr />
<h2>Базовая настройка WiFi MikroTik ROS 7: минималка за 5 минут</h2>
<p>Сначала — рабочая сеть. Потом <a title="Docker Compose - установка, команды и настройка контейнеров" href="https://it-apteka.com/docker-compose-ustanovka-komandy-i-nastrojka-kontejnerov/" target="_blank" rel="noopener" data-wpil-monitor-id="1474">— тонкая настройка</a>. Не наоборот.</p>
<h3>Шаг 1 — Проверить что wifiwave2 вообще есть</h3>
<pre><code class="language-bash">
# Проверить наличие пакета wifiwave2:
/system/package/print
# Ищем строку с wifiwave2 и статусом installed
# Если пакета нет - скачать с mikrotik.com под свою архитектуру (arm, arm64, mipsbe)
# и установить через /system/package/upload
# Проверить интерфейсы:
/interface/wifiwave2/print
# Должны быть wifi1, wifi2 (2.4GHz и 5GHz)
</code></pre>
<h3>Шаг 2 — Создать configuration profile</h3>
<pre><code class="language-bash">
/interface/wifiwave2/configuration
add name=cfg-office \
ssid=Office-WiFi \
country=Russia \
security.authentication-types=wpa2-psk,wpa3-psk \
security.passphrase=StrongPassword123
</code></pre>
<h3>Шаг 3 — Применить к интерфейсу</h3>
<pre><code class="language-bash">
/interface/wifiwave2
set wifi1 configuration=cfg-office disabled=no
</code></pre>
<h3>Шаг 4 — Убедиться что работает</h3>
<pre><code class="language-bash">
# Статус интерфейса:
/interface/wifiwave2/print detail
# Клиенты (если уже кто-то подключился):
/interface/wifiwave2/registration-table/print
# Монитор в реальном времени:
/interface/wifiwave2/monitor wifi1
</code></pre>
<p>Готово. Базовая сеть живёт. Теперь делаем её нормальной.</p>
<hr />
<h2>Настройка каналов WiFi MikroTik: борьба с помехами</h2>
<p>Неправильный канал <a title="MikroTik RouterOS 7: Настройка OSPF, WiFi и CHR - пошаговый рецепт без соплей" href="https://it-apteka.com/mikrotik-routeros-7-nastrojka-ospf-wifi-i-chr-poshagovyj-recept-bez-soplej/" target="_blank" rel="noopener" data-wpil-monitor-id="1475">— главная причина жалоб «тормозит wifi</a> mikrotik» и «клиенты отключаются». Не мощность, не железо. Канал.</p>
<h3>Сканирование эфира — смотрим что вокруг</h3>
<pre><code class="language-bash">
# Сканировать 30 секунд (10 - мало, картина неполная):
/interface/wifiwave2/scan wifi1 duration=30s
# Результат: SSID, канал, сигнал, загруженность
# Ищем каналы где минимум соседей с сильным сигналом (> -60 dBm)
</code></pre>
<h3>Ручной выбор канала</h3>
<pre><code class="language-bash">
# 2.4GHz - только 1, 6 или 11. Они не пересекаются. Остальные - яд.
/interface/wifiwave2/configuration
set cfg-office channel.frequency=2412 channel.width=20mhz
# 2412=канал1, 2437=канал6, 2462=канал11
# 5GHz без DFS (каналы 36-48 и 149-165):
/interface/wifiwave2/configuration
set cfg-office channel.frequency=5180 channel.width=40mhz
# 5180=36, 5200=40, 5220=44, 5240=48
# Исключить DFS-каналы (52-144) - радары заставят переключиться без предупреждения:
set cfg-office channel.skip-dfs-channels=yes
</code></pre>
<p><strong>Ширина канала — правило простое:</strong> 2.4GHz → только 20MHz (40MHz создаёт помех больше чем даёт скорости). 5GHz в офисе → 40MHz. 5GHz дома где нет соседей → 80MHz. 160MHz → оставь в покое, пока не знаешь точно зачем.</p>
<h3>ACS — автоматический выбор канала</h3>
<pre><code class="language-bash">
# Пустое значение frequency = ACS:
/interface/wifiwave2/configuration
set cfg-office channel.frequency="" channel.width=40mhz
# Ограничить ACS только безопасными каналами (без DFS):
set cfg-office channel.frequency=5180-5240,5745-5825 channel.width=40mhz
# Диапазон 36-48 и 149-165 - без радаров, без неожиданностей
</code></pre>
"ACS
<br />
Если включил ACS без ограничений — роутер может выбрать DFS-канал (52-144). Радар в радиусе 30 км заставит сменить канал за 10 секунд. В это время все клиенты висят. Всегда ограничивай ACS через channel.frequency с конкретными диапазонами или ставь skip-dfs-channels=yes.<br />
<hr />
<h2>TX Power и MU-MIMO: мощность не равно покрытие</h2>
<p>Частая ошибка — выкрутить TX power на максимум. Интуиция понятна. Результат противоположный ожидаемому.</p>
<p>Телефон передаёт на 20 dBm. Роутер орёт на 30. Роутер слышит телефон, телефон роутер — еле-еле. Итог: подключение есть, пакеты теряются, скорость никакая. Плюс помехи всем соседям. Они поднимают мощность. Гонка вооружений. Проигрывают все.</p>
<h3>TX Power настройка</h3>
<pre><code class="language-bash">
# Посмотреть текущую мощность:
/interface/wifiwave2/print detail
# Ищем tx-power=
# Установить оптимальную мощность:
/interface/wifiwave2
set wifi1 configuration.tx-power=20
# dBm. Для офиса 15-20, для склада 23-27, для улицы - максимум.
</code></pre>
<h3>MU-MIMO и Wi-Fi 6 режимы</h3>
<pre><code class="language-bash">
# MU-MIMO (передача нескольким клиентам одновременно):
/interface/wifiwave2/configuration
set cfg-office mimo.mode=multi-user
# Режим Wi-Fi 6 (обратно совместимый - рекомендую):
set cfg-office mode=ax
# ax = Wi-Fi 6 приоритетно, но ac/n/g тоже работают
# Только Wi-Fi 6 (для сетей где всё железо новое):
set cfg-office mode=ax-only
# Band steering: переводить клиентов с 2.4GHz на 5GHz если поддерживают:
set cfg-office steering.enabled=yes steering.prefer-5ghz=yes
</code></pre>
<hr />
<h2>VLAN и Bridge для Wifiwave2: гостевая сеть с изоляцией</h2>
<p>Самый частый запрос после базовой <a href="https://it-apteka.com/nastrojka-dinamicheskoj-marshrutizacii-perehod-so-statiki-na-ospf-i-bgp-2026/" title="Настройка динамической маршрутизации: переход со статики на OSPF и BGP" target="_blank" rel="noopener" data-wpil-monitor-id="2159">настройки — гостевая сеть</a>. Отдельный SSID, своя подсеть, без доступа к локалке. В wifiwave2 это решается через datapath и VLAN на бридже.</p>
<h3>Архитектура: что куда смотрит</h3>
<pre class="mermaid">%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 55}
}}%%
flowchart TD
INT["Интернет"]
FW["Firewall\nMikroTik"]
BR["Bridge\nbr-main"]
ETH["ether1\nWAN"]
VLAN10["VLAN 10\n192.168.10.0/24\nЛокальная сеть"]
VLAN99["VLAN 99\n192.168.99.0/24\nГостевая сеть"]
WIFI_CORP["wifi1\nSSID: Office-WiFi\ncfg-office"]
WIFI_GUEST["wifi1 (virtual)\nSSID: Guest-WiFi\ncfg-guest"]
INT --> ETH --> FW --> BR
BR --> VLAN10 --> WIFI_CORP
BR --> VLAN99 --> WIFI_GUEST
FW -->|"DROP: guest → LAN"| VLAN10
FW -->|"ACCEPT: guest → internet"| INT
style INT fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style FW fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
style BR fill:#f8fafc,stroke:#94a3b8,stroke-width:2px,color:#1e293b
style VLAN10 fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style VLAN99 fill:#f8fafc,stroke:#ef4444,stroke-width:2px,color:#b91c1c
style WIFI_CORP fill:#f8fafc,stroke:#22c55e,stroke-width:1px,color:#15803d
style WIFI_GUEST fill:#f8fafc,stroke:#ef4444,stroke-width:1px,color:#b91c1c
</pre>
<p><em>Схема 1: Разделение корпоративной и гостевой сети <a href="https://it-apteka.com/management-vlan-na-mikrotik-cpu-port-hardware-offload-i-diagnostika-polnyj-razbor/" target="_blank" rel="noopener" data-wpil-monitor-id="1977">MikroTik через VLAN</a> на bridge. Firewall блокирует доступ гостей в локальную сеть.</em></p>
<h3>Настройка VLAN + Bridge для Wifiwave2</h3>
<pre><code class="language-bash">
# 1. VLAN для гостевой сети на бридже:
/interface/vlan
add interface=bridge name=vlan-guest vlan-id=99
# 2. IP для гостевого VLAN:
/ip/address
add address=192.168.99.1/24 interface=vlan-guest
# 3. DHCP-пул и сервер для гостей:
/ip/pool
add name=pool-guest ranges=192.168.99.100-192.168.99.200
/ip/dhcp-server
add address-pool=pool-guest interface=vlan-guest name=dhcp-guest disabled=no
/ip/dhcp-server/network
add address=192.168.99.0/24 gateway=192.168.99.1 dns-server=8.8.8.8
# 4. Configuration profile для гостевой сети:
/interface/wifiwave2/configuration
add name=cfg-guest \
ssid=Guest-WiFi \
country=Russia \
security.authentication-types=wpa2-psk,wpa3-psk \
security.passphrase=GuestPass2024 \
datapath.client-isolation=yes \
datapath.bridge=bridge \
datapath.vlan-id=99 \
datapath.vlan-mode=use-tag
# 5. Виртуальный интерфейс на том же физическом радио:
/interface/wifiwave2
add name=wifi-guest master-interface=wifi1 configuration=cfg-guest disabled=no
# 6. Firewall: гости идут в интернет, но не в локалку:
/ip/firewall/filter
add chain=forward src-address=192.168.99.0/24 dst-address=192.168.1.0/24 \
action=drop comment="Block: guest to LAN"
add chain=forward src-address=192.168.99.0/24 out-interface=ether1 \
action=accept comment="Allow: guest to internet"
</code></pre>
"datapath.vlan-mode
<br />
Два варианта: use-tag (тегированный VLAN, нужен VLAN-интерфейс на бридже) и use-service-tag (QinQ). Для стандартной гостевой сети — use-tag. Если <a title="NTP через DHCP Options в MikroTik: автоматическая раздача времени клиентам" href="https://it-apteka.com/ntp-cherez-dhcp-options-v-mikrotik-avtomaticheskaja-razdacha-vremeni-klientam/" target="_blank" rel="noopener" data-wpil-monitor-id="1476">клиенты не получают DHCP</a> — проверь что bridge настроен с VLAN-filtering=yes и нужный VLAN добавлен в bridge VLAN таблицу.<br />
<pre><code class="language-bash">
# Проверить VLAN-filtering на bridge:
/interface/bridge/print detail
# Ищем: vlan-filtering=yes
# Если нет - включить:
/interface/bridge
set bridge vlan-filtering=yes
# Добавить VLAN 99 в bridge VLAN таблицу:
/interface/bridge/vlan
add bridge=bridge tagged=bridge untagged=wifi-guest vlan-ids=99
# Проверить что гости получают адреса:
/ip/dhcp-server/lease/print where server=dhcp-guest
</code></pre>
<hr />
<h2>802.11r Fast Roaming: роуминг за 100ms вместо 10 секунд</h2>
<p>Клиент переходит между точками. Стандартный роуминг: переподключение 5–10 секунд, VoIP падает, видеоконференция зависает. 802.11r делает это за 50–100 мс — незаметно.</p>
<p>802.11r (Fast BSS Transition) — быстрое переключение. 802.11k — клиент знает список соседних точек, выбирает сам. 802.11v — точка может попросить клиента уйти на другую. Все три вместе — бесшовный роуминг.</p>
<pre><code class="language-bash">
# Включить 802.11r + 802.11k/v на configuration profile:
/interface/wifiwave2/configuration
set cfg-office \
security.ft=yes \
security.ft-over-ds=yes \
interworking.enabled=yes
# ft = Fast Transition (802.11r)
# ft-over-ds = переключение через проводную сеть (быстрее чем по эфиру)
# interworking = 802.11k/v (клиенты видят соседей, точки управляют роумингом)
# Проверить что включено:
/interface/wifiwave2/configuration/print detail
# Ищем: ft=yes ft-over-ds=yes
</code></pre>
"Для
<br />
Все точки доступа должны использовать одинаковый SSID, одинаковый security profile и быть в одном Mobility Domain (настраивается автоматически при ft=yes). Если хоть одна точка без ft=yes — роуминг к ней будет медленным и сломает всю картину.<br />
<pre><code class="language-bash">
# Проверить роуминг: посмотреть с какой точки подключён клиент:
/interface/wifiwave2/registration-table/print detail
# Поле: interface= покажет на какой точке сейчас сидит клиент
# Принудительно отключить клиента (для теста роуминга):
/interface/wifiwave2/access-list
add mac-address=AA:BB:CC:DD:EE:FF action=reject interface=wifi1
# Клиент должен автоматически переключиться на wifi2 за < 100ms
# После теста - удали правило
/interface/wifiwave2/access-list/remove [find mac-address=AA:BB:CC:DD:EE:FF]
</code></pre>
<hr />
<h2>CAPsMAN ROS 7: централизованное управление точками доступа</h2>
<p>Три точки доступа и больше — уже нужен CAPsMAN. Иначе каждую настраиваешь отдельно, роуминг работает криво, <a class="wpil_keyword_link" title="Мониторинг" href="https://it-apteka.com/category/monitoring/" target="_blank" rel="noopener" data-wpil-keyword-link="linked" data-wpil-monitor-id="1470">мониторинг</a> нигде.</p>
<p>В ROS 7 CAPsMAN встроен в wifiwave2 — не нужен отдельный пакет. Логика: один контроллер (CAPsMAN), к нему подключаются точки доступа (CAP). Всё управление — на контроллере.</p>
<pre class="mermaid">%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 55}
}}%%
flowchart TD
CTRL["CAPsMAN Controller\nMikroTik RB5009 / CCR\nIP: 192.168.1.1"]
PROV["Provisioning Rules\nАвтоконфигурация CAP"]
CFG["Configuration Profiles\ncfg-office, cfg-guest"]
CAP1["CAP 1\nhAP ax²\nЭтаж 1"]
CAP2["CAP 2\ncAP ax\nЭтаж 2"]
CAP3["CAP 3\ncAP ax\nЭтаж 3"]
CLIENT["Клиенты\n802.11r роуминг < 100ms"] CTRL --> PROV
CTRL --> CFG
PROV -->|"Автоконфигурация"| CAP1
PROV -->|"Автоконфигурация"| CAP2
PROV -->|"Автоконфигурация"| CAP3
CFG --> CAP1
CFG --> CAP2
CFG --> CAP3
CLIENT <-->|"WiFi"| CAP1
CLIENT <-->|"WiFi"| CAP2
CLIENT <-->|"WiFi"| CAP3
style CTRL fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style PROV fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
style CFG fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
style CAP1 fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style CAP2 fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style CAP3 fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style CLIENT fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
</pre>
<p><em>Схема 2: Архитектура CAPsMAN ROS 7. Контроллер раздаёт конфигурацию точкам через provisioning rules. Клиенты роумятся между CAP за счёт 802.11r.</em></p>
<h3>Настройка контроллера CAPsMAN</h3>
<pre><code class="language-bash">
# На контроллере (главный роутер):
# 1. Configuration profile для всех точек:
/interface/wifiwave2/configuration
add name=cfg-capsman-office \
ssid=Office-WiFi \
country=Russia \
security.authentication-types=wpa2-psk,wpa3-psk \
security.passphrase=OfficePass123 \
security.ft=yes \
security.ft-over-ds=yes \
channel.frequency="" \
channel.skip-dfs-channels=yes \
steering.enabled=yes \
steering.prefer-5ghz=yes
# 2. Включить CAPsMAN:
/interface/wifiwave2/capsman
set enabled=yes interfaces=bridge
# 3. Provisioning rule: автоконфигурация подключающихся точек:
/interface/wifiwave2/provisioning
add action=create-dynamic-enabled \
master-configuration=cfg-capsman-office \
comment="Auto-provision all CAPs"
# 4. Проверить подключённые точки:
/interface/wifiwave2/capsman/remote-cap/print
# Должны появиться точки с состоянием provisioned
</code></pre>
<h3>Настройка точек доступа (CAP)</h3>
<pre><code class="language-bash">
# На каждой точке доступа (hAP ax, cAP ax и др.):
# Включить CAP-режим:
/interface/wifiwave2/cap
set enabled=yes \
discovery-interfaces=bridge \
caps-man-addresses=192.168.1.1
# caps-man-addresses = IP контроллера
# Альтернатива: если контроллер не в той же L2-сети:
set caps-man-certificate=request \
caps-man-addresses=192.168.1.1
# Проверить статус подключения к контроллеру:
/interface/wifiwave2/cap/print
# Ищем: status=connected-and-running
</code></pre>
<h3>Мониторинг клиентов через CAPsMAN</h3>
<pre><code class="language-bash">
# Все клиенты на всех точках - с контроллера:
/interface/wifiwave2/registration-table/print
# Колонка interface= покажет на какой точке сидит клиент
# Детали по конкретному клиенту:
/interface/wifiwave2/registration-table/print detail \
where mac-address=AA:BB:CC:DD:EE:FF
# Статистика точек:
/interface/wifiwave2/capsman/remote-cap/print detail
</code></pre>
<hr />
<h2>WPA3 и безопасность: настройка по-взрослому</h2>
<pre><code class="language-bash">
# WPA2/WPA3 mixed - рекомендую для корпоративных сетей:
/interface/wifiwave2/configuration
set cfg-office security.authentication-types=wpa2-psk,wpa3-psk \
security.passphrase=StrongPass2024
# Только WPA3 - если уверен что все устройства поддерживают:
set cfg-office security.authentication-types=wpa3-psk
# Management Frame Protection (защита от деаут-атак):
set cfg-office security.mfp=required
# mfp=required - обязательна (только новые клиенты)
# mfp=optional - опциональна (совместимость)
# Изоляция клиентов (гостевые сети, публичный WiFi):
set cfg-guest datapath.client-isolation=yes
# Access list - белый список по MAC:
/interface/wifiwave2/access-list
add mac-address=AA:BB:CC:DD:EE:FF action=accept interface=wifi1
add action=reject interface=wifi1
# Порядок важен: сначала разрешаем нужных, потом режем остальных
# Заблокировать конкретное устройство:
/interface/wifiwave2/access-list
add mac-address=11:22:33:44:55:66 action=reject interface=wifi1
</code></pre>
<hr />
<h2>Troubleshooting: ошибки и проблемы WiFi MikroTik ROS 7</h2>
<p>Большинство статей на этом месте пишут «проверьте подключение». Мы так не делаем.</p>
<pre class="mermaid">%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 45, 'rankSpacing': 50}
}}%%
flowchart TD
PROB["Проблема с WiFi MikroTik ROS 7"]
Q1["Интерфейс wifi1 существует?"]
Q2["Клиент видит SSID?"]
Q3["Клиент подключается?"]
Q4["Клиент получает IP?"]
Q5["Клиент выходит в интернет?"]
OK["Всё работает"]
F1["Пакет wifiwave2 не установлен\n/system/package/print"]
F2["disabled=yes на интерфейсе\nили нет configuration\n→ set wifi1 disabled=no"]
F3["Неверный пароль / WPA3 несовместимость\n→ проверить security.authentication-types"]
F4["Проблема DHCP или VLAN bridge\n→ проверить datapath.bridge и vlan-id"]
F5["Нет NAT / Firewall блокирует\n→ /ip/firewall/nat/print"]
PROB --> Q1
Q1 -->|"Нет"| F1
Q1 -->|"Есть"| Q2
Q2 -->|"Нет"| F2
Q2 -->|"Видит"| Q3
Q3 -->|"Нет"| F3
Q3 -->|"Подключился"| Q4
Q4 -->|"Нет IP"| F4
Q4 -->|"Есть IP"| Q5
Q5 -->|"Нет"| F5
Q5 -->|"Работает"| OK
style PROB fill:#f8fafc,stroke:#ef4444,stroke-width:2px,color:#b91c1c
style OK fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style F1 fill:#f8fafc,stroke:#ef4444,stroke-width:1px,color:#b91c1c
style F2 fill:#f8fafc,stroke:#ef4444,stroke-width:1px,color:#b91c1c
style F3 fill:#f8fafc,stroke:#ef4444,stroke-width:1px,color:#b91c1c
style F4 fill:#f8fafc,stroke:#f97316,stroke-width:1px,color:#c2410c
style F5 fill:#f8fafc,stroke:#f97316,stroke-width:1px,color:#c2410c
</pre>
<p><em>Схема 3: Дерево диагностики WiFi MikroTik ROS 7. Проходи сверху вниз <a title="DHCPScan - утилита для поиска Rogue DHCP" href="https://it-apteka.com/dhcpscan-utilita-dlja-poiska-rogue-dhcp/" target="_blank" rel="noopener" data-wpil-monitor-id="1477">— каждый узел сужает поиск</a> до конкретной причины.</em></p>
<h3>Проблема: SSID не виден в эфире</h3>
<pre><code class="language-bash">
# Проверить статус интерфейса:
/interface/wifiwave2/print
# running=no или disabled=yes → включаем:
set wifi1 disabled=no
# Проверить что configuration назначен:
/interface/wifiwave2/print detail
# Ищем: configuration=cfg-office
# Если пусто → set wifi1 configuration=cfg-office
# Проверить страну (влияет на разрешённые каналы):
/interface/wifiwave2/configuration/print detail
# country= не должно быть пустым
</code></pre>
<h3>Проблема: клиент видит SSID, но не подключается</h3>
<pre><code class="language-bash">
# Включить логирование wireless-событий:
/system/logging
add topics=wireless action=memory
# Смотреть логи в реальном времени:
/log/print follow where topics~"wireless"
# Ищем: authentication failed, deauthentication, association failed
# Частая причина: WPA3 не поддерживается старым устройством:
/interface/wifiwave2/configuration
set cfg-office security.authentication-types=wpa2-psk,wpa3-psk
# Mixed mode - и старые, и новые подключатся
# Проверить access-list: нет ли блокирующих правил:
/interface/wifiwave2/access-list/print
# Если есть action=reject без mac-address → это блокирует всех
</code></pre>
<h3>Проблема: клиент подключился, IP не получает</h3>
<pre><code class="language-bash">
# Проверить bridge и datapath:
/interface/wifiwave2/configuration/print detail
# datapath.bridge= должен указывать на правильный bridge
# Если VLAN - datapath.vlan-id= должен совпадать с VLAN на bridge
# Проверить VLAN-filtering на bridge:
/interface/bridge/print detail
# vlan-filtering=yes обязателен при использовании datapath.vlan-id
# Проверить DHCP-сервер:
/ip/dhcp-server/print
# disabled=no, interface= совпадает с нужным VLAN или bridge
# Ручная проверка: есть ли lease для клиента:
/ip/dhcp-server/lease/print
</code></pre>
<h3>Проблема: клиенты периодически отключаются (обрывы)</h3>
<pre><code class="language-bash">
# 1. Проверить уровень сигнала всех клиентов:
/interface/wifiwave2/registration-table/print detail
# signal= должен быть лучше -70 dBm
# Хуже -75 → клиент на грани, будет отваливаться
# 2. Проверить загруженность канала:
/interface/wifiwave2/scan wifi1 duration=30s
# Много соседей на том же канале → сменить канал
# 3. Проверить DFS:
/log/print where topics~"wireless"
# Если видишь "radar detected, switching channel" → это DFS
set cfg-office channel.skip-dfs-channels=yes
# 4. Проверить загрузку CPU роутера:
/system/resource/print
# cpu-load= > 80% при WiFi-трафике → железо не тянет
# 5. Посмотреть статистику ошибок:
/interface/wifiwave2/print stats
# Смотрим: rx-error, tx-error - высокие значения = помехи или слабый сигнал
</code></pre>
<h3>Проблема: медленный WiFi, низкая скорость</h3>
<pre><code class="language-bash">
# Проверить реальную скорость соединения клиента:
/interface/wifiwave2/registration-table/print detail
# tx-rate= и rx-rate= - фактическая скорость радиоканала
# Должно быть сотни Мбит для 5GHz, десятки для 2.4GHz
# Проверить режим работы:
/interface/wifiwave2/configuration/print detail
# mode= - должен быть ax или ac, не g и не b
# Если клиент подключён на 2.4GHz хотя поддерживает 5GHz:
set cfg-office steering.enabled=yes steering.prefer-5ghz=yes
# Band steering переведёт на 5GHz
# Проверить ширину канала:
# channel.width=20mhz на 5GHz → узкий канал, низкая скорость
# Поставь 40mhz или 80mhz для 5GHz
</code></pre>
<h3>Проблема: после обновления ROS 7 wifi1 пропал</h3>
<pre><code class="language-bash">
# Проверить наличие пакета wifiwave2:
/system/package/print
# Если пакета нет - роутер остался без wifi
# Для arm/arm64 устройств:
# Скачать extra packages с mikrotik.com → extra-packages-X.X.X-arm.zip
# Распаковать, загрузить wifiwave2-X.X.X-arm.npk через /files
# После загрузки:
/system/reboot
# Проверить что интерфейсы появились:
/interface/wifiwave2/print
# Если роутер старый и не поддерживает wifiwave2:
# Проверить список совместимого железа на wiki.mikrotik.com
# hAP ac², hAP ax², hAP ax³, Audience, cAP ax, Chateau ax, RBD53iG-5HacD2HnD - поддерживают
# hAP ac (старый), RB951 - не поддерживают wifiwave2
</code></pre>
<h3>Проблема: CAPsMAN — точки не подключаются к контроллеру</h3>
<pre><code class="language-bash">
# На контроллере - проверить что CAPsMAN включён:
/interface/wifiwave2/capsman/print
# enabled=yes
# Проверить на каком интерфейсе слушает:
# interfaces= должен содержать bridge или конкретный интерфейс в L2 сети с CAP
# На точке доступа - проверить статус CAP:
/interface/wifiwave2/cap/print
# Ищем status=
# searching - ищет контроллер, не находит
# connected-and-running - всё хорошо
# Если searching - проверить маршрут до caps-man-addresses:
/ping 192.168.1.1
# Нет ответа → проблема в L2/L3 связности
# Проверить лог на точке:
/log/print where topics~"capsman"
# certificate issues → пересоздать сертификаты:
/interface/wifiwave2/cap
set caps-man-certificate=request
</code></pre>
<hr />
<h2>Скрипты мониторинга и автоматизации</h2>
<p>Смотреть на registration-table глазами — это не мониторинг. Вот что делает это автоматически.</p>
<h3>Скрипт: алерт на клиентов со слабым сигналом</h3>
<pre><code class="language-bash">
# Сохранить в /system/script, запускать через scheduler каждые 5 минут:
# Имя скрипта: check-wifi-signal
:local threshold -75
:local wifiIface "wifi1"
:foreach client in=[/interface/wifiwave2/registration-table find \
where interface=$wifiIface] do={
:local signal [/interface/wifiwave2/registration-table get $client signal]
:local mac [/interface/wifiwave2/registration-table get $client mac-address]
:if ($signal < $threshold) do={
:log warning ("Weak WiFi client: " . $mac . " signal=" . $signal . " dBm on " . $wifiIface)
}
}
</code></pre>
<pre><code class="language-bash">
# Добавить в scheduler:
/system/scheduler
add name=check-wifi-signal interval=5m \
on-event="/system/script/run check-wifi-signal" \
comment="Monitor weak WiFi clients"
</code></pre>
<h3>Скрипт: автоперезапуск WiFi при нулевом числе клиентов</h3>
<pre><code class="language-bash">
# Имя скрипта: wifi-watchdog
# Логика: если клиентов 0 больше 10 минут - перезапустить интерфейс
:local wifiIface "wifi1"
:global wifiEmptyStart
:local clients [/interface/wifiwave2/registration-table \
print count-only where interface=$wifiIface]
:if ($clients = 0) do={
:if ([:typeof $wifiEmptyStart] = "nothing") do={
:set wifiEmptyStart [/system/clock/get time]
:log info "WiFi watchdog: zero clients, timer started"
} else={
# Проверяем - прошло ли 10 минут
:local now [/system/clock/get time]
:if ($now > ($wifiEmptyStart + 00:10:00)) do={
:log warning "WiFi watchdog: restarting $wifiIface (no clients 10min)"
/interface/wifiwave2 set $wifiIface disabled=yes
:delay 3s
/interface/wifiwave2 set $wifiIface disabled=no
:set wifiEmptyStart
}
}
} else={
:if ([:typeof $wifiEmptyStart] != "nothing") do={
:set wifiEmptyStart
:log info ("WiFi watchdog: clients online=" . $clients . ", timer reset")
}
}
</code></pre>
<h3>Скрипт: ежедневный отчёт по WiFi</h3>
<pre><code class="language-bash">
# Имя скрипта: wifi-daily-report
# Запускать в 8:00 через scheduler
:local totalClients [/interface/wifiwave2/registration-table print count-only]
:local uptime [/system/resource/get uptime]
:local cpuLoad [/system/resource/get cpu-load]
:log info ("=== WiFi Daily Report ===")
:log info ("Total connected clients: " . $totalClients)
:log info ("Router uptime: " . $uptime)
:log info ("CPU load: " . $cpuLoad . "%")
:foreach client in=[/interface/wifiwave2/registration-table find] do={
:local mac [/interface/wifiwave2/registration-table get $client mac-address]
:local signal [/interface/wifiwave2/registration-table get $client signal]
:local txRate [/interface/wifiwave2/registration-table get $client tx-rate]
:local iface [/interface/wifiwave2/registration-table get $client interface]
:log info (" " . $mac . " | " . $iface . " | signal=" . $signal . " | tx=" . $txRate)
}
</code></pre>
<pre><code class="language-bash">
# Добавить в scheduler на 8:00:
/system/scheduler
add name=wifi-daily-report start-time=08:00:00 interval=1d \
on-event="/system/script/run wifi-daily-report"
</code></pre>
<h3>Скрипт: Band Steering вручную (принудительно на 5GHz)</h3>
<pre><code class="language-bash">
# Имя скрипта: force-5ghz-steering
# Отключает клиентов с 2.4GHz если они поддерживают 5GHz
# (для сетей где band steering через конфиг недостаточен)
:foreach client in=[/interface/wifiwave2/registration-table \
find where interface=wifi1] do={
# wifi1 = 2.4GHz интерфейс в данном примере
:local mac [/interface/wifiwave2/registration-table get $client mac-address]
# Принудительное отключение - клиент переподключится и выберет 5GHz
/interface/wifiwave2/access-list
add mac-address=$mac action=reject interface=wifi1 comment="temp-5ghz-steer"
:delay 500ms
/interface/wifiwave2/access-list remove [find comment="temp-5ghz-steer"]
:log info ("Steered to 5GHz: " . $mac)
}
</code></pre>
<hr />
<h2>Чек-лист: что должно быть настроено</h2>
<p><strong>Базовая конфигурация:</strong></p>
<ul>
<li>✅ Пакет wifiwave2 установлен и активен</li>
<li>✅ Configuration profile создан с ssid, country, security</li>
<li>✅ Профиль применён к интерфейсу, disabled=no</li>
<li>✅ Канал выбран (вручную или ACS без DFS)</li>
<li>✅ Ширина канала оптимальна (20MHz для 2.4GHz, 40/80MHz для 5GHz)</li>
<li>✅ TX power не на максимуме (15–20 dBm для офиса)</li>
<li>✅ skip-dfs-channels=yes</li>
</ul>
<p><strong>Безопасность:</strong></p>
<ul>
<li>✅ WPA3 или WPA2/WPA3 mixed</li>
<li>✅ client-isolation=yes для гостевой сети</li>
<li>✅ Гостевая сеть в отдельном VLAN с firewall-правилами</li>
<li>✅ access-list настроен (если нужна фильтрация)</li>
</ul>
<p><strong>Производительность и роуминг:</strong></p>
<ul>
<li>✅ 802.11r (security.ft=yes) для сетей с несколькими точками</li>
<li>✅ 802.11k/v (interworking.enabled=yes)</li>
<li>✅ Band steering включён (steering.prefer-5ghz=yes)</li>
<li>✅ MU-MIMO включён (mimo.mode=multi-user)</li>
<li>✅ mode=ax (не g, не n)</li>
</ul>
<p><strong>Мониторинг:</strong></p>
<ul>
<li>✅ Логирование wireless включено</li>
<li>✅ registration-table проверена — сигнал клиентов лучше -70 dBm</li>
<li>✅ Скрипт мониторинга сигнала добавлен в scheduler</li>
<li>✅ Сканирование эфира выполнено — канал свободен</li>
</ul>
<p><strong>CAPsMAN (для нескольких точек):</strong></p>
<ul>
<li>✅ CAPsMAN включён на контроллере (capsman enabled=yes)</li>
<li>✅ Provisioning rule создан</li>
<li>✅ Все CAP в статусе connected-and-running</li>
<li>✅ Роуминг протестирован (смена точки < 100ms)</li>
</ul>
<hr />
<h2>FAQ: вопросы про WiFi MikroTik ROS 7</h2>
<h3>Почему после обновления на ROS 7 исчез /interface wireless?</h3>
<p>Потому что MikroTik убрал старый пакет wireless в пользу wifiwave2. Это не глюк обновления — это архитектурное решение. Wifiwave2 поддерживает Wi-Fi 6, WPA3, нативный 802.11r, встроенный CAPsMAN. Обратной совместимости нет: старую конфигурацию придётся перенести вручную. На устройствах без поддержки wifiwave2 (старое железо до ax-серии) пакет wireless остаётся.</p>
<h3>Как проверить работает ли 802.11r на MikroTik?</h3>
<pre><code class="language-bash">
# На контроллере или точке:
/interface/wifiwave2/configuration/print detail
# ft=yes ft-over-ds=yes - включено
# Проверить логи при роуминге клиента:
/log/print where topics~"wireless"
# Должна быть строка: fast transition
# Замерить время переключения:
# Ping с клиента → перейти в зону другой точки → смотреть потери
# 1-2 пакета = норма для 802.11r. 10+ пакетов = роуминг не работает
</code></pre>
<h3>Что делать если гостевые клиенты всё равно видят локальную сеть?</h3>
<pre><code class="language-bash">
# Проверить порядок firewall-правил:
/ip/firewall/filter/print
# Правило "Block guest to LAN" должно быть ДО любого accept для forward chain
# Проверить что client-isolation=yes:
/interface/wifiwave2/configuration/print detail where name=cfg-guest
# client-isolation=yes
# Проверить bridge VLAN:
/interface/bridge/vlan/print
# VLAN 99 должен быть tagged только на bridge и untagged на wifi-guest
# Если где-то untagged на eth-интерфейсе - трафик уйдёт в локалку
</code></pre>
<h3>Почему MikroTik WiFi работает нестабильно на 5GHz?</h3>
<p>Девять из десяти случаев — DFS-каналы (52–144). Роутер выбрал DFS, попался радар, переключился, все клиенты отвалились на 10 секунд. Лечится одной командой:</p>
<pre><code class="language-bash">
/interface/wifiwave2/configuration
set cfg-office channel.skip-dfs-channels=yes
</code></pre>
<p>Вторая причина — слишком широкий канал (80MHz или 160MHz) при плотном эфире. Попробуй 40MHz.</p>
<h3>Можно ли на одном физическом радио поднять несколько SSID?</h3>
<pre><code class="language-bash">
# Да. Виртуальные интерфейсы на одном радио:
/interface/wifiwave2
add name=wifi-guest master-interface=wifi1 configuration=cfg-guest disabled=no
# Ограничение: все виртуальные интерфейсы используют один физический канал
# Канал и частоту задаёт master-interface (wifi1)
# Производительность делится между всеми SSID на одном радио
</code></pre>
<hr />
<h2>Итог</h2>
<p>Wifiwave2 — это не новая обёртка над старым. Это другая система. Пересел с неё на велосипед не поедешь. Надо переучиться на три вещи: configuration profiles вместо прямых настроек на интерфейсе, datapath для VLAN-изоляции, и capsman который теперь встроен а не докручивается отдельным пакетом.</p>
<p>Всё остальное — детали. Канал — через scan и skip-dfs-channels. Роуминг — ft=yes на всех точках. Гостевая сеть — VLAN 99 на bridge с firewall-правилом DROP. Мониторинг — <a class="wpil_keyword_link" title="Скрипты" href="https://it-apteka.com/category/scripts/" target="_blank" rel="noopener" data-wpil-keyword-link="linked" data-wpil-monitor-id="1471">скрипт</a> в scheduler на 5 минут. Автомиграции нет и не будет. Но зато конфиг теперь читаемый и воспроизводимый — один профиль на десять точек вместо десяти одинаковых конфигов на каждой.</p>
<p>Чем глубже в MikroTik, тем страшнее changelog. Но работает — и это главное.</p>
"Не
<br />
Если прошли весь чек-лист и получили нестандартную ситуацию — пишите. Разберём. Подписывайтесь на телеграм IT-Apteka <a title="Windows 12 — дата выхода, версии, 64 bit и что известно в 2026 году" href="https://it-apteka.com/windows-12-data-vyhoda-versii-64-bit-i-chto-izvestno-v-2026-godu/" target="_blank" rel="noopener" data-wpil-monitor-id="1478">— там выходят</a> новые рецепты без воды.<br />
VLAN на MikroTik ROS 7: bridge, trunk, Wi-Fi
<a href="https://it-apteka.com/nastrojka-wireguard-na-vps-i-podkljuchenie-mikrotik-kak-klienta-poshagovoe-rukovodstvo/" title="Настройка WireGuard на VPS и подключение MikroTik как клиента: пошаговое руководство" target="_blank" rel="noopener" data-wpil-monitor-id="1552">VPN на MikroTik</a>: WireGuard, L2TP, IKEv2
Firewall MikroTik: <a class="wpil_keyword_link" title="Безопасность" href="https://it-apteka.com/category/security/" target="_blank" rel="noopener" data-wpil-keyword-link="linked" data-wpil-monitor-id="1468">защита</a> от DDoS и bruteforce
Быстрый ответ
В ROS 7 старый /interface wireless удалён.
Теперь всё через wifiwave2: создай configuration profile командой /interface/wifiwave2/configuration add, примени к интерфейсу через set wifi1 configuration=имя-профиля disabled=no.
Клиентов ищи через /interface/wifiwave2/registration-table/print.
Если после обновления ничего не работает — это не баг, это новая архитектура. Читай дальше.
Диагноз: обновился на ROS 7 и остался без WiFi
Обновил прошивку. Зашёл в Winbox. /interface wireless — пустой. Клиенты не подключаются. В логах тишина. Классика.
ROS 7 убил старый пакет wireless и заменил его на wifiwave2. Тихо, без предупреждения, без автомиграции конфигурации. Просто убил и положил рядом новое. Разбирайся сам.
В большинстве случаев причина проблем одна: пытаешься применить логику ROS 6 к ROS 7. Не работает. Структура другая, параметры другие, даже путь в CLI другой.
Что получишь на выходе: понимание архитектуры wifiwave2, готовые конфиги для офиса и гостевой сети, настройку CAPsMAN, VLAN-изоляцию, роуминг 802.11r, разбор типовых ошибок и скрипты мониторинга. Времени: час на первичную настройку, 15 минут на диагностику по чек-листу.
Что нужно: MikroTik с ROS 7.x, железо с поддержкой wifiwave2 (hAP ax², ax³, Audience, cAP ax и другие ax-серия), права администратора.
Wifiwave2 vs Wireless: что изменилось и почему
Главное изменение — не в интерфейсе, а в логике. Раньше ты настраивал параметры прямо на интерфейсе. Теперь создаёшь профиль (configuration), а потом применяешь его к одному или нескольким интерфейсам.
| Параметр |
Wireless (ROS 6) |
Wifiwave2 (ROS 7) |
| Путь в CLI |
/interface wireless |
/interface/wifiwave2 |
| Конфигурация |
Прямо на интерфейсе |
Отдельные configuration profiles |
| Wi-Fi 6 (802.11ax) |
Нет |
Да |
| WPA3 |
Нет |
Да |
| 802.11r Fast Roaming |
Костыльно |
Нативно |
| MU-MIMO |
Ограниченно |
Полная поддержка |
| ACS (Auto Channel) |
scan-list |
channel.frequency=»» |
| CCA Threshold |
Есть |
Нет прямого параметра |
| RTS/Fragmentation |
Есть |
Нет явно |
| CAPsMAN |
Отдельный пакет |
Встроен в wifiwave2 |
| Детальные логи |
Развёрнутые |
Скромнее |
Экспорт старой конфигурации перед обновлением — если ещё не поздно:
# На ROS 6, до обновления:
/interface wireless export file=wifi-backup
# Файл ляжет в Files. Сохрани - потом хотя бы будет с чего переписывать вручную.
Автомиграция конфигурации не существует
После обновления ROS 6 → ROS 7 старая конфигурация /interface wireless не переносится автоматически. Перенастраивать придётся вручную через wifiwave2. Это не баг
— это дизайн-решение MikroTik. Спорить бесполезно.
Базовая настройка WiFi MikroTik ROS 7: минималка за 5 минут
Сначала — рабочая сеть. Потом — тонкая настройка. Не наоборот.
Шаг 1 — Проверить что wifiwave2 вообще есть
# Проверить наличие пакета wifiwave2:
/system/package/print
# Ищем строку с wifiwave2 и статусом installed
# Если пакета нет - скачать с mikrotik.com под свою архитектуру (arm, arm64, mipsbe)
# и установить через /system/package/upload
# Проверить интерфейсы:
/interface/wifiwave2/print
# Должны быть wifi1, wifi2 (2.4GHz и 5GHz)
Шаг 2 — Создать configuration profile
/interface/wifiwave2/configuration
add name=cfg-office \
ssid=Office-WiFi \
country=Russia \
security.authentication-types=wpa2-psk,wpa3-psk \
security.passphrase=StrongPassword123
Шаг 3 — Применить к интерфейсу
/interface/wifiwave2
set wifi1 configuration=cfg-office disabled=no
Шаг 4 — Убедиться что работает
# Статус интерфейса:
/interface/wifiwave2/print detail
# Клиенты (если уже кто-то подключился):
/interface/wifiwave2/registration-table/print
# Монитор в реальном времени:
/interface/wifiwave2/monitor wifi1
Готово. Базовая сеть живёт. Теперь делаем её нормальной.
Настройка каналов WiFi MikroTik: борьба с помехами
Неправильный канал — главная причина жалоб «тормозит wifi mikrotik» и «клиенты отключаются». Не мощность, не железо. Канал.
Сканирование эфира — смотрим что вокруг
# Сканировать 30 секунд (10 - мало, картина неполная):
/interface/wifiwave2/scan wifi1 duration=30s
# Результат: SSID, канал, сигнал, загруженность
# Ищем каналы где минимум соседей с сильным сигналом (> -60 dBm)
Ручной выбор канала
# 2.4GHz - только 1, 6 или 11. Они не пересекаются. Остальные - яд.
/interface/wifiwave2/configuration
set cfg-office channel.frequency=2412 channel.width=20mhz
# 2412=канал1, 2437=канал6, 2462=канал11
# 5GHz без DFS (каналы 36-48 и 149-165):
/interface/wifiwave2/configuration
set cfg-office channel.frequency=5180 channel.width=40mhz
# 5180=36, 5200=40, 5220=44, 5240=48
# Исключить DFS-каналы (52-144) - радары заставят переключиться без предупреждения:
set cfg-office channel.skip-dfs-channels=yes
Ширина канала — правило простое: 2.4GHz → только 20MHz (40MHz создаёт помех больше чем даёт скорости). 5GHz в офисе → 40MHz. 5GHz дома где нет соседей → 80MHz. 160MHz → оставь в покое, пока не знаешь точно зачем.
ACS — автоматический выбор канала
# Пустое значение frequency = ACS:
/interface/wifiwave2/configuration
set cfg-office channel.frequency="" channel.width=40mhz
# Ограничить ACS только безопасными каналами (без DFS):
set cfg-office channel.frequency=5180-5240,5745-5825 channel.width=40mhz
# Диапазон 36-48 и 149-165 - без радаров, без неожиданностей
ACS и DFS - опасная комбинация
Если включил ACS без ограничений — роутер может выбрать DFS-канал (52-144). Радар в радиусе 30 км заставит сменить канал за 10 секунд. В это время все клиенты висят. Всегда ограничивай ACS через channel.frequency с конкретными диапазонами или ставь skip-dfs-channels=yes.
TX Power и MU-MIMO: мощность не равно покрытие
Частая ошибка — выкрутить TX power на максимум. Интуиция понятна. Результат противоположный ожидаемому.
Телефон передаёт на 20 dBm. Роутер орёт на 30. Роутер слышит телефон, телефон роутер — еле-еле. Итог: подключение есть, пакеты теряются, скорость никакая. Плюс помехи всем соседям. Они поднимают мощность. Гонка вооружений. Проигрывают все.
TX Power настройка
# Посмотреть текущую мощность:
/interface/wifiwave2/print detail
# Ищем tx-power=
# Установить оптимальную мощность:
/interface/wifiwave2
set wifi1 configuration.tx-power=20
# dBm. Для офиса 15-20, для склада 23-27, для улицы - максимум.
MU-MIMO и Wi-Fi 6 режимы
# MU-MIMO (передача нескольким клиентам одновременно):
/interface/wifiwave2/configuration
set cfg-office mimo.mode=multi-user
# Режим Wi-Fi 6 (обратно совместимый - рекомендую):
set cfg-office mode=ax
# ax = Wi-Fi 6 приоритетно, но ac/n/g тоже работают
# Только Wi-Fi 6 (для сетей где всё железо новое):
set cfg-office mode=ax-only
# Band steering: переводить клиентов с 2.4GHz на 5GHz если поддерживают:
set cfg-office steering.enabled=yes steering.prefer-5ghz=yes
VLAN и Bridge для Wifiwave2: гостевая сеть с изоляцией
Самый частый запрос после базовой настройки — гостевая сеть. Отдельный SSID, своя подсеть, без доступа к локалке. В wifiwave2 это решается через datapath и VLAN на бридже.
Архитектура: что куда смотрит
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 55}
}}%%
flowchart TD
INT["Интернет"]
FW["Firewall\nMikroTik"]
BR["Bridge\nbr-main"]
ETH["ether1\nWAN"]
VLAN10["VLAN 10\n192.168.10.0/24\nЛокальная сеть"]
VLAN99["VLAN 99\n192.168.99.0/24\nГостевая сеть"]
WIFI_CORP["wifi1\nSSID: Office-WiFi\ncfg-office"]
WIFI_GUEST["wifi1 (virtual)\nSSID: Guest-WiFi\ncfg-guest"]
INT --> ETH --> FW --> BR
BR --> VLAN10 --> WIFI_CORP
BR --> VLAN99 --> WIFI_GUEST
FW -->|"DROP: guest → LAN"| VLAN10
FW -->|"ACCEPT: guest → internet"| INT
style INT fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style FW fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
style BR fill:#f8fafc,stroke:#94a3b8,stroke-width:2px,color:#1e293b
style VLAN10 fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style VLAN99 fill:#f8fafc,stroke:#ef4444,stroke-width:2px,color:#b91c1c
style WIFI_CORP fill:#f8fafc,stroke:#22c55e,stroke-width:1px,color:#15803d
style WIFI_GUEST fill:#f8fafc,stroke:#ef4444,stroke-width:1px,color:#b91c1c
Схема 1: Разделение корпоративной и гостевой сети MikroTik через VLAN на bridge. Firewall блокирует доступ гостей в локальную сеть.
Настройка VLAN + Bridge для Wifiwave2
# 1. VLAN для гостевой сети на бридже:
/interface/vlan
add interface=bridge name=vlan-guest vlan-id=99
# 2. IP для гостевого VLAN:
/ip/address
add address=192.168.99.1/24 interface=vlan-guest
# 3. DHCP-пул и сервер для гостей:
/ip/pool
add name=pool-guest ranges=192.168.99.100-192.168.99.200
/ip/dhcp-server
add address-pool=pool-guest interface=vlan-guest name=dhcp-guest disabled=no
/ip/dhcp-server/network
add address=192.168.99.0/24 gateway=192.168.99.1 dns-server=8.8.8.8
# 4. Configuration profile для гостевой сети:
/interface/wifiwave2/configuration
add name=cfg-guest \
ssid=Guest-WiFi \
country=Russia \
security.authentication-types=wpa2-psk,wpa3-psk \
security.passphrase=GuestPass2024 \
datapath.client-isolation=yes \
datapath.bridge=bridge \
datapath.vlan-id=99 \
datapath.vlan-mode=use-tag
# 5. Виртуальный интерфейс на том же физическом радио:
/interface/wifiwave2
add name=wifi-guest master-interface=wifi1 configuration=cfg-guest disabled=no
# 6. Firewall: гости идут в интернет, но не в локалку:
/ip/firewall/filter
add chain=forward src-address=192.168.99.0/24 dst-address=192.168.1.0/24 \
action=drop comment="Block: guest to LAN"
add chain=forward src-address=192.168.99.0/24 out-interface=ether1 \
action=accept comment="Allow: guest to internet"
datapath.vlan-mode - не перепутай
Два варианта: use-tag (тегированный VLAN, нужен VLAN-интерфейс на бридже) и use-service-tag (QinQ). Для стандартной гостевой сети — use-tag. Если
клиенты не получают DHCP — проверь что bridge настроен с VLAN-filtering=yes и нужный VLAN добавлен в bridge VLAN таблицу.
# Проверить VLAN-filtering на bridge:
/interface/bridge/print detail
# Ищем: vlan-filtering=yes
# Если нет - включить:
/interface/bridge
set bridge vlan-filtering=yes
# Добавить VLAN 99 в bridge VLAN таблицу:
/interface/bridge/vlan
add bridge=bridge tagged=bridge untagged=wifi-guest vlan-ids=99
# Проверить что гости получают адреса:
/ip/dhcp-server/lease/print where server=dhcp-guest
802.11r Fast Roaming: роуминг за 100ms вместо 10 секунд
Клиент переходит между точками. Стандартный роуминг: переподключение 5–10 секунд, VoIP падает, видеоконференция зависает. 802.11r делает это за 50–100 мс — незаметно.
802.11r (Fast BSS Transition) — быстрое переключение. 802.11k — клиент знает список соседних точек, выбирает сам. 802.11v — точка может попросить клиента уйти на другую. Все три вместе — бесшовный роуминг.
# Включить 802.11r + 802.11k/v на configuration profile:
/interface/wifiwave2/configuration
set cfg-office \
security.ft=yes \
security.ft-over-ds=yes \
interworking.enabled=yes
# ft = Fast Transition (802.11r)
# ft-over-ds = переключение через проводную сеть (быстрее чем по эфиру)
# interworking = 802.11k/v (клиенты видят соседей, точки управляют роумингом)
# Проверить что включено:
/interface/wifiwave2/configuration/print detail
# Ищем: ft=yes ft-over-ds=yes
Для 802.11r нужно одинаковое
Все точки доступа должны использовать одинаковый SSID, одинаковый security profile и быть в одном Mobility Domain (настраивается автоматически при ft=yes). Если хоть одна точка без ft=yes — роуминг к ней будет медленным и сломает всю картину.
# Проверить роуминг: посмотреть с какой точки подключён клиент:
/interface/wifiwave2/registration-table/print detail
# Поле: interface= покажет на какой точке сейчас сидит клиент
# Принудительно отключить клиента (для теста роуминга):
/interface/wifiwave2/access-list
add mac-address=AA:BB:CC:DD:EE:FF action=reject interface=wifi1
# Клиент должен автоматически переключиться на wifi2 за < 100ms
# После теста - удали правило
/interface/wifiwave2/access-list/remove [find mac-address=AA:BB:CC:DD:EE:FF]
CAPsMAN ROS 7: централизованное управление точками доступа
Три точки доступа и больше — уже нужен CAPsMAN. Иначе каждую настраиваешь отдельно, роуминг работает криво, мониторинг нигде.
В ROS 7 CAPsMAN встроен в wifiwave2 — не нужен отдельный пакет. Логика: один контроллер (CAPsMAN), к нему подключаются точки доступа (CAP). Всё управление — на контроллере.
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 55}
}}%%
flowchart TD
CTRL["CAPsMAN Controller\nMikroTik RB5009 / CCR\nIP: 192.168.1.1"]
PROV["Provisioning Rules\nАвтоконфигурация CAP"]
CFG["Configuration Profiles\ncfg-office, cfg-guest"]
CAP1["CAP 1\nhAP ax²\nЭтаж 1"]
CAP2["CAP 2\ncAP ax\nЭтаж 2"]
CAP3["CAP 3\ncAP ax\nЭтаж 3"]
CLIENT["Клиенты\n802.11r роуминг < 100ms"] CTRL --> PROV
CTRL --> CFG
PROV -->|"Автоконфигурация"| CAP1
PROV -->|"Автоконфигурация"| CAP2
PROV -->|"Автоконфигурация"| CAP3
CFG --> CAP1
CFG --> CAP2
CFG --> CAP3
CLIENT <-->|"WiFi"| CAP1
CLIENT <-->|"WiFi"| CAP2
CLIENT <-->|"WiFi"| CAP3
style CTRL fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style PROV fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
style CFG fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
style CAP1 fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style CAP2 fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style CAP3 fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style CLIENT fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
Схема 2: Архитектура CAPsMAN ROS 7. Контроллер раздаёт конфигурацию точкам через provisioning rules. Клиенты роумятся между CAP за счёт 802.11r.
Настройка контроллера CAPsMAN
# На контроллере (главный роутер):
# 1. Configuration profile для всех точек:
/interface/wifiwave2/configuration
add name=cfg-capsman-office \
ssid=Office-WiFi \
country=Russia \
security.authentication-types=wpa2-psk,wpa3-psk \
security.passphrase=OfficePass123 \
security.ft=yes \
security.ft-over-ds=yes \
channel.frequency="" \
channel.skip-dfs-channels=yes \
steering.enabled=yes \
steering.prefer-5ghz=yes
# 2. Включить CAPsMAN:
/interface/wifiwave2/capsman
set enabled=yes interfaces=bridge
# 3. Provisioning rule: автоконфигурация подключающихся точек:
/interface/wifiwave2/provisioning
add action=create-dynamic-enabled \
master-configuration=cfg-capsman-office \
comment="Auto-provision all CAPs"
# 4. Проверить подключённые точки:
/interface/wifiwave2/capsman/remote-cap/print
# Должны появиться точки с состоянием provisioned
Настройка точек доступа (CAP)
# На каждой точке доступа (hAP ax, cAP ax и др.):
# Включить CAP-режим:
/interface/wifiwave2/cap
set enabled=yes \
discovery-interfaces=bridge \
caps-man-addresses=192.168.1.1
# caps-man-addresses = IP контроллера
# Альтернатива: если контроллер не в той же L2-сети:
set caps-man-certificate=request \
caps-man-addresses=192.168.1.1
# Проверить статус подключения к контроллеру:
/interface/wifiwave2/cap/print
# Ищем: status=connected-and-running
Мониторинг клиентов через CAPsMAN
# Все клиенты на всех точках - с контроллера:
/interface/wifiwave2/registration-table/print
# Колонка interface= покажет на какой точке сидит клиент
# Детали по конкретному клиенту:
/interface/wifiwave2/registration-table/print detail \
where mac-address=AA:BB:CC:DD:EE:FF
# Статистика точек:
/interface/wifiwave2/capsman/remote-cap/print detail
WPA3 и безопасность: настройка по-взрослому
# WPA2/WPA3 mixed - рекомендую для корпоративных сетей:
/interface/wifiwave2/configuration
set cfg-office security.authentication-types=wpa2-psk,wpa3-psk \
security.passphrase=StrongPass2024
# Только WPA3 - если уверен что все устройства поддерживают:
set cfg-office security.authentication-types=wpa3-psk
# Management Frame Protection (защита от деаут-атак):
set cfg-office security.mfp=required
# mfp=required - обязательна (только новые клиенты)
# mfp=optional - опциональна (совместимость)
# Изоляция клиентов (гостевые сети, публичный WiFi):
set cfg-guest datapath.client-isolation=yes
# Access list - белый список по MAC:
/interface/wifiwave2/access-list
add mac-address=AA:BB:CC:DD:EE:FF action=accept interface=wifi1
add action=reject interface=wifi1
# Порядок важен: сначала разрешаем нужных, потом режем остальных
# Заблокировать конкретное устройство:
/interface/wifiwave2/access-list
add mac-address=11:22:33:44:55:66 action=reject interface=wifi1
Troubleshooting: ошибки и проблемы WiFi MikroTik ROS 7
Большинство статей на этом месте пишут «проверьте подключение». Мы так не делаем.
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 45, 'rankSpacing': 50}
}}%%
flowchart TD
PROB["Проблема с WiFi MikroTik ROS 7"]
Q1["Интерфейс wifi1 существует?"]
Q2["Клиент видит SSID?"]
Q3["Клиент подключается?"]
Q4["Клиент получает IP?"]
Q5["Клиент выходит в интернет?"]
OK["Всё работает"]
F1["Пакет wifiwave2 не установлен\n/system/package/print"]
F2["disabled=yes на интерфейсе\nили нет configuration\n→ set wifi1 disabled=no"]
F3["Неверный пароль / WPA3 несовместимость\n→ проверить security.authentication-types"]
F4["Проблема DHCP или VLAN bridge\n→ проверить datapath.bridge и vlan-id"]
F5["Нет NAT / Firewall блокирует\n→ /ip/firewall/nat/print"]
PROB --> Q1
Q1 -->|"Нет"| F1
Q1 -->|"Есть"| Q2
Q2 -->|"Нет"| F2
Q2 -->|"Видит"| Q3
Q3 -->|"Нет"| F3
Q3 -->|"Подключился"| Q4
Q4 -->|"Нет IP"| F4
Q4 -->|"Есть IP"| Q5
Q5 -->|"Нет"| F5
Q5 -->|"Работает"| OK
style PROB fill:#f8fafc,stroke:#ef4444,stroke-width:2px,color:#b91c1c
style OK fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style F1 fill:#f8fafc,stroke:#ef4444,stroke-width:1px,color:#b91c1c
style F2 fill:#f8fafc,stroke:#ef4444,stroke-width:1px,color:#b91c1c
style F3 fill:#f8fafc,stroke:#ef4444,stroke-width:1px,color:#b91c1c
style F4 fill:#f8fafc,stroke:#f97316,stroke-width:1px,color:#c2410c
style F5 fill:#f8fafc,stroke:#f97316,stroke-width:1px,color:#c2410c
Схема 3: Дерево диагностики WiFi MikroTik ROS 7. Проходи сверху вниз — каждый узел сужает поиск до конкретной причины.
Проблема: SSID не виден в эфире
# Проверить статус интерфейса:
/interface/wifiwave2/print
# running=no или disabled=yes → включаем:
set wifi1 disabled=no
# Проверить что configuration назначен:
/interface/wifiwave2/print detail
# Ищем: configuration=cfg-office
# Если пусто → set wifi1 configuration=cfg-office
# Проверить страну (влияет на разрешённые каналы):
/interface/wifiwave2/configuration/print detail
# country= не должно быть пустым
Проблема: клиент видит SSID, но не подключается
# Включить логирование wireless-событий:
/system/logging
add topics=wireless action=memory
# Смотреть логи в реальном времени:
/log/print follow where topics~"wireless"
# Ищем: authentication failed, deauthentication, association failed
# Частая причина: WPA3 не поддерживается старым устройством:
/interface/wifiwave2/configuration
set cfg-office security.authentication-types=wpa2-psk,wpa3-psk
# Mixed mode - и старые, и новые подключатся
# Проверить access-list: нет ли блокирующих правил:
/interface/wifiwave2/access-list/print
# Если есть action=reject без mac-address → это блокирует всех
Проблема: клиент подключился, IP не получает
# Проверить bridge и datapath:
/interface/wifiwave2/configuration/print detail
# datapath.bridge= должен указывать на правильный bridge
# Если VLAN - datapath.vlan-id= должен совпадать с VLAN на bridge
# Проверить VLAN-filtering на bridge:
/interface/bridge/print detail
# vlan-filtering=yes обязателен при использовании datapath.vlan-id
# Проверить DHCP-сервер:
/ip/dhcp-server/print
# disabled=no, interface= совпадает с нужным VLAN или bridge
# Ручная проверка: есть ли lease для клиента:
/ip/dhcp-server/lease/print
Проблема: клиенты периодически отключаются (обрывы)
# 1. Проверить уровень сигнала всех клиентов:
/interface/wifiwave2/registration-table/print detail
# signal= должен быть лучше -70 dBm
# Хуже -75 → клиент на грани, будет отваливаться
# 2. Проверить загруженность канала:
/interface/wifiwave2/scan wifi1 duration=30s
# Много соседей на том же канале → сменить канал
# 3. Проверить DFS:
/log/print where topics~"wireless"
# Если видишь "radar detected, switching channel" → это DFS
set cfg-office channel.skip-dfs-channels=yes
# 4. Проверить загрузку CPU роутера:
/system/resource/print
# cpu-load= > 80% при WiFi-трафике → железо не тянет
# 5. Посмотреть статистику ошибок:
/interface/wifiwave2/print stats
# Смотрим: rx-error, tx-error - высокие значения = помехи или слабый сигнал
Проблема: медленный WiFi, низкая скорость
# Проверить реальную скорость соединения клиента:
/interface/wifiwave2/registration-table/print detail
# tx-rate= и rx-rate= - фактическая скорость радиоканала
# Должно быть сотни Мбит для 5GHz, десятки для 2.4GHz
# Проверить режим работы:
/interface/wifiwave2/configuration/print detail
# mode= - должен быть ax или ac, не g и не b
# Если клиент подключён на 2.4GHz хотя поддерживает 5GHz:
set cfg-office steering.enabled=yes steering.prefer-5ghz=yes
# Band steering переведёт на 5GHz
# Проверить ширину канала:
# channel.width=20mhz на 5GHz → узкий канал, низкая скорость
# Поставь 40mhz или 80mhz для 5GHz
Проблема: после обновления ROS 7 wifi1 пропал
# Проверить наличие пакета wifiwave2:
/system/package/print
# Если пакета нет - роутер остался без wifi
# Для arm/arm64 устройств:
# Скачать extra packages с mikrotik.com → extra-packages-X.X.X-arm.zip
# Распаковать, загрузить wifiwave2-X.X.X-arm.npk через /files
# После загрузки:
/system/reboot
# Проверить что интерфейсы появились:
/interface/wifiwave2/print
# Если роутер старый и не поддерживает wifiwave2:
# Проверить список совместимого железа на wiki.mikrotik.com
# hAP ac², hAP ax², hAP ax³, Audience, cAP ax, Chateau ax, RBD53iG-5HacD2HnD - поддерживают
# hAP ac (старый), RB951 - не поддерживают wifiwave2
Проблема: CAPsMAN — точки не подключаются к контроллеру
# На контроллере - проверить что CAPsMAN включён:
/interface/wifiwave2/capsman/print
# enabled=yes
# Проверить на каком интерфейсе слушает:
# interfaces= должен содержать bridge или конкретный интерфейс в L2 сети с CAP
# На точке доступа - проверить статус CAP:
/interface/wifiwave2/cap/print
# Ищем status=
# searching - ищет контроллер, не находит
# connected-and-running - всё хорошо
# Если searching - проверить маршрут до caps-man-addresses:
/ping 192.168.1.1
# Нет ответа → проблема в L2/L3 связности
# Проверить лог на точке:
/log/print where topics~"capsman"
# certificate issues → пересоздать сертификаты:
/interface/wifiwave2/cap
set caps-man-certificate=request
Скрипты мониторинга и автоматизации
Смотреть на registration-table глазами — это не мониторинг. Вот что делает это автоматически.
Скрипт: алерт на клиентов со слабым сигналом
# Сохранить в /system/script, запускать через scheduler каждые 5 минут:
# Имя скрипта: check-wifi-signal
:local threshold -75
:local wifiIface "wifi1"
:foreach client in=[/interface/wifiwave2/registration-table find \
where interface=$wifiIface] do={
:local signal [/interface/wifiwave2/registration-table get $client signal]
:local mac [/interface/wifiwave2/registration-table get $client mac-address]
:if ($signal < $threshold) do={
:log warning ("Weak WiFi client: " . $mac . " signal=" . $signal . " dBm on " . $wifiIface)
}
}
# Добавить в scheduler:
/system/scheduler
add name=check-wifi-signal interval=5m \
on-event="/system/script/run check-wifi-signal" \
comment="Monitor weak WiFi clients"
Скрипт: автоперезапуск WiFi при нулевом числе клиентов
# Имя скрипта: wifi-watchdog
# Логика: если клиентов 0 больше 10 минут - перезапустить интерфейс
:local wifiIface "wifi1"
:global wifiEmptyStart
:local clients [/interface/wifiwave2/registration-table \
print count-only where interface=$wifiIface]
:if ($clients = 0) do={
:if ([:typeof $wifiEmptyStart] = "nothing") do={
:set wifiEmptyStart [/system/clock/get time]
:log info "WiFi watchdog: zero clients, timer started"
} else={
# Проверяем - прошло ли 10 минут
:local now [/system/clock/get time]
:if ($now > ($wifiEmptyStart + 00:10:00)) do={
:log warning "WiFi watchdog: restarting $wifiIface (no clients 10min)"
/interface/wifiwave2 set $wifiIface disabled=yes
:delay 3s
/interface/wifiwave2 set $wifiIface disabled=no
:set wifiEmptyStart
}
}
} else={
:if ([:typeof $wifiEmptyStart] != "nothing") do={
:set wifiEmptyStart
:log info ("WiFi watchdog: clients online=" . $clients . ", timer reset")
}
}
Скрипт: ежедневный отчёт по WiFi
# Имя скрипта: wifi-daily-report
# Запускать в 8:00 через scheduler
:local totalClients [/interface/wifiwave2/registration-table print count-only]
:local uptime [/system/resource/get uptime]
:local cpuLoad [/system/resource/get cpu-load]
:log info ("=== WiFi Daily Report ===")
:log info ("Total connected clients: " . $totalClients)
:log info ("Router uptime: " . $uptime)
:log info ("CPU load: " . $cpuLoad . "%")
:foreach client in=[/interface/wifiwave2/registration-table find] do={
:local mac [/interface/wifiwave2/registration-table get $client mac-address]
:local signal [/interface/wifiwave2/registration-table get $client signal]
:local txRate [/interface/wifiwave2/registration-table get $client tx-rate]
:local iface [/interface/wifiwave2/registration-table get $client interface]
:log info (" " . $mac . " | " . $iface . " | signal=" . $signal . " | tx=" . $txRate)
}
# Добавить в scheduler на 8:00:
/system/scheduler
add name=wifi-daily-report start-time=08:00:00 interval=1d \
on-event="/system/script/run wifi-daily-report"
Скрипт: Band Steering вручную (принудительно на 5GHz)
# Имя скрипта: force-5ghz-steering
# Отключает клиентов с 2.4GHz если они поддерживают 5GHz
# (для сетей где band steering через конфиг недостаточен)
:foreach client in=[/interface/wifiwave2/registration-table \
find where interface=wifi1] do={
# wifi1 = 2.4GHz интерфейс в данном примере
:local mac [/interface/wifiwave2/registration-table get $client mac-address]
# Принудительное отключение - клиент переподключится и выберет 5GHz
/interface/wifiwave2/access-list
add mac-address=$mac action=reject interface=wifi1 comment="temp-5ghz-steer"
:delay 500ms
/interface/wifiwave2/access-list remove [find comment="temp-5ghz-steer"]
:log info ("Steered to 5GHz: " . $mac)
}
Чек-лист: что должно быть настроено
Базовая конфигурация:
- ✅ Пакет wifiwave2 установлен и активен
- ✅ Configuration profile создан с ssid, country, security
- ✅ Профиль применён к интерфейсу, disabled=no
- ✅ Канал выбран (вручную или ACS без DFS)
- ✅ Ширина канала оптимальна (20MHz для 2.4GHz, 40/80MHz для 5GHz)
- ✅ TX power не на максимуме (15–20 dBm для офиса)
- ✅ skip-dfs-channels=yes
Безопасность:
- ✅ WPA3 или WPA2/WPA3 mixed
- ✅ client-isolation=yes для гостевой сети
- ✅ Гостевая сеть в отдельном VLAN с firewall-правилами
- ✅ access-list настроен (если нужна фильтрация)
Производительность и роуминг:
- ✅ 802.11r (security.ft=yes) для сетей с несколькими точками
- ✅ 802.11k/v (interworking.enabled=yes)
- ✅ Band steering включён (steering.prefer-5ghz=yes)
- ✅ MU-MIMO включён (mimo.mode=multi-user)
- ✅ mode=ax (не g, не n)
Мониторинг:
- ✅ Логирование wireless включено
- ✅ registration-table проверена — сигнал клиентов лучше -70 dBm
- ✅ Скрипт мониторинга сигнала добавлен в scheduler
- ✅ Сканирование эфира выполнено — канал свободен
CAPsMAN (для нескольких точек):
- ✅ CAPsMAN включён на контроллере (capsman enabled=yes)
- ✅ Provisioning rule создан
- ✅ Все CAP в статусе connected-and-running
- ✅ Роуминг протестирован (смена точки < 100ms)
FAQ: вопросы про WiFi MikroTik ROS 7
Почему после обновления на ROS 7 исчез /interface wireless?
Потому что MikroTik убрал старый пакет wireless в пользу wifiwave2. Это не глюк обновления — это архитектурное решение. Wifiwave2 поддерживает Wi-Fi 6, WPA3, нативный 802.11r, встроенный CAPsMAN. Обратной совместимости нет: старую конфигурацию придётся перенести вручную. На устройствах без поддержки wifiwave2 (старое железо до ax-серии) пакет wireless остаётся.
Как проверить работает ли 802.11r на MikroTik?
# На контроллере или точке:
/interface/wifiwave2/configuration/print detail
# ft=yes ft-over-ds=yes - включено
# Проверить логи при роуминге клиента:
/log/print where topics~"wireless"
# Должна быть строка: fast transition
# Замерить время переключения:
# Ping с клиента → перейти в зону другой точки → смотреть потери
# 1-2 пакета = норма для 802.11r. 10+ пакетов = роуминг не работает
Что делать если гостевые клиенты всё равно видят локальную сеть?
# Проверить порядок firewall-правил:
/ip/firewall/filter/print
# Правило "Block guest to LAN" должно быть ДО любого accept для forward chain
# Проверить что client-isolation=yes:
/interface/wifiwave2/configuration/print detail where name=cfg-guest
# client-isolation=yes
# Проверить bridge VLAN:
/interface/bridge/vlan/print
# VLAN 99 должен быть tagged только на bridge и untagged на wifi-guest
# Если где-то untagged на eth-интерфейсе - трафик уйдёт в локалку
Почему MikroTik WiFi работает нестабильно на 5GHz?
Девять из десяти случаев — DFS-каналы (52–144). Роутер выбрал DFS, попался радар, переключился, все клиенты отвалились на 10 секунд. Лечится одной командой:
/interface/wifiwave2/configuration
set cfg-office channel.skip-dfs-channels=yes
Вторая причина — слишком широкий канал (80MHz или 160MHz) при плотном эфире. Попробуй 40MHz.
Можно ли на одном физическом радио поднять несколько SSID?
# Да. Виртуальные интерфейсы на одном радио:
/interface/wifiwave2
add name=wifi-guest master-interface=wifi1 configuration=cfg-guest disabled=no
# Ограничение: все виртуальные интерфейсы используют один физический канал
# Канал и частоту задаёт master-interface (wifi1)
# Производительность делится между всеми SSID на одном радио
Итог
Wifiwave2 — это не новая обёртка над старым. Это другая система. Пересел с неё на велосипед не поедешь. Надо переучиться на три вещи: configuration profiles вместо прямых настроек на интерфейсе, datapath для VLAN-изоляции, и capsman который теперь встроен а не докручивается отдельным пакетом.
Всё остальное — детали. Канал — через scan и skip-dfs-channels. Роуминг — ft=yes на всех точках. Гостевая сеть — VLAN 99 на bridge с firewall-правилом DROP. Мониторинг — скрипт в scheduler на 5 минут. Автомиграции нет и не будет. Но зато конфиг теперь читаемый и воспроизводимый — один профиль на десять точек вместо десяти одинаковых конфигов на каждой.
Чем глубже в MikroTik, тем страшнее changelog. Но работает — и это главное.
Не заработало - пишите в комментарии
Если прошли весь чек-лист и получили нестандартную ситуацию — пишите. Разберём. Подписывайтесь на телеграм IT-Apteka
— там выходят новые рецепты без воды.
VLAN на MikroTik ROS 7: bridge, trunk, Wi-Fi
VPN на MikroTik: WireGuard, L2TP, IKEv2
Firewall MikroTik: защита от DDoS и bruteforce