Всем првиет.
Решил я закрепить полученный результат написав статью. А результат этот — это объединение нескольких WiFi точек доступа в сеть в одну неразрывную сеть, ещё её называют безшовную. Смысл сего действия состоял в том, что моя «локальная» домашняя сеть разрослась до нескольких WiFi точек по причине её (сети) большой площади и невозможности достич надлежащего качетва всего одной точкой.
Первое и лобовое решение было поставить ещё несколько 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
Включив которую нам предоставляют кучу полей для настройки функции роуминга между 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
В итоге получилось примерно вот так:
В виде конфига всё это ваыглядит так:
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.
Я писал статью, чтобы и самому не потерять найденое и чтобы получить критику и помощь в понимании сделаного :) Буду благодарен за любые замечания.
Автор: Алексей
Добрый день , как в данный момент работает такое решение? были ли какие костыли? сегодня попался один тплинк tp-link tl-wr741nd для опытов , поставил на него openwrt , еще есть 2шт в работе на стоковых прошивках, давно думал обьединить , жду фидбэк
Сделал как указано в статье – всё работает. Только перед “opkg install wpad” надо удалить старый пакет ” opkg remove wpad-mini “