WNAM производит авторизацию абонентов сети (и для гостевого, и для корпоративного сценариев), всегда привязываясь к сущности, называемой "Площадка". Это - физическая территория, место предоставления услуги связи. Может определять здание, этаж здания, группу точек доступа, беспроводную сеть в целом ("растянутую" хоть на всю страну). WNAM не будет обрабатывать входящий запрос, если не сможет определить, к какой площадке он относится. Вы увидите сообщение "Попытка доступа с неизвестной площадки" или "site-missing-or-disabled" в pop-up окнах или логах.

Привязка к площадке требуется, потому что:

  • внешний вид страниц авторизации, приветствия, настройки рекламы привязаны к площадке
  • права пользователей веб-интерфейса (менеджер клиента, владелец площадки) привязаны к ней
  • статистика по сессиям пишется с указанием номера площадки
  • все отчеты делаются с фильтром по площадкам, либо делают развертку по ним
  • номер площадки отправляется в Нотификациях или сообщениях и выгрузках в СОРМ

В идеальном мире у вас на каждой площадке вещается свой SSID, и на каждой площадке для клиентов своя IP-подсеть, которые между собой не пересекаются. И ваше сетевое оборудование всегда способно гарантированно определить IP адрес подключенного клиента.

Но так бывает не всегда. Возможны такие ситуации:

  • за одну площадку (этаж здания) отвечает несколько коммутаторов ЛВС
  • один SSID транслируется разными контроллерами на разных площадках
  • один SSID транслируется разными контроллерами на одной площадке
  • несколько разных SSID разными контроллерами на одной площадке
  • IP-адресные пространства пересекаются
  • оборудование не в состоянии определить IP-адрес клиентского устройства

В этих случаях WNAM применяет детерминированные критерии определения, какой площадке сопоставить входящий запрос. Первым делом необходимо понять, о какого типа запросах речь. Источников запросов два:

RADIUS-сообщения типов Access-Request, Accounting-Request, поступающие от серверов доступа (коммутаторы и контроллеры)

HTTP-запросы страниц авторизации, поступающие на пользовательский портал (/cp/...) редиректом от беспроводных контроллеров при гостевой авторизации

В обоих случаях WNAM оперирует кэшем запросов (для гостевой авторизации он называется ConnectionInfoCache, или CI, а для корпоративной A12Sessions), в котором присутствуют все попытки авторизации, находящиеся в "процессе проведения". В записи о подключающемся абоненте сети есть всё, что требуется для проведения авторизации: МАС, IP адреса, ссылки на сервера доступа NAS, на площадки, СМС-код и т.п.

Обогащение данных в кэше производится путем парсинга поступивших RADIUS- или HTTP-запросов. К сожалению, формат этих запросов всегда зависит от производителя оборудования. И не у всех производителей в запросах присутствует все, что на хотелось.

/cp/cisco?client_mac=6A:FC:3E:DD:1E:07&switch_url=10.241.200.6&redirect=&wlan=WNAM-09-Guest&ap_mac=50:87:89:C0:27:1C&sessionId=06C8F10A0000002DA1053D6A&redirect=http://captive.apple.com/hotspot-detect.html

и

18:04:27.293 AUTH REQ : User-Name - 000acd44dfdf
18:04:27.295 AUTH REQ : User-Password - 000acd44dfdf
18:04:27.295 AUTH REQ : Service-Type - Call-Check
18:04:27.295 AUTH REQ : VSA: Cisco-AVPair: service-type=Call Check
18:04:27.295 AUTH REQ : VSA, vendor-id=9 - Cisco-AVPair - service-type=Call Check
18:04:27.295 AUTH REQ : Cisco-AVPair-service-type - Call Check
18:04:27.295 AUTH REQ : Framed-MTU - 1500
18:04:27.295 AUTH REQ : Called-Station-Id - 18-9C-5D-93-47-82
18:04:27.295 AUTH REQ : Calling-Station-Id - 00-0A-CD-44-DF-DF
18:04:27.295 AUTH REQ : Message-Authenticator - 0x660fcf5ff4f1d9eb0d6c35f0c358ea4e
18:04:27.295 AUTH REQ : EAP-Key-Name -
18:04:27.296 AUTH REQ : VSA: Cisco-AVPair: audit-session-id=AC1082260000278E967829CF
18:04:27.296 AUTH REQ : VSA, vendor-id=9 - Cisco-AVPair - audit-session-id=AC1082260000278E967829CF
18:04:27.296 AUTH REQ : Cisco-AVPair-audit-session-id - AC1082260000278E967829CF
18:04:27.296 AUTH REQ : NAS-Port-Type - Ethernet
18:04:27.296 AUTH REQ : VSA: Unknown-Sub-Attribute-2: 0x4661737445746865726e6574302f32
18:04:27.296 AUTH REQ : NAS-Port - 50002
18:04:27.296 AUTH REQ : NAS-Port-Id - FastEthernet0/2
18:04:27.296 AUTH REQ : NAS-IP-Address - 172.16.130.38
18:04:27.328 AUTH RSP : RadiusResponse [state=FAIL, fail_reason=site-missing-or-disabled, attributes=[]]

WNAM применяет перебор (поиск) по серверам доступа, площадкам, Подразделениям (Клиентам) для того, чтобы из параметров запроса понять, к какой из площадок в данный момент относится попытка доступа.

В порядке уменьшения приоритета сравниваются:

  1. Значение RADIUS-атрибута WISPr-Location-ID, который должен быть численно равен номеру площадки. Его могут выставлять только устройства типа Miktorik и CoovaChilli.
  2. МАС-адрес точки доступа, который берется из атрибута Called-Station-Id и должен быть прописан в поле "Присвоенная IP подсеть или МАС точек доступа" в настройках площадки
  3. Идентификатор номера профиля беспроводной сети, который настроен на контроллере. У каждого из вендоров он свой:  Airespace-Wlan-Id, Ruckus-VLAN-ID и т.п. Он должен совпасть с тем, что прописано в поле "Дополнительный ID" в настройки площадки
  4. Имя беспроводной сети, взятое из атрибута Aruba-Essid-Name, Symbol-Current-ESSID и т.п. Он должен совпасть с тем, что прописано в поле "SSID" в настройке площадки. Совпадает первая из найденных площадок.
  5. Номер профиля сети, взятый в результате анализа атрибута NAS-Port или NAS-Port-Id (из подстроки vlanid=.. для Huawei AC, и т.п.). Он должен совпасть с тем, что прописано в поле "Дополнительный ID" в настройки площадки
    1. Если этот номер профиля задан в атрибуте, идет поиск по комбинации "сервер доступа + номер профиля + IP адрес клиента"
    2. Если ничего не найдено, то по комбинации "номер профиля + IP адрес клиента"
    3. Если ничего не найдено, то по имени SSID, которое берется после знака "двоеточие" RADIUS-атрибута Called-Station-Id
  6. Если мы уверены, что IP-адреса клиентов не пересекаются (в разделе "Конфигурация-Дополнительные настройки" определен параметр non_overlapped_ip=true (по умолчанию он false), то:
    1. По соответствию IP-адреса абонента (атрибут Framed-IP-Address или соответствующий параметр в URL редиректа), должен совпасть (попасть в диапазон) сетей, заданные в настройке площадки в "Присвоенная IP подсеть или МАС точек доступа"
    2. Первая из площадок, у которой явно задан сервер доступа, откуда поступил запрос. Сервер доступа определяется поиском по IP-адресам (атрибут NAS-IP-Address и поле "IP адрес" настройки сервера доступа)
  7. Если мы не уверены, что IP-адреса клиентов не пересекаются, то порядок обратный:
    1. Первая из площадок, у которой явно задан сервер доступа, откуда поступил запрос.
    2. По соответствию IP-адреса абонента
  8. По иерархии Подразделений (Клиентов), в которой вы на каком-то заданном уровне должны будете совокупно определить:
    1. Один или несколько серверов доступа. Поиск идет по тому же NAS-IP-Address
    2. Одна и только одна площадка, на которой к тому же в настройках выставлен чекбокс "в иерархии"
  9. Если в настройках "Конфигурация-Дополнительные настройки" определен параметр site_1_fallback=true (по умолчанию он false), то выбирается площадка номер 1

Внимание! Контроллеры Cisco направляют RADIUS-запрос ещё до того, как известен IP-адрес клиента. Поэтому при работе с этим контроллером вам следует делать всю логику вокруг параметров "SSID" и "Дополнительный ID на сервере" (который из себя представляет порядковый номер WLAN профиля на контроллере).

В результате поиска по таблицам площадок может оказаться, что искомым критериям в запросе соответствуют несколько из них. В таком случае поиск вернет первую попавшуюся, не обязательно по порядку номера или времени создания. Чтобы такого не случалось, вы должны вдумчиво проектировать настройки ваших площадок и серверов доступа, опираясь на описанный выше алгоритм матчинга.


  • No labels