Привет, Хабр! Меня зовут Алексей, и я занимаюсь беспроводными технологиями. Мы продолжаем погружение в глубины конфигурации /etc/config/wireless. В прошлой статье - Тонкая настройка Wi-Fi в OpenWrt — достигаем максимальной стабильности и покрытия мы подробно разобрали секцию wifi-device, которая отвечает за физическое радио - частоты, мощность, каналы. Но, как вы помните, в wireless-конфиге есть ещё один тип секций: wifi-iface. Именно они создают те самые виртуальные интерфейсы, которые позволяют реализовать: точки доступа, клиентские подключения, mesh-сети и даже сервисы мониторинг эфира.
Именно здесь задаётся имя сети (SSID), методы шифрования, правила доступа, изоляция клиентов и многое другое. Казалось бы, что тут сложного? Указал SSID, выбрал шифрование, ввёл пароль - и всё работает. Но и здесь есть свои «подводные грабли», мифы и возможности, о которых многие даже не догадываются.
Структура и общие принципы
Напомню, что секции wifi-iface всегда привязаны к конкретному wifi-device через параметр device. На одном физическом радио можно создать несколько виртуальных интерфейсов (до 8-16, в зависимости от драйвера). Это позволяет, например, одновременно раздавать основную и гостевую сети на одном диапазоне. Но важно помнить, что все эти интерфейсы делят эфирное время между собой, поэтому слишком много точек на одном радио могут снизить общую производительность.
Вообще, логика работы этой секции проста: wifi-iface позволяет увязать воедино беспроводной интерфейс, сетевой интерфейс и физическое радио, на котором ведётся вещание, и уточнить всё это дополнительными настройками.
mode - кто есть кто?
Первый и самый важный параметр - mode. Он определяет роль интерфейса. Большинство пользователей знакомы только с режимом ap (точка доступа). Но OpenWrt поддерживает и другие режимы:
ap- классическая точка доступа, к которой подключаются клиенты.sta- режим клиента (станции). Ваш роутер сам подключается к другой точке доступа. Это используется, например, для репитеров или для подключения к провайдеру по Wi-Fi.adhocиwds- это два устаревших режима, которые в старых версиях OpenWrt прятались именно в этой секции, потом чуть позже перекочевали в отдельный параметр (wds). Когда-то это был очень полезный функционал, позволяющий сделать соединение «точка-точка» на L2 уровне. Сейчас для таких задач эффективнее использоватьmesh.mesh- современный режим для создания ячеистой сети (802.11s). Позволяет строить самоорганизующиеся сети без центральной точки.monitor- режим мониторинга эфира. Интерфейс не передаёт данные, а только слушает все пакеты. Полезно для диагностики, но в повседневной жизни не нужно. Если вы когда-то сталкивались с решением для маркетологов - wi-fi радар, то он, как правило, базируется на базе опенвртешного роутера работающего в режиме monitor.
Выбор режима зависит от задачи. Мы сосредоточимся на ap и немного затронем sta и mesh, так как они наиболее востребованы.
ssid и bssid - имя и адрес
С этими параметрами часто связана неразбериха. Не то что бы их путали, но часто пользователи даже продвинутого уровня не совсем правильно понимают, как они работают. С одной стороны, это связано с похожими названиями, с другой - bssid связан с параметром mode, и наконец, немного запутывает и сама документация. Итак, как говорил мой преподаватель по матанализу, перейдем к определениям.
SSID (Service Set Identifier) - это уникальное текстовое имя вашей беспроводной сети Wi-Fi. Именно его вы выбираете в списке доступных сетей на смартфоне или компьютере, когда хотите подключиться к интернету.
BSSID (Basic Service Set Identifier) - это уникальный идентификатор конкретной точки доступа. В отличие от SSID (имени сети, которое вы придумали сами), BSSID - это физический MAC-адрес беспроводного адаптера роутера.
Именно так эти два определения приводятся в самых различных документациях. И если с SSID всё понятно - это имя вашей сети, то BSSID немного запутывает. Из определения интуитивно понятно, что это MAC, назначаемый интерфейсу. И кажется, что BSSID нужен именно для того, чтобы задать кастомный MAC. А вот и не так.
Параметр bssid обычно не указывается для точки доступа (он генерируется автоматически из MAC-адреса), но очень полезен в режиме sta. Если вы хотите, чтобы ваш клиент подключался строго к определённой точке доступа (даже если есть несколько с одинаковым SSID), укажите её BSSID (MAC-адрес). Такая ситуация бывает в корпоративных сетях или в mesh-сетях, когда один SSID используется на разных точках. Если же вы хотите назначить интерфейсу свой кастомный MAC, то делается это через указание следующего параметра в нужной секции:
option macaddr 'XX:XX:XX:XX:XX:XX'
Итак, возможно, я вас к этому моменту запутал, поэтому кратко еще раз: bssid используем только совместно с параметром mode в режиме sta для выбора конкретной точки для подключения.
encryption - безопасность, которая не прощает ошибок
Здесь начинается самое интересное. Параметр encryption задаёт тип шифрования. Про эту часть можно написать очень много, задавая самые параноидальные настройки безопасности. Многие ошибочно думают, что чем сложнее - тем лучше, и ставят какие-то экзотические значения. На самом деле современные рекомендации просты:
Для WPA2-Personal:
psk2(только AES, без TKIP).Для WPA3-Personal:
sae.Если нужно поддерживать старые устройства:
psk-mixed(WPA2+WPA3) илиsae-mixed.Для гостевых сетей можно использовать
owe(Opportunistic Wireless Encryption) - шифрование без пароля, но только если клиенты поддерживают WPA3.WEP и WPA1 (TKIP) - оставьте в прошлом. Они небезопасны и сильно замедляют работу, так как драйверы переключаются в режим совместимости.
Важный момент: если вы используете WPA2 (psk2) и хотите включить защиту от подделки кадров деаутентификации (PMF), добавьте +ieee80211w. Например: encryption 'psk2+ieee80211w'. Но учтите: старые клиенты могут не поддерживать PMF и не подключатся. Экспериментируйте.
Для WPA3 (sae) PMF обязателен и включается автоматически.
Параметр key - это пароль. Для WPA2/3 длина должна быть от 8 до 63 символов. Советую использовать не короткие слова, а случайные фразы или парольную фразу. Для WEP (если вы вдруг зачем-то его ставите) ключ задаётся в hex или с префиксом s: для ASCII.
network - привязка к сетям
Параметр network связывает беспроводной интерфейс с сетевым интерфейсом из /etc/config/network. Например, если у вас есть bridge lan, и вы хотите, чтобы ваша точка доступа была частью локальной сети, укажите option network 'lan'. Если вы создаёте гостевую сеть, вы можете создать отдельный сетевой интерфейс guest (без доступа к LAN) и привязать его. Это основа сегментации трафика.
Важно: если не указать network, интерфейс будет создан, но не включён ни в один bridge, и клиенты не получат IP-адресов (если только вы не запустите на нём DHCP-сервер отдельно). Часто новички забывают этот параметр и удивляются, почему сеть есть, а интернета нет.
isolate - изоляция клиентов
Один из самых полезных параметров для гостевых сетей. Если установить isolate 1, клиенты, подключённые к этой точке доступа, не смогут общаться друг с другом напрямую. Они будут видеть только шлюз. Это критически важно для публичных сетей и гостевого доступа, чтобы зловредный клиент не атаковал соседа.
hidden - скрытие SSID
Параметр hidden (по умолчанию 0) позволяет скрыть SSID. Многие считают, что это повышает безопасность. Увы, это миф: скрытое имя всё равно передаётся в некоторых служебных кадрах (например, при запросах от клиентов), и при желании его легко узнать. Зато клиенты начинают постоянно сканировать эфир, пытаясь найти скрытую сеть, что расходует батарею и создаёт лишний трафик. Мой совет: не скрывайте SSID без крайней необходимости.
macfilter - фильтрация по MAC
OpenWrt позволяет фильтровать клиентов по MAC-адресам через параметры macfilter и maclist.
macfilter 'allow'- разрешить только перечисленные MAC.macfilter 'deny'- запретить перечисленные MAC.maclist- список MAC-адресов (можно указывать несколько строк).
Но предупрежу: MAC-адрес легко подделать, поэтому это не серьёзная защита, а лишь дополнительный барьер для случайных гостей. Используйте вместе с нормальным шифрованием.
wmm - качество обслуживания
WMM (Wi-Fi Multimedia) - это технология приоритизации трафика (QoS) в беспроводных сетях. Она разделяет данные на 4 категории:
Voice (Голос): Самый высокий приоритет (VoIP, звонки в мессенджерах).
Video (Видео): Высокий приоритет (стриминг, видеозвонки).
Best Effort (Стандарт): Обычный трафик (просмотр сайтов).
Background (Фон): Низкий приоритет (загрузка файлов, торренты).
Параметр wmm включает поддержку QoS (802.11e). По умолчанию он включён, и это хорошо. WMM приоритизирует трафик, например, голосовые и видеопотоки, что улучшает работу IP-телефонии и стриминга. Отключать его не стоит, если только у вас нет очень старых клиентов, которые с ним не дружат.
maxassoc - ограничение количества клиентов
С помощью maxassoc можно ограничить максимальное число подключённых клиентов к данной точке доступа. По умолчанию ограничений нет (или они зависят от драйвера). Может пригодиться, если вы хотите зарезервировать ресурсы для определённых устройств или защититься от перегрузки.
wds - режим моста
Этот параметр (обычно wds 1) включает режим WDS для интерфейса. WDS позволяет строить беспроводные мосты между точками доступа без использования проводной сети. Но у WDS есть недостатки: падение пропускной способности примерно вдвое из-за ретрансляции, сложности с шифрованием. Современная альтернатива - mesh (802.11s). Тем не менее, если нужно соединить два роутера по воздуху и нет поддержки mesh, WDS может выручить. Только не забудьте на обоих концах настроить одинаковые каналы и, желательно, одинаковые BSSID.
ieee80211w (PMF) - защита управляющих кадров
Параметр ieee80211w (он же pmf в некоторых версиях) включает защиту от подделки кадров деаутентификации. Значения:
0 - отключено.
1 - опционально (клиенты, поддерживающие PMF, используют его).
2 - обязательно (клиенты без PMF не подключаются).
Для современных сетей рекомендую ставить 1. Если у вас WPA3, то автоматически будет 2.
wpa_group_rekey - обновление ключей
Параметры wpa_group_rekey, wpa_pair_rekey, wpa_strict_rekey управляют частотой смены ключей шифрования. По умолчанию групповой ключ обновляется раз в час. В домашней сети это не критично, но в некоторых корпоративных средах требуют более частой смены. Учтите, что слишком частая смена ключей может создавать нагрузку и даже вызывать кратковременные разрывы у некоторых клиентов.
Дополнительные параметры для режима sta (клиент)
В режиме sta есть свои интересные настройки:
scan_ssid 1- нужно указывать, если вы подключаетесь к скрытой сети.bssid- принудительный выбор точки по MAC.wds 1- для подключения к точке, работающей в режиме WDS.network- указываем, в какой локальный интерфейс добавить клиента (обычноwwan).
Также можно управлять роумингом: параметры bgscan, roam_threshold, roam_interval позволяют настроить, когда клиент будет искать другую точку доступа. Это полезно для создания бесшовного покрытия с несколькими AP.
Пример для режима mesh - современный способ
Если вы хотите построить распределённую сеть без проводов, обратите внимание на режим mesh. В этом случае секция wifi-iface выглядит так:
config wifi-iface 'mesh0' option device 'radio0' option mode 'mesh' option mesh_id 'MyMesh' option encryption 'sae' option key 'supersecret' option network 'lan'
Параметры:
mesh_id- идентификатор mesh-сети (аналог SSID).encryption- для mesh тоже можно использовать шифрование (sae).Дополнительные mesh-параметры вроде
mesh_fwding,mesh_rssi_thresholdпозволяют тонко настроить маршрутизацию внутри ячейки. Но для дома обычно хватает умолчаний.
Mesh удобен тем, что узлы сами находят друг друга и строят оптимальные маршруты. Если один узел выходит из строя, трафик пойдёт по другому пути.
Практический пример: гостевая сеть с изоляцией
Соберём всё вместе и создадим типичную конфигурацию для гостевой сети на отдельном радио (например, radio0):
config wifi-iface 'guest' option device 'radio0' option mode 'ap' option ssid 'MyHome_Guest' option encryption 'psk2' option key 'guestpassword' option network 'guest' option isolate '1' option hidden '0' option maxassoc '20' option wmm '1' option ieee80211w '1'
Здесь мы создали точку доступа с именем MyHome_Guest, WPA2-шифрованием, изоляцией клиентов, ограничением 20 клиентов и поддержкой PMF. Сеть guest должна быть предварительно определена в /etc/config/network как отдельный интерфейс (например, без доступа к LAN).
Вместо заключения
Как и в прошлой статье, напомню золотое правило: «Настраивай по одной ручке». Не пытайтесь сразу выставить все параметры, особенно если не до конца понимаете их влияние. Начните с базовых: SSID, пароль, привязка к сети. Затем, если нужно, включайте изоляцию, ограничения, пробуйте mesh. Вносите одно изменение, тестируйте, анализируйте. Не забывайте после каждого изменения выполнять команду wifir - она перечитает /etc/config/wireless и переинициализирует радиомодули.
P.S. Уже в процессе написания понял, что есть две темы, которые достаточно интересны, но в данной статье не раскрываются слишком подробно. Это работа в режимах monitor и mesh. Если эти темы вам интересны, напишите в комментариях, и я подготовлю гайд, как сделать шпионскую точку, которая будет слушать и фиксировать радиоэфир, и расскажу, как настроить mesh-сеть в продвинутом режиме.
