Mesh на OpenWrt решает знакомую проблему: телефон «держится» за дальний роутер и тормозит, хотя рядом есть вторая точка. Настройка mesh-сети на OpenWrt даёт единый Wi-Fi с бесшовным переходом между точками по всей квартире. Разберём три способа объединить роутеры, полную конфигурацию и настройку роуминга.

Mesh ≠ репитер ≠ роуминг: разбираемся в терминах

  • Репитер — тупо повторяет сигнал, теряя половину скорости и часто создавая отдельную сеть.
  • Роуминг — переключение клиента между точками с одинаковым SSID (сам по себе бывает «рваным»).
  • Mesh — точки объединены в единую сеть с общим управлением; при грамотной настройке добавляется бесшовное переключение (802.11r).

Что понадобится: 2+ роутера на OpenWrt (желательно одинаковых), кабель для первой настройки, одинаковая версия OpenWrt на всех устройствах.

Три способа объединить роутеры (выбираем свой)

  • Вариант 1: Кабель (Ethernet backhaul) + одинаковый SSID + 802.11r — самый быстрый и стабильный. Если можно протянуть провод — делайте так. Точки соединяются кабелем, Wi-Fi отдаётся клиентам, 802.11r обеспечивает бесшовность.
  • Вариант 2: 802.11s Mesh — беспроводной backhaul, встроен в OpenWrt. Провод не нужен, но скорость ниже.
  • Вариант 3: 802.11s + batman-adv — для сложных топологий (3+ узлов, полноценный L2-mesh).
  • Вариант 4: WDS (Bridge) — простая альтернатива, когда драйвер не поддерживает 802.11s.
СпособСкоростьСложностьКому подойдёт
Кабель + 802.11rмаксимальнаянизкаяесть возможность протянуть провод
802.11sсредняясредняя2 точки без провода
802.11s + batman-advсредняявысокая3+ узлов, сложная топология
WDSсредняянизкаянет поддержки 802.11s

Проверьте, поддерживает ли чипсет 802.11s:

iw list | grep -A10 "Supported interface modes"

В списке должно быть * mesh point.

Ключевые понятия за 2 минуты

  • SSID — имя сети; BSSID — MAC конкретной точки. При одинаковом SSID телефон всё равно тормозит, если сам не хочет переключаться на более сильный BSSID.
  • 802.11r (Fast Transition) — быстрое переключение между точками без переавторизации. Главный элемент бесшовности.
  • 802.11k / 802.11v — «подсказки» клиенту, к какой точке лучше перейти.
  • DAWN / usteer — «мозг», который активно перекидывает клиента на лучшую точку.
  • Backhaul — канал между точками; Fronthaul — канал для клиентов.

Планирование: рисуем схему до настройки

  • Главный роутер (gateway): 192.168.1.1, раздаёт DHCP, держит WAN.
  • Точки (dumb AP): 192.168.1.2, 192.168.1.3 — статические IP, DHCP выключен.
  • Все точки на одном канале (обязательно для 802.11s).
УзелРольLAN IPDHCP
Роутер 1Gateway192.168.1.1включён
Роутер 2AP + Mesh192.168.1.2выключен
Роутер 3AP + Mesh192.168.1.3выключен
Два DHCP в одной сети — самая частая ошибка новичка. DHCP-сервер должен работать только на главном роутере. На точках его обязательно выключаем, иначе устройства будут получать конфликтующие адреса.

Шаг 1. Подготовка всех роутеров

Одинаковая версия OpenWrt на всех устройствах (см. обновление OpenWrt). Для mesh нужен wpad с поддержкой mesh — базовый wpad-basic её не имеет:

# OpenWrt 24.10 (opkg)
opkg update
opkg remove wpad-basic-mbedtls
opkg install wpad-mesh-mbedtls

На OpenWrt 25.12+ (apk):

# OpenWrt 25.12 (apk)
apk update
apk del wpad-basic-mbedtls
apk add wpad-mesh-mbedtls
Не перезагружайте роутер по Wi-Fi после удаления wpad — в момент между удалением и установкой Wi-Fi не работает, и вы потеряете связь. Выполняйте эти команды по кабелю. На 24.10 их можно объединить: opkg install wpad-mesh-mbedtls --force-overwrite (на 25.12 — apk add --force-overwrite wpad-mesh-mbedtls).

Для batman-adv дополнительно: kmod-batman-adv, batctl. Для роуминга: dawn (проще) или usteer.

Шаг 2. Настраиваем главный роутер (Gateway)

WAN, LAN и DHCP настраиваются как обычно. Создаём клиентскую сеть (fronthaul) и mesh-интерфейс.

Пример /etc/config/wireless главного роутера с 802.11r и mesh на 5 ГГц:

config wifi-iface 'fronthaul'
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'MyMeshWiFi'
	option encryption 'sae-mixed'
	option key 'МойНадёжныйПароль123'
	option ieee80211r '1'
	option mobility_domain '4f57'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'

config wifi-iface 'mesh'
	option device 'radio1'
	option network 'mesh'
	option mode 'mesh'
	option mesh_id 'MyMeshBackhaul'
	option encryption 'sae'
	option key 'МешПароль456'

Оба интерфейса на radio1 (5 ГГц) с одним каналом — задайте канал явно в секции radio1:

uci set wireless.radio1.channel='36'
uci set wireless.radio1.country='RU'
uci commit wireless

Добавляем mesh-интерфейс в LAN-мост, чтобы точки были в одной подсети. В /etc/config/network:

config interface 'mesh'
	option proto 'batadv'
	option mesh 'bat0'
Инфо: для чистого 802.11s без batman отдельная секция interface 'mesh' не нужна — достаточно указать option network 'lan' в секции wifi-iface 'mesh', и интерфейс сам попадёт в мост br-lan. Беспроводные интерфейсы никогда не прописываются в list ports секции device: там перечисляются только проводные порты. Вариант с proto 'batadv' выше относится к схеме с batman-adv из шага 4 — выберите одну схему и придерживайтесь её. Учтите и то, что мост из 802.11s напрямую в br-lan на нескольких узлах способен собрать петлю; для сетей больше двух-трёх точек документация OpenWrt советует mesh11sd.

Применяем:

uci commit
wifi reload
service network restart

Шаг 3. Настраиваем вторую точку (Dumb AP + Mesh)

На второй точке:

  1. Меняем LAN IP на 192.168.1.2:
uci set network.lan.ipaddr='192.168.1.2'
  1. Отключаем DHCP-сервер:
uci set dhcp.lan.ignore='1'
  1. Указываем шлюз и DNS главного роутера. В /etc/config/network:
config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '192.168.1.2'
	option netmask '255.255.255.0'
	option gateway '192.168.1.1'
	list dns '192.168.1.1'
  1. Отключаем firewall (точка работает мостом, не маршрутизатором):
service firewall disable
service firewall stop
  1. Создаём точно такой же fronthaul SSID + тот же пароль + тот же mobility_domain (это критично для 802.11r) и mesh-интерфейс с тем же mesh_id, паролем и каналом, что на главном роутере. Конфиг /etc/config/wireless — как в шаге 2, но с тем же mesh-ключом.
uci commit
wifi reload
service network restart

Для третьей и последующих точек повторяем, меняя только IP (192.168.1.3 и т.д.).

Шаг 4. Вариант с batman-adv (для 3+ узлов)

batman-adv стоит включать, когда узлов много и топология сложная (mesh поверх mesh, разные среды). Установка:

opkg install kmod-batman-adv batctl     # OpenWrt 24.10
# на OpenWrt 25.12: apk add kmod-batman-adv batctl

В /etc/config/network создаём интерфейс bat0 и добавляем в него mesh, а сам bat0 — в LAN-мост:

config interface 'bat0'
	option proto 'batadv'
	option routing_algo 'BATMAN_IV'

config interface 'mesh'
	option proto 'batadv_hardif'
	option master 'bat0'
	option mtu '1536'

Затем добавьте bat0 в список портов моста br-lan. Проверка:

batctl n    # соседи (neighbors)
batctl o    # originators (все узлы mesh)
Оверхед batman: дополнительный слой L2-mesh съедает 10–20% скорости. Для двух точек он избыточен — используйте чистый 802.11s.

Шаг 5. Настраиваем бесшовный роуминг (DAWN)

802.11r ускоряет переключение, но решение о переходе принимает клиент — и часто «прилипает» к дальней точке. DAWN активно перекидывает клиентов на лучшую точку. Установите на всех точках:

opkg install dawn luci-app-dawn     # OpenWrt 24.10
# на OpenWrt 25.12: apk add dawn luci-app-dawn

Пример /etc/config/dawn с порогами:

config metric 'global'
	option kicking '1'
	option min_probe_count '2'

config network
	option broadcast_ip '10.0.0.255'
	option broadcast_port '1025'

«Kicking» — это принудительное отключение клиента от слабой точки, чтобы он переподключился к сильной. Порог выставляйте так, чтобы клиента не выкидывало слишком рано (иначе постоянные разрывы). Карта клиентов видна в LuCI: Network → DAWN.

Альтернатива — usteer (от разработчиков OpenWrt): гибче в настройке, но сложнее. Для дома DAWN обычно достаточно.

Шаг 6. Проверка работоспособности

# видны ли соседи по mesh
iw dev mesh0 station dump

# сигнал backhaul между точками (ниже -70 dBm — плохо)
iw dev mesh0 station dump | grep signal

# для batman:
batctl n

Скорость между узлами:

opkg install iperf3     # OpenWrt 24.10 (на 25.12: apk add iperf3)
# на одной точке: iperf3 -s
# на другой: iperf3 -c 192.168.1.2

Главный практический тест роуминга: идите с телефоном по квартире с приложением WiFiman или WiFi Analyzer и смотрите, меняется ли BSSID при переходе между комнатами. Контрольный тест — видеозвонок не должен прерываться при переходе.

Чек-лист «mesh работает правильно»:

  • точки видят друг друга (iw station dump / batctl n);
  • сигнал backhaul выше −70 dBm;
  • телефон переключается на ближнюю точку (BSSID меняется);
  • видеозвонок не рвётся при переходе;
  • один DHCP на всю сеть.

Оптимизация и типичные грабли

  • Половинная скорость при беспроводном backhaul: если backhaul и клиенты на одном радио, точка делит эфир пополам. Решение — выделенное радио 5 ГГц под backhaul, 2.4 ГГц для клиентов.
  • Клиент «прилипает» к дальней точке: настройте пороги DAWN (kicking).
  • 802.11r не работает: разные mobility_domain, разные пароли или разное шифрование на точках. Всё должно совпадать.
  • Старые IoT-устройства отваливаются от WPA3: используйте sae-mixed (WPA2/WPA3).
  • Два DHCP в сети: выключите DHCP на всех точках, кроме главной.
  • Размещение точек: не в углу, не за холодильником, не вплотную друг к другу.
  • Mesh + VPN: podkop ставится только на главный роутер — он маршрутизирует весь трафик сети.

Часто задаваемые вопросы (FAQ)

Нужны ли одинаковые роутеры? Желательно, но не обязательно. Разные модели работают, если поддерживают 802.11s и одинаковую версию OpenWrt. Одинаковые проще настраивать (идентичные конфиги).

Mesh или вторая точка по кабелю — что лучше? Кабель почти всегда лучше: полная скорость и стабильность. Mesh (802.11s) — когда провод не протянуть.

Сколько точек можно объединить? Для 802.11s практичный предел — 3–4 точки. Больше — уже с batman-adv и продуманной топологией.

Насколько падает скорость при беспроводном backhaul? Примерно вдвое, если backhaul и клиенты на одном радио. С выделенным радио под backhaul потери минимальны.

Работает ли mesh на Cudy M3000 / Netis NX62 под OpenWrt? Да, стандартными средствами OpenWrt (802.11s/WDS), а не фирменным mesh вендора. См. инструкции по прошивке Cudy и Netis.

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

Можно ли смешать OpenWrt-роутер и стоковый роутер в mesh? В одном 802.11s mesh — нет (нужна совместимость реализаций). Но стоковый роутер можно подключить кабелем как обычную точку доступа с тем же SSID.

Обязателен ли batman-adv? Нет. Для 2–3 точек хватает чистого 802.11s. batman нужен для сложных многоузловых топологий.

Слетит ли mesh после обновления OpenWrt? Пакеты (wpad-mesh, dawn, batctl) слетят, а конфиги при сохранении настроек останутся. После обновления переустановите пакеты.

Заключение

Бесшовный Wi-Fi на OpenWrt строится по схеме: одинаковый wpad-mesh на всех точках → главный роутер с DHCP → точки со статическими IP и выключенным DHCP → одинаковый SSID с 802.11r → DAWN для роуминга. Если можно протянуть кабель — используйте Ethernet backhaul, это надёжнее беспроводного. Перед настройкой убедитесь, что на всех роутерах одинаковая версия OpenWrt, а VPN через podkop ставьте только на главный узел.

Настройка mesh на несколько узлов — самая кропотливая часть: развести адреса, синхронизировать SSID и не оставить лишний DHCP. Если разбираться некогда, эту работу мы берём на себя — настройка под ключ.