Определения

Портал - сторонний сервис, обеспечивающий гостевую авторизацию (предоставление доступа в сети каким-то способом, связанным с идентификацией беспроводного клиента через всплывающее окно, СМС, ваучер и т.п.)

RADIUS-сервер - сторонний сервис, обеспечивающий проверку учётных данных (логин, пароль, МАС, сертификат) подключающегося беспроводного клиента

RADIUS-клиент - сервис на контроллере/точке доступа, инициирующий авторизационный запрос в сторону сервера RADIUS. 

RADIUS-прокси - сервис на контроллере, позволяющий передавать RADIUS-сообщения от точек доступа до RADIUS-сервера, и обратно, возможно с их модификацией, для упрощения работы сервера 

МАС-авторизация - процесс авторизации, при котором в качестве логина и пароля клиента передаются МАС-адрес клиентского устройства 

CoA - процесс изменения состояния подключенного клиентского устройства, при котором RADIUS-сервер направляет RADIUS-клиенту специальный запрос "сбрось клиента"

Аккаунтинг - фиксация момента начала работы клиента в сети, промежуточные (interim) обновления его состояния, завершения работы. В аккаунтинг сообщениях передаются счётчики трафика и прочие детали подключения. Аккаунтинг начинается одновременно либо сразу после завершения успешной авторизации

hostapd - компонент точки доступа, отвечающий за вещание беспроводной сети, и процесс подключения беспроводного клиента к ней. Может работать RADIUS-клиентом

хотспот - компонент точки доступа, отвечающий за детектирование, перенаправление, разрешение и запрет доступа пользователя гостевой беспроводной сети (с портальной авторизацией)

Правила

В RADIUS-протоколе инициатор сообщений (авторизация, аккаунтинг) всегда клиент, отправляющий сообщения (запросы) в сторону сервера. Возможно, используя прокси.

Ответом сервера на авторизационные RADIUS сообщения могут быть: отказ, разрешение. В случае разрешения могут, но не обязательно, передаваться дополнительные атрибуты: ограничения длительности сессии, скорости, назначенный VLAN и т.п.

Почти всегда Портал и RADIUS-сервер - это единая сущность. Гостевая авторизация одновременно использует и веб-редиректы и страницы, и RADIUS-протокол.

Сетевая авторизация в открытой, PSK сетях может (но не обязана) использовать МАС-авторизацию и аккаунтинг.

По отдельности можно использовать и МАС-авторизацию, и аккаунтинг.

Сетевая авторизация в WPA2Enterprise сетях обязана использовать МАС-авторизацию (или её более сложные формы), и опционально (но почти всегда) и аккаунтинг.

Гостевая (портальная) авторизация может работать и без МАС авторизации и без аккаунтинга, но такой сценарий не рекомендуется

Гостевая (портальная) авторизация лучше всего работает при включенной МАС авторизации и аккаунтинге, т.к. при этом обеспечивается быстрое переподключение ранее авторизованных клиентов. Логика работы (кого сразу переподключать, а кого отправлять снова на портал авторизации, в всплывающее окно) определяется на стороне настроек портала.

Если в настройке RADIUS-сервера указано, что клиентом будет контроллер, то RADIUS-трафик от точек доступа (клиентов) направляется на контроллер (порты 18120 и 18130), работающий как RADIUS-прокси, и он сам направляет его в сервер. В этом случае RADIUS-сервер взаимодействует только с контроллером, что благоприятно с точки зрения сетевого доступа, минимизации настоек на контроллере. Контроллер между тем становится точкой отказа.

Если в настройке RADIUS-сервера указано, что клиентом будет точка доступа, то RADIUS-трафик от точек доступа (клиентов)  напрямую направляется на RADIUS-сервер. В этом случае RADIUS-сервер взаимодействует с каждой точкой по отдельности, что может быть негативно с точки зрения сетевого доступа и минимизации настоек на контроллере. Контроллер между тем не участвует в авторизации и при его недоступности она не прерывается.

Гостевая (портальная) авторизация работает только в режиме RADIUS-прокси (клиентом будет контроллер), когда контроллер обрабатывает СоА сообщения, и проксирует трафик аккаунтинга от точек доступа. Внимание: МАС авторизации от точек доступа, с проксированием, в таком режиме НЕТ. Контроллер сам является RADIUS-клиентом и динамический формирует запросы МАС авторизации на RADIUS-сервер по мере поступления служебных (associated_users_info, connected_time=0) сообщений от точек доступа

Режим динамического назначения VLAN работает только для не-гостевой авторизации. В гостевой авторизации VLAN для клиента задан статически, и не переопределяется в RADIUS ответах

Вы можете настроить RADIUS-сервер для авторизации, но отключить аккаунтинг, если укажете "0" в поле "Порт аккаунтинга"

Возможность обеспечить отказоустойчивость по RADIUS-протоколу (балансировка между двумя заданными серверами RADIUS, когда указаны и основной адрес, и дублирующий адрес), работает только в режиме клиентом будет контроллер. hostapd не имеет возможности настройки двух RADIUS-серверов.

Сводная таблица совместимости

В поле "Тип авторизации" в скобках указан режим работы RADIUS-сервера, если он выбран в профиле SSID.

Тип авторизацииRADIUS-клиентRADIUS-проксиRADIUS-серверМАС-авторизацияАккаунтингСоА

Open

PSK

нетнетнетнетнетнет

Open+MAC (точка)

PSK+MAC (точка)

точка доступанетсервердаопциональнонет

Open+MAC (контроллер)

PSK+MAC (контроллер)

точка → контроллерконтроллерсервердаопциональнода

Open+Guest

PSK+Guest

нетнетнетнетнетот портала до контроллера

Open+Guest+MAC (точка)

PSK+Guest+MAC (точка)

не поддерживается

Open+Guest+MAC (контроллер)

PSK+Guest+MAC (контроллер)

контроллер (auth)

точка → контроллер (acct)

контроллер

для аккаунтинга

сервердадада
WPA2 Enterprise (точка)точка доступанетсервердаопциональнонет
WPA2 Enterprise (контроллер)точка → контроллерконтроллерсервердаопциональнода
WPA2 Enterprise+Guestне поддерживается

Список RADIUS-атрибутов

В дополнение к стандартным (IETF) атрибутам, определенным в RFC ниже, точка доступа и контроллер применяют следующие вендорспецифичные атрибуты:

Вендор: Fplus

Идентификатор (номер) вендора в IANA: 61008

Атрибуты:

IDNameData typeDescription
1

Fplus-Wlan-Id

integer

Номер профиля беспроводной сети, настроенной на контроллере (число 1...255)
2

Fplus-AP-Name

string

Имя точки доступа, к которой произведено подключение данного клиента
3

Fplus-AP-Group

string

Имя группы, в которой находится эта точка доступа
4

Fplus-Sta-RSSI

integer

Уровень сигнала от устройства клиента (отрицательное число)
5

Fplus-Sta-SNR

integer

Соотношение сигнал-шум от устройства клиента (положительное число)
6

Fplus-Sta-Channel

integer

Номер радио-канала, к которому произведено подключение (текущий канал точки доступа)

Указанные атрибуты могут передаваться RADIUS-клиентом или прокси серверу как в Auth, так и в Acct сообщениях.

Процедура подключения клиента в гостевой сети

Описан рекомендуемый сценарий Open+Guest+MAC (контроллер), первоначальное и повторное подключения.

А. первоначальное подключение

  1. Ассоциация клиента с сетью. hostapd не имеет настройки auth_server, МАС авторизации нет, подключение безусловно успешное
  2. wda детектирует такое подключение, направляет сообщение associated_users_info[1], connected_time=0 контроллеру
  3. МАС клиента по умолчанию не в разрешенных списках
  4. Клиент получает IP адрес. wda детектирует и это, направляет сообщение associated_users_info[1], connected_time=1 контроллеру
  5. hostapd имеет настройку acct_server, и отправляет accounting-start в контроллер (он в режиме радиус-прокси)
  6. Пока клиент делает dhcp запросы, резолвит captive.apple.com и пробует сделать tcp коннект на него на порт 80, контроллер:
  7. Получив первое associated_users_info, контроллер (RadiusMAB) формирует (как клиент) Radius Auth (MAB) запрос в радиус-сервер
  8. Получив acct-start от точки доступа, контроллер (RadiusProxy) пересылает (с модификацией)  Radius Acct Start запрос в радиус-сервер
  9. Радиус-сервер, не зная Wi-Fi клиента по МАС-адресу, отправляет контроллеру Access-Reject, а так же OK на Acct Start запрос
  10. Сервис RadiusProxy контроллера пересылает Acct...ОК точке доступа; hostapd точки по сути игнорирует это
  11. Сервис RadiusMAB контроллера, получив Access-Reject от сервера, далее ничего не делает
  12. Со временем (порядка 1-3 сек. от начала подключения) Wi-Fi клиент делает веб-запрос на captive.apple.com, который попадает на веб-прокси-сервис точки доступа
  13. Точка доступа пересылает (HTTP Location:) веб-запрос на сервер Портала. Wi-Fi клиенту показывается портал авторизации в всплывающем окне
  14. Клиент проходит цикл авторизации (идентификации по СМС, звонку, ваучеру и т.п.)
  15. В конце цикла авторизации портал принимает предварительное решение, что данного клиента надо выпустить в Интернет, для чего он направляет RADIUS CoA запрос в контроллер
  16. Получив RADIUS CoA, контроллер определяет МАС адрес клиента, точку доступа
  17. Контроллер снова формирует RADIUS Auth (MAB) запрос в радиус-сервер (с другим параметром Connect-Info)
  18. Радиус-сервер, зная только что прошедшего авторизацию Wi-Fi клиента по МАС-адресу, отправляет контроллеру Access-Accept, и возможно другие атрибуты (ограничение скорости, длительности сессии, имя/телефон клиента в User-Name)
  19. Контроллер получает от радиус-сервера ответ, определяет точку доступа клиента, и направляет ей MQTT-сообщение CAPTIVE_MAC_ADD с адресом клиента
  20. Точка доступа открывает клиенту доступ в интернет (помещает МАС клиента и IP клиента в таблицы ядра)
  21. Клиент работает в Интернет, hostapd периодически отправляет контроллеру (как прокси) RADIUS-аккаунтинг трафик, до отключения клиента
  22. В момент отключения клиента wda формирует и отправляет контроллеру сообщение associated_users_info[1], connected_time=-1, а также удаляет МАС, IP клиента из таблиц ядра
  23. Контроллер в момент получения сообщения только уменьшает счетчик активных клиентов. RADIUS-сообщения аккаунтинга он уже спроксировал.

Б. Повторное подключение

  1. При повторном подключении клиента с тем же МАС адресом к той же сети (SSID), но возможно к другому радио и к другой точке доступа, происходит ассоциация клиента. hostapd не имеет настройки auth_server, МАС авторизации нет, подключение безусловно успешное
  2. wda детектирует такое подключение, направляет сообщение associated_users_info[1], connected_time=0 контроллеру
  3. МАС клиента по умолчанию не в разрешенных списках
  4. Клиент получает IP адрес. wda детектирует и это, направляет сообщение associated_users_info[1], connected_time=1 контроллеру
  5. hostapd имеет настройку acct_server, и отправляет accounting-start в контроллер (он в режиме радиус-прокси)
  6. Пока клиент делает dhcp запросы, резолвит captive.apple.com и пробует сделать tcp коннект на него на порт 80, контроллер:
  7. Получив первое associated_users_info, контроллер (RadiusMAB) формирует (как клиент) Radius Auth (MAB) запрос в радиус-сервер
  8. Получив acct-start от точки доступа, контроллер (RadiusProxy) пересылает (с модификацией)  Radius Acct Start запрос в радиус-сервер
  9. Радиус-сервер, уже зная Wi-Fi клиента по МАС-адресу, отправляет контроллеру Access-Accept, а так же OK на Acct Start запрос. Логика работы RADIUS-сервера, совмещенного с Портальным сервером, может предусматривать отправку и Reject-сообщения, если потребно показать клиенту всплывающую страницу авторизации или рекламы
  10. Сервис RadiusProxy контроллера пересылает Acct...ОК точке доступа; hostapd точки по сути игнорирует это
  11. Сервис RadiusMAB контроллера, получив Access-Accept от сервера, направляет точке доступа, на которой подключен клиент, MQTT-сообщение CAPTIVE_MAC_ADD с адресом клиента
  12. Точка доступа открывает клиенту доступ в интернет (помещает МАС клиента и IP клиента в таблицы ядра)
  13. С большой вероятностью, процесс 7-12 занимает время меньше, чем клиентское устройство устанавливает веб-соединение (в частности, можно пробовать регулировать задержку на прокси-сервера точки доступа)
  14. Клиентское устройство, сделав веб-запрос, получает ожидаемый ответ, всплывающих captive-окон не показывает
  15. Клиент работает в Интернет, hostapd периодически отправляет контроллеру (как прокси) RADIUS-аккаунтинг трафик, до отключения клиента
  16. В момент отключения клиента wda формирует и отправляет контроллеру сообщение associated_users_info[1], connected_time=-1, а также удаляет МАС, IP клиента из таблиц ядра
  17. Контроллер в момент получения сообщения только уменьшает счетчик активных клиентов. RADIUS-сообщения аккаунтинга он уже спроксировал.

Для чтения

https://datatracker.ietf.org/doc/html/rfc2865

https://datatracker.ietf.org/doc/html/rfc2866

https://datatracker.ietf.org/doc/html/rfc2869


  • No labels