Captive Portal может работать на базе программного беспроводного контроллера и точек доступа Ubiquiti UniFi. Маршрутизатор может быть как выделенным сервером, так и тем же сервером, на котором функционирует LANBilling.
В документации рассматривается только вариант разворачивания контроллера в одной сети с точками доступа — on-site. Также возможна настройка облачного варианта контроллера — off-site.
Добавьте агент и задайте параметры:
Флаг «Сохранять только последнюю неудачную попытку авторизации» — включить
Флаг «Выделять адреса динамически из пула» — отключить
Флаг «Не отправлять атрибут Framed-IP-Address с пустым значением» — включить
Флаг «Запускать handler при изменении текущей скорости» — включить
«Тайм-аут зависшей сессии (сек)» — 300 секунд
Компонент LBHotel выполняет роль центрального модуля. Он принимает введённые на форме авторизации данные, выполняет запрос к серверу RADIUS и, в случае успешного ответа, открывает доступ в сеть.
Добавьте сервер доступа с настройками:
Откройте конфигурационный файл модуля LBarcd:
nano /etc/billing.conf.LBarcd
``
Раскомментируйте параметр handler и укажите путь к скрипту остановки сессий:
# External script handler
handler = /usr/local/billing/handler.lbhotel.vgstop.sh
``
Перезапустите LBarcd:
systemctl restart lbarcd
``
Откройте конфигурационный файл LBHotel:
nano /etc/lbhotel.conf
``
Включите специальный режим работы:
# Used mode (common or unifi)
mode=unifi
``
Измените порт взаимодействия с порталом на 8088, так как порт по умолчанию 8080 будет занят контроллером UniFi:
# Socket used for communication with apache/PHP
socket=0.0.0.0:8088
``
Введите секрет, который ранее был указан в настройках NAS:
# RADIUS shared secret
sharedsecret=captive-secret
``
Перезапустите LBHotel:
systemctl restart lbhotel
``
Настройки отключают в LBHotel работу с брандмауэром iptables и сообщают о взаимодействия с API UniFi контроллера при открытии и закрытии доступа в сеть.
Убедитесь, что в iptables не осталось специализированных цепочек, которые создаются при запуске LBHotel в обычном режиме работы:
iptables -F FORWARD
iptables -F lbhotel_filter
iptables -X lbhotel_filter
iptables -t nat -F PREROUTING
iptables -t nat -F lbhotel_prerouting
iptables -t nat -X lbhotel_prerouting
iptables -t mangle -F FORWARD
iptables -t mangle -F lbhotel_shaper
iptables -t mangle -X lbhotel_shaper
Для взаимодействия с порталом авторизации выполните настройку.
Нажмите «Add New Site» в выпадающем списке сайтов в верхнем правом углу. Для каждого Captive Portal должен быть создан отдельный сайт.
На странице сайта перейдите в раздел «Settings».
На вкладке «Site» повторно выберите страну и временную зону для сайта.
Примените настройки.
На вкладке «Wireless Networks» создайте новую беспроводную сеть с открытым доступом, установите настройку «Apply guest policies (captive portal, guest authentication, access)».
Примените настройки.
На вкладке «Guest Control» включите настройку «Enable Guest Portal».
Выберите аутентификацию на внешнем Captive Portal «External portal server».
Укажите IP-адрес сервера с порталом и имя виртуального хоста, созданного для определённого Captive Portal.
На этой же вкладке можно задать список IP-адресов, на которые возможен доступ без авторизации на портале.
Примените настройки.
Перейдите в раздел «Devices» и добавьте из списка обнаруженных нужную точку доступа, нажав «Adopt». Она будет готова к работе и сконфигурирована исходя из заданных настроек сайта.
Вы можете создать в директории /usr/lib/unifi/data/sites/<закодированное имя сайта>
файл config.properties
со следующим содержимым:
# отключить перенаправление запросов http на https портала (если на портале нет https)
config.redirect_to_https=false
# разрешить перенаправление https на портал (по умолчанию выключено)
config.redirect_https=true
Скопируйте файл /usr/local/billing/unifi_ctl.py.sample
и измените его расширение на «py»:
cp /usr/local/billing/unifi_ctl.py.sample /usr/local/billing/unifi_ctl.py
В файле укажите логин и пароль администратора для доступа к контроллеру, адрес контроллера, порт и версию API:
username = 'root'
password = 'password'
controller = '127.0.0.1'
port = '8443'
version = 'v4'
Контроллер UniFi при перенаправлении на Captive Portal добавляет к имени виртуального хоста строку вида: /guest/s/<закодированное имя сайта>. Поэтому добавьте в конфигурационный файл хоста директиву Alias
. Пример:
Alias /guest/s/pw8hiid3 /usr/share/lanbilling/phpclient/captive-portal/public
Есть вопросы по документации? Пожалуйста, напишите их