Быстрый роуминг (802.11r) в WiFi сети на базе Lede (aka OpenWRT)

в 4:17, , рубрики: hostapd, LEDE, OpenWrt, wpad, Беспроводные технологии, Настройка Linux, Сетевые технологии, метки:

Всем првиет.

Решил я закрепить полученный результат написав статью. А результат этот — это объединение нескольких WiFi точек доступа в сеть в одну неразрывную сеть, ещё её называют безшовную. Смысл сего действия состоял в том, что моя «локальная» домашняя сеть разрослась до нескольких WiFi точек по причине её (сети) большой площади и невозможности достич надлежащего качетва всего одной точкой.
image

Первое и лобовое решение было поставить ещё несколько WiFi AP с тем же BSSID и свиду вроде всё работало, но как оказалось не всё. К примеру мой Android based телефон нормально переваривал эту ситуацию перепрыгивая с точки на точку при потере сигнала от одной и обнаружении сигнала от другой, но у пользователей чудного яФона возникла с этим прлоблема, сие устройства напроч отказывались отключаться от уже пропавшей из радиуса действия точки и подключаться к новой, хоть и с более жирным сигналом. Ну и как пологается у сего контингента (никакой неприязни — просто сухие факты) началась вонь, что всё вокруг Г. мой чудный телефончик не может работать с этим барахлом. И начал я искать методы борьбы с этим.
Мои поиски привели меня к стандарту 802.11r. В котором нам обещают полную прозрачность для WiFi устройств сети их нескольких AP. И даже Apple подтверждает, что умеет так.
Ну ладно, ради спокойствия души своей и любителей яблок освоим новую дисциплину. Беглое изучение теории и практики показало, что hostapd вроде как умеет сие чудо. Все мои роутеры уже давно на Lede (кто не в курсе, это бывший OpenWRT) ну и как бы в этой связи настройка не должна была бы создать проблем. Но как всегда не всё так просто, либо я туговат :)
Для начала в lede по умолчанию устанавливается пакет wpad-mini, в нём собрана основная поддрежка WiFi AP с минимумом возможной, дабы работало. Меня такой расклад не устраивает. Поэтому необходимо заменить пакет на wpad.
В простейшем случае для этого нужно выполнить команду:
opkg install wpad
пакет притянет с собой всё необходимое и заменит собою wpad-mini. В идеальном же варианте не плохо просто пересобрать образ прошивки средствами ImageBuilder.
После установки пакета нужно его поднастроить. Если вы используете luci интерфес, то в настройках WiFi сети в разделе Wireless Security появится галочка Enables fast roaming among access points that belong to the same Mobility Domain
Быстрый роуминг (802.11r) в WiFi сети на базе Lede (aka OpenWRT) - 2
Включив которую нам предоставляют кучу полей для настройки функции роуминга между AP.
Если же у вас нет luci или вы предпочитаете настраиваить железку изменяя кофиги, то это же делается строчкой
option ieee80211r '1'
в секции config wifi-iface файла конфигурации /etc/config/wireless. Я надеюсь не нужно объяснять, что это надо проделать на всех AP участвующих в роуминге.
Это было самое простое. А вот далее началось веселье.
Чтобы объяснить всем точкам, что они в одном роуминге надо это дело как-то настроить. Все мануалы что мне удалось найти упорно сводятся к настройке этого всего дела с использованием RADIUS авторизации. Но у меня нету и RADIUS и не нужен он мне, как я думаю и большинсву из нас. Поэтому пришлось эксперементировать.
Пробежимся по полям, которые предлагает нам заполнить luci:
NAS ID — как я понял идентификатор текущей точки доступа в RADIUS сервере. И не нужен при отсутвии поледнего, но Luci не даёт сохранить настройки, если это поле не заполнено. Ну чтож — заполним. Обычно все рекомендуют вписывать туда MAC адрес устройства без разделителей.
Mobility Domain — идентификатор конкретно вашей сети. Должен быть один у всех участвующих в роуминге точек. Представляет из себя 16битное число в шестнадцетиричной форме (HEX).
External R0 Key Holder List — вот тут будут участвовать NAS ID, а говорили нужен только для RADIUS. Или же эта функция не участвует без RADIUS? Поясните кто в курсе?
Тут я добавил столько строк, сколько у меня точек доступа в сеть.
в формате: MAC-адрес, NAS-ID, 128-bit ключ в виде HEX строки
Например: 12:fe:ed:6d:bf:ea, 12feed6dbfea, 8a7fcc966ed0691ff2809e1f38c16996
И так несколько раз с каждой точкой доступа, ключ я использовал один и тот же. Тоже, если кто в курсе как правильно?
External R1 Key Holder List — аналог предыдущей секци, только вместо NAS-ID некий R1KH-ID.
Я заполнил так: 12:fe:ed:6d:bf:ea, 12:fe:ed:6d:bf:ea, 8a7fcc966ed0691ff2809e1f38c16996

В итоге получилось примерно вот так:
Быстрый роуминг (802.11r) в WiFi сети на базе Lede (aka OpenWRT) - 3

В виде конфига всё это ваыглядит так:
option ieee80211r '1'
option mobility_domain '4f57'
option pmk_r1_push '1'
list r0kh '12:fe:ed:6d:bf:ea,12feed6dbfea,8a7fcc966ed0691ff2809e1f38c16996'
list r0kh 'e8:94:f6:e5:46:72,e894f6e54672,8a7fcc966ed0691ff2809e1f38c16996'
list r1kh '12:fe:ed:6d:bf:ea,12:fe:ed:6d:bf:ea,8a7fcc966ed0691ff2809e1f38c16996'
list r1kh 'e8:94:f6:e5:46:72,e8:94:f6:e5:46:72,8a7fcc966ed0691ff2809e1f38c16996'
option nasid '12feed6dbfea'
option r1_key_holder '12feed6dbfea'

Сохранив и перезагрузив все устройства не первый взгляд всё продолжило работать. У меня на Телефоне с Android с виду ничего не изменилось. Владельцы iPhone пока довольны — будем наблюдать. WiFi Анализатор видит мою сеть по прежнему как несколько точек, но помимо WPA-PSK авторизации добавилась FT-PSK.

Я писал статью, чтобы и самому не потерять найденое и чтобы получить критику и помощь в понимании сделаного :) Буду благодарен за любые замечания.

Автор: Алексей

Источник

Поделиться

* - обязательные к заполнению поля