Начиная с версии 1.2.667 система WNAM поддерживает прямую работу с контроллером беспроводных точек Ubiquiti UniFi. При этом используется встроенный в контроллер механизм гостевого портала. Система WNAM поддерживает несколько площадок (SITE), настроенных в UniFi. Поддерживается ПО контроллера UniFi версии 4.8 и выше. Беспроводной контроллер поддерживает весь функционал системы WNAM, кроме: СОРМ, ограничение объёма сессии по трафику, ограничение скорости абонента.

Следует обратить внимание, RADIUS-сервер для работы комбинации системы WNAM и беспроводного контроллера Ubiquiti UniFi не требуется.

Ubiquiti UniFi не использует протокол RADIUS в работе своей функции хотспота. Из-за этого система авторизации WNAM не получает периодических уведомлений о статусе работы абонента сети, его трафике и т.п. и вынуждена делать API-запросы в контроллер.

При большом числе одновременно подключенных пользователей и большом числе площадок (Site) это может вызвать сбои в обработке информации, чрезмерную загрузку системы и другие побочные явления. 

Компания ООО "Нетамс" не гарантирует, что при работе с контроллером Ubiquiti UniFi механизм аккаунтинга и учёта сессий абонентов будет работать так же стабильно, как при использовании других более надежных контроллеров БЛВС. Работа собственного механизма перенаправления и авторизации Ubiquiti UniFi работает стабильно.

Также, вследствие того, что де-факто контроллер Ubiquiti UniFi всего лишь управляет автономно работающими точками доступа, авторизация клиента производится на точке. При роуминге клиента между точками информация об авторизации может не успеть распространиться по сети, в результате у подключенного клиента может снова всплыть окно запроса авторизации доступа.

Для настройки беспроводного контроллера Ubiquiti UniFi необходимо выполнить шаги представленные далее.

1. Установка UniFi

Необходимо придерживаться инструкции, приведенной на сайте производителя: https://community.ubnt.com/t5/UniFi-Wireless/Updated-UniFi-Repo-info-APT-howto/m-p/1288883.

Для своей работы Ubiquiti UniFi использует СУБД MongoDB. Однако, по неизвестным причинам Ubiquiti UniFi предлагает использовать для установки пакеты СУБД MongoDB типа mongodb-10gen или mongodb-server, при том как официальная документация СУБД MongoDB предлагает устанавливать пакеты mongodb-org, которые использует система WNAM. В этом случае будет конфликт зависимостей пакетов СУБД MongoDB. Его можно решить следующим образом:

1.1. Добавить репозиторий Ubiquiti UniFi и скачать пакет:

apt-get download unifi

1.2. Скачать скрипт-конвертер munge_mongodb_deps.sh с GitHub, и запустить его:

wget https://raw.githubusercontent.com/ctindel/ubiquiti-docker/96695f237d4886edbe1deb0aa71a839e53eb1fe0/unifi/munge_mongodb_deps.sh
chmod +x munge_mongodb_deps.sh 
./munge_mongodb_deps.sh unifi_4.8.18-8395_all.deb /tmp

1.3. Запустить установку из пакета:

cd /tmp
dpkg -i unifi_4.8.18-8395_all.modified.deb

Selecting previously unselected package unifi.
(Reading database ... 55553 files and directories currently installed.)
Preparing to unpack unifi_4.8.18-8395_all.modified.deb ...
Unpacking unifi (4.8.18-8395) ...
Setting up unifi (4.8.18-8395) ...
update-rc.d: using dependency based boot sequencing
Starting Ubiquiti UniFi Controller: unifi.

1.3. Убедиться в том, что контроллер Ubiquiti UniFi запустился:

netstat -na | grep 8443

tcp6 0 0 :::8443 :::* LISTEN

2. Настройка Ubiquiti UniFi

На контроллереUbiquiti UniFi необходимо произвести базовую настройку системы, точек доступа и сети. Следует создать открытую гостевую сеть, протестировать её работу. Затем перевести сеть в режим авторизации через гостевой портал (выбор метода безопасности: Open, WEP, WPA остается за вами). Следует выберите вариант "Guest Policy".

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

Гостевой портал Ubiquiti UniFi поддерживает перенаправление только на порт 80. Поэтому сервер WNAM должен быть настроен на работу только на порту 80 (не 8080 или 443).

Если сервер WNAM находится не в той же сети, что и гостевые клиенты, по умолчанию портал Ubiquiti UniFi будет блокировать траффик до сервера WNAM. В этом случае потребуется прописать адрес сервера WNAM в поле Allowed Subnets.

Применение гостевых настроек приведет к перезагрузке точек доступа. Причина в том, что хотспот (перенаправление HTTP-трафика на внешний портал авторизации) находится не в контроллере, а в самих точках доступа. Это реализуется через специальные скрипты, взаимодействующие с локальным ebtables.

3. Настройка системы WNAM

В разделе "Конфигурация" → "Сервера доступа" необходимо создать объект "Сервер доступа" типа UniFi, указать его настройки (IP-адрес, местоположение, обязательно административные логин и пароль). Система WNAM использует UniFi API с этими учетными данными для доступа к контроллеру. 

Через API производится создание и останов сессий, сбор статистики по трафику и определение имен мобильных устройств. Для сбора детальной статистики по протоколу NetFlow необходимо использовать другой роутер и соответствующий сервер доступа. UniFi NetFlow не поддерживает.

Затем в разделе "Конфигурация" → "Площадки" следует создать соответствующую запись о площадке (место оказания услуги Wi-Fi, где установлены точки доступа). Необходимо указать имя сети, в которой находятся устройства абонентов (получают IP-адреса по DHCP), например 172.16.130.0./24.

Если портал сервер WNAM находится в другой сети, и между ним и абонентами присутствует трансляция адресов (NAT), необходимо также указать этот "транслируемый адрес". Поскольку абонентские запросы попадут на сервер WNAM с этого адреса, сервер WNAM должен идентифицировать, к какой площадке привязать запрос (чтобы не получилось сообщение типа "попытка доступа с неизвестной площадки").Таким образом, поле "Присвоенная IP подсеть" будет иметь вид: 

172.16.13.0./24; 77.241.144.5

Параметр "Тэг" заполнять не нужно.

Параметр "Дополнительный ID на этом сервере" должен содержать идентификатор площадки так, как его распознает контроллерUbiquiti UniFii. По умолчанию присутствует одна площадка с именем и идентификатором default. Однако если создать несколько площадок в контроллере Ubiquiti UniFi  с разными именами, то необходимо будет настроить несколько соответствующих площадок в системе WNAM. Имена площадок, как они представлены в контроллере, не соответствуют идентификаторам, которые используются в UniFi API и о которых должен знать сервер WNAM. Для получения соответствия имени и идентификатора следует запросить на контроллере (после авторизации) ссылку:

https://172.16.130.13:8443/api/self/sites

В ответ получите строки типа: 

{ "data" : [ 
{ "_id" : "55e5df420cf21c9a1d67f654" , "attr_hidden_id" : "default" , "attr_no_delete" : true ,
"desc" : "Default" , "name" : "default" ,
"num_ap" : 1 , "num_sta" : 0 , "role" : "admin"} ,
{ "_id" : "572dbd1e0cf27b0c7f7ffd6d" ,
"desc" : "TestSite" , "name" : "0583e7ja" ,
"num_ap" : 1 , "num_sta" : 0 , "role" : "admin"}
] , "meta" : { "rc" : "ok"}}

В данном ответе имени площадки Default соответствует идентификатор default, а площадке TestSite идентификатор 0583e7ja. Данный идентификатор следует поместить в поле "Дополнительный ID на этом сервере". 

Поле "Дополнительный идентификатор" - это НЕ название площадки и НЕ SSID, это значение параметра name из вывода API /self/sites по ссылке выше. В примере это default либо 0583e7ja.

На этом настройка системы WNAM и контроллера Ubiquiti UniFi завершена. Можно произвести попытку подключения. Не авторизованный клиент в таком случае в начале будет виден в интерфейсе Ubiquiti UniFi в следующем виде.

При обращении клиента посредством браузера происходит перенаправление его сессии на гостевой портал Ubiquiti UniFi, затем на портал авторизации системы WNAM, что отображается в лог-файле wnam.log: 

22:23:22.810 DEBUG [c.n.w.web.cp.CaptivePortalController:336] - CP unifi clicked: username=E8:2A:EA:55:3D:13, ip=172.16.130.55, dst='http://lenta.ru/', ssid=UnifiCP, server='default', ap_mac=dc:9f:db:8c:92:cf
22:23:22.841 DEBUG [c.n.w.web.cp.CaptivePortalController:976] - processAuthRequest UNIFI: username=E8:2A:EA:55:3D:13, ip=172.16.130.55, server=default, site_id=9, dst='http://lenta.ru/'

При успешной авторизации абонента на портале и переходе в сеть Интернет производится авторизация его на контроллере:

22:23:22.841 DEBUG [c.n.w.web.cp.CaptivePortalController:1048] - processRedirectRequest username=E8:2A:EA:55:3D:13, method=FORM
22:23:25.805 DEBUG [c.n.w.web.cp.CaptivePortalController:807] - Redirect login: site_id=9, username=E8:2A:EA:55:3D:13, dst='http://bash.im'
22:23:25.820 DEBUG [c.n.w.web.cp.CaptivePortalController:1177] - loginAtNas UNIFI username=E8:2A:EA:55:3D:13, ip=172.16.130.55, server=default, dst='http://bash.im'
22:23:25.820 DEBUG [com.netams.wnam.web.unifi.Unifi:81] - backToUnifi username=E8:2A:EA:55:3D:13, server_address=default, site_id=9, as=VM (172.16.130.13), ap_mac=dc:9f:db:8c:92:cf
22:23:25.884 DEBUG [c.n.wnam.services.UnifiApiService:142] - Unifi authorized MAC=E8:2A:EA:55:3D:13 IP=172.16.130.55 at NAS IP=172.16.130.13, site default (ID=9)

При этом авторизованный абонент отображается на портале в виде, представленном на рисунке.

При этом в интерфейсе системы WNAM будет видна созданная сессия со всеми параметрами, в том числе МАС-адресом точки доступа, номером радио-канала и SSID.

Периодически (раз в 1 минуту) сервер WNAM обращается к Ubiquiti UniFi для получения списка текущих авторизованных клиентов, обновления счетчиков сессий, удаления просроченных сессий и отключившихся клиентов. В конфигурационном файле /etc/wnam.properties можно настроить параметр controller_session_length (в секундах), длительность сессии абонента по умолчанию (сутки). Это значение можно переопределить в настройках площадки в разделе "Ограничения", либо в глобальных настройках ограничений. Система WNAM также поддерживает сброс всех текущих сессий на сервере доступа и сброс выбранной сессии.

4. Дополнительный способ авторизации

Замечено, что в некоторых случаях авторизация абонента (время между нажатием им кнопки "подключить" до реального разрешения доступа) идет медленно, вместо обычных 1-2 секунд до 10-20. Это тревожит пользователей. Причина заключается в известной недоработке контроллера Ubiquiti UniFi, о чем неоднократно было сообщено производителю:

https://community.ubnt.com/t5/UniFi-Wireless/Authorize-from-external-portal-server-very-slow/td-p/697611/page/2

https://community.ubnt.com/t5/UniFi-Wireless/Guest-authorization-takes-longer-with-more-APs/td-p/1362055

http://community.ubnt.com/t5/UniFi-Wireless/Authorize-from-external-portal-server-very-slow/m-p/849782/highlight/true#M63653

http://community.ubnt.com/t5/UniFi-Wireless/External-hotspot-hardware-performance-max-AP-slow-authorisation/td-p/1517875

Если вы столкнулись с подобной ситуацией, начиная с версии системы WNAM 1.3.891 поддерживается возможность использовать другой способ организации гостевого портала на контроллере Ubiquiti UniFi. Для этого гостевую авторизацию на контроллере необходимо перевести в режим "без авторизации" и "использовать кастомизацию портала".

Необходимо в поле "Allowed Subnets" указать IP-адрес сервера WNAM, иначе не авторизованные пользователи не смогут на него попасть.

Далее необходимо на сервере, где установлен контроллер, внести изменения в штатную страницу портала. Для этого необходимо её найти. Для площадки Default она находится здесь: /var/lib/unifi/sites/default/portal/index.html.

Для площадки (сайта) с другим индексом (как его найти см. выше) она находится (например) по адресу /var/lib/unifi/sites/0583e7ja/portal/index.html, где 0583e7ja - индекс сайта.

Необходимо все содержимое этого файла заменить на конструкцию-редиректор: 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<title><unifi txt="WelcomePage.Title" /></title>
<meta http-equiv="refresh" content="0; url=http://172.16.130.5/cp/unifi?site-id=0583e7ja&apmac=<unifi var="ap_mac" />&mac=<unifi var="mac" />&ssid=<unifi var="ssid" />">
</head>
<body></body></html>

В параметрах необходимо прописать URL до сервера WNAM (в примере используется  http://172.16.130.5/cp/unifi) и исправить значение параметра site-id на верное. Затем необходимо сохранить этот файл и попытаться выполнить подключение. Никаких дополнительных изменений в интерфейсе системы WNAM не требуется. Поддерживается одновременно обе схемы работы, эта и старая.

 

  • No labels