Captive Portal на базе компонента LBHotel

Операторы могут предоставлять доступ в сеть даже без беспроводного контроллера. Отвечать за авторизацию абонентов будет модуль LBHotel.

  1. LBHotel принимает данные, которые абоненты ввели в форме авторизации.

  2. Отправляет запрос к RADIUS-серверу.

  3. В случае положительного ответа — добавляет IP-адрес в специальную цепочку брандмауэра iptables. У абонента появляется доступ в интернет.

Этот вариант подойдёт только в том случае, если в качестве основного шлюза в интернет используется маршрутизатор с ОС Debian или CentOS. Маршрутизатор может быть как выделенным сервером, так и тем же сервером, на котором функционирует LANBilling.

  1. Установите модуль авторизации LBHotel.

  2. Настройте агент.

  3. Настройте модуль.

Установить модуль авторизации LBHotel

Скачать пакет

  1. В личном кабинете перейдите на вкладку «Загрузки».

  2. Нажмите image в строке с пакетом lbhotel. Если такого пакета нет, обратитесь в техподдержку.

  3. Сохраните пакет на сервер, где будете устанавливать модуль. В этой инструкции предполагается, что пакеты хранятся в директории /root/.

Установить LBhotel

  1. Перейдите в консоль сервера. Установите пакет модуля LBhotel. Пример:

    dpkg -i lbhotel*.deb
    

    ``

  2. Добавьте сервис в автозагрузку:

    systemctl enable lbhotel
    

    ``

  1. Перейдите в консоль сервера. Установите пакет модуля LBhotel. Пример для CentOS 8:

    rpm -ivh /root/lbhotel*.rpm
    

    ``

  2. Добавьте сервис в автозагрузку:

    systemctl enable lbhotel
    

    ``

Настроить агент

Создать агент

Добавьте агент и задайте параметры:

  • Флаг «Сохранять только последнюю неудачную попытку авторизации» — включить

  • Флаг «Выделять адреса динамически из пула» — отключить

  • Флаг «Не отправлять атрибут Framed-IP-Address с пустым значением» — включить

  • Флаг «Запускать handler при изменении текущей скорости» — включить

  • «Тайм-аут зависшей сессии (сек)» — 300 секунд

    image

Добавить LBHotel в качестве NAS

Добавьте сервер доступа с настройками:

  • IP — 127.0.0.1;
  • метод авторизации — LOGIN;
  • секрет — придумайте пароль, например captive-secret.

Настроить модуль LBHotel

В конфигурационном файле lbhotel.conf задайте настройки.

  1. Откройте файл конфигурации:

    nano /etc/lbhotel.conf
    

    ``

  2. Укажите локальный сетевой интерфейс маршрутизатора:

    lan_interface=eth0
    

    ``

  3. Укажите внешний сетевой интерфейс маршрутизатора:

    wan_interface=eth1
    

    ``

  4. Введите секрет, который ранее был указан в настройках NAS:

    # RADIUS shared secret
    sharedsecret=captive-secret
    

    ``

    Если компонент LBHotel функционирует на отдельном сервере, измените настройки соединения с LBcore и сервером RADIUS. По умолчанию подразумевается, что все компоненты решения работают на одном сервере:

    # LBcore server IP[:port]
    lbcore_host=127.0.0.1
    # RADIUS server to use for authentication requests.
    authserver=127.0.0.1:1812
    # RADIUS server to use for accouting requests.
    acctserver=127.0.0.1:1813
    

    ``

Настроить принудительную остановку активных сессий

Вы можете разрешить принудительную остановку активных сессий из административного интерфейса LANBilling.

  1. Сделайте копию скрипта остановки сессий. По умолчанию пример handler-скрипта находится в /usr/local/billing/handler.lbhotel.vgstop.sample.sh.

    cp /usr/local/billing/handler.lbhotel.vgstop.sample.sh /usr/local/billing/handler.lbhotel.vgstop.sh
    

    ``

  2. Откройте конфигурационный файл модуля LBarcd:

    nano /etc/billing.conf.LBarcd
    

    ``

  3. Раскомментируйте параметр handler и укажите путь к скрипту остановки сессий:

    # External script handler
    handler = /usr/local/billing/handler.lbhotel.vgstop.sh
    

    ``

  4. Перезапустите LBarcd:

    systemctl restart lbarcd
    

    ``

  5. Запустите LBHotel:

    systemctl start lbhotel
    

    ``

После запуска LBHotel система автоматически создаст специальные цепочки iptables, отвечающие за перенаправление пользователей на портал и за ограничение доступа к сети:

*nat
:PREROUTING ACCEPT [1142766:363010838]
:INPUT ACCEPT [27260:1765101]
:OUTPUT ACCEPT [482:31585]
:POSTROUTING ACCEPT [446:30270]
:lbhotel_prerouting — [0:0]
-A PREROUTING -j lbhotel_prerouting
-A lbhotel_prerouting -i eth0 -p tcp -m multiport —dports 80,443 -j REDIRECT
*filter
:INPUT ACCEPT [69015737:13858002160]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [68889252:13858019177]
:lbhotel_filter — [0:0]
-A FORWARD -j lbhotel_filter
-A lbhotel_filter -i eth0 -p udp -m udp —dport 53 -j ACCEPT
-A lbhotel_filter -i eth0 -j DROP
*mangle
:PREROUTING ACCEPT [70161272:14221345519]
:INPUT ACCEPT [69015737:13858002160]
:FORWARD ACCEPT [10245:928625]
:OUTPUT ACCEPT [68889252:13858019177]
:POSTROUTING ACCEPT [68895354:13858679602]
:lbhotel_shaper — [0:0]
-A FORWARD -j lbhotel_shaper

Настроить управление полосой пропускания

Значение полосы пропускания может быть задано в тарифе или индивидуально для каждого абонента. Чтобы это значение было передано на сервер доступа LBHotel с помощью RADIUS-атрибута Reply-Message, настройте модуль LBHotel и LANBilling.

  1. В конфигурационном файле lbhotel.conf раскомментируйте параметры script_start и script_stop и измените значение переменной use_shaper на «yes»:

    use_shaper=yes
    script_start=/usr/local/billing/script.on
    script_stop=/usr/local/billing/script.off
    

    ``

  2. Перезапустите модуль:

    systemctl restart lbhotel
    

    ``

  3. Сконфигурируйте RADIUS-атрибуты для всех используемых значений полосы пропускания по инструкции.

Запустить модуль LBhotel

После того как вы завершите настройку системы, запустите модуль LBhotel:

systemctl start lbhotel

Можно использовать другие команды для управления модулем.

  • Остановить:

    systemctl stop lbhotel
    
    
    
  • Перезапустить:

    systemctl restart lbhotel
    
    
    
  • Проверить состояние:

    systemctl status lbhotel