Это старая версия документа.


Mikrotik HotSpot

Инструкция по настройке Hotspot на Mikrotik RouterBoard.

Рекомендуется сбросить конфигурацию перед настройкой

Настройка через веб-форму

Настройка / Сервер доступа / Изменить / Hotspot
Для типов серверов, которые поддерживают Hotspot (в даный момент это mikrotik_dhcp), доступна конфигурация хотспота через веб-интерфейс.

Конфигурация предусматривает установку на чистый Mikrotik

Для установки необходим доступ на Mikrotik через SSH-ключ.


Аргументы формы:

DNS Название Название хотспота (как будет отображаться в браузере во время редиректа)
ABillS IP Адрес Адрес сервера билинга, на котором расположены start.cgi и Radius сервер
Mikrotik Интерфейс Интерфейс микротика для конфигурации хотспота (список интерфейсов подтягивается с устройства)
IP Адрес Локальный адрес микротика на интерфейсе хотспота
Размер Сеть Длина сетевой части адреса ( в битах )
Сеть Сеть на интефейсе хотспота
DHCP Диапазон Диапазон адресов для выдачи клиентам
Роутер по умолчанию Маршрутизатор по умолчанию
DNS Дополнительный DNS для выдачи клиентам (основным будет адрес локального интерфейса)


Walled Garden - сюда добавляем хосты на которые нужно разрешать доступ до авторизации (платёжные системы, сайт компании), поддерживаются как IP адреса, так и домены (можно использовать wildcard маски *.vk.com)

Так же будет установлен кастомный портал авторизации клиента.

Создайте линк на стартовую страницу

# ln -s /usr/abills/Abills/modules/Hotspot/start.cgi /usr/abills/cgi-bin/start.cgi


Добавьте в libexec/config.pl:

$conf{HOTSPOT_LOGIN_URL}= 'http://X.X.X.X/login?fastlogin=true&login=%LOGIN%&password=%PASSWORD%' X.X.X.X - IP адрес микротика со стороны клиента. Линк для кнопки «Залогиниться в хотспот» на start.cgi

Автоматическая настройка

Возможна автоматическая настройка Хотспота через програму mikrotik_hotspot.pl

Примеры

Настройка хотспота на микротике, адрес которого 192.168.0.60, RADIUS и start.cgi на 192.168.0.62:

# ./mikrotik_hotspot.pl CONFIGURE_HOTSPOT=y IP_ADDRESS=192.168.0.60 BILLING_IP_ADDRESS=192.168.0.62


То же, с заливкой SSH сертификата и интерфесе хотспота wlan1:

# ./mikrotik_hotspot.pl CONFIGURE_HOTSPOT=y IP_ADDRESS=192.168.0.60 BILLING_IP_ADDRESS=192.168.0.62 UPLOAD_KEY=y HOTSPOT_INTERFACE=wlan1


Програма сохраняет настройки предыдущих вызовов, для повторной конфигурации:

# ./mikrotik_hotspot.pl READ_CONFIG=192.168.0.64.arguments


Значения по умолчанию

Любое из значений можно поменять, задав через аргументы командной строки

UPLOAD_KEY n
BACKUP n
CONFIGURE_HOTSPOT n
BACKUP_AUTO n
SSH_PORT 22
RADIUS_SECRET secretpass
CERTS_DIR /usr/abills/Certs/
IDENTITY_FILE /usr/abills/Certs/id_rsa.abills_admin
REMOTE_ADMIN_NAME abills_admin
LOGIN admin
MASK 255.255.255.0
HOTSPOT_INTERFACE wlan1
BACKUP_FILE \$IP_ADDRESS_\$DATE.backup
HOTSPOT_ADDRESS 192.168.4.1
HOTSPOT_NETWORK 192.168.4.0
HOTSPOT_NETMASK 24
MIKROTIK_GATEWAY 192.168.0.1
DHCP_RANGE 192.168.4.3-192.168.4.254
MIKROTIK_DNS 8.8.8.8
HOTSPOT_DNS_NAME hotspot.abills.net.ua

Ручная настройка

через консоль:

 /interface bridge add name=Hotspot_clients disabled=no comment="Hotspot clients bridge"
 /interface bridge port add bridge=Hotspot_clients interface=wlan1
 /interface wireless set wlan1 bridge-mode=enabled mode=bridge band=2ghz-b/g/n wireless-protocol=802.1

Установим Hotspot:

 
/ip hotspot setup
Select interface to run HotSpot on 

hotspot interface: Hotspot_clients
Set HotSpot address for interface 

local address of network: 10.0.0.1/16    
masquerade network: yes
Set pool for HotSpot addresses 

address pool of network: 10.0.0.3-10.0.255.254    
Select hotspot SSL certificate 

select certificate: none                    
Select SMTP server 

ip address of smtp server: 0.0.0.0
Setup DNS configuration 

dns servers: 8.8.8.8
DNS name of local hotspot server 

dns name: 
Create local hotspot user 

name of local hotspot user: admin
password for the user: admin

/ip hotspot profile set hsprof1 use-radius=yes
/radius set timeout=00:00:01 numbers=0

Открываем доступ для билинга и различных адресов из интернета:

 /ip hotspot walled-garden ip add dst-host=8.8.8.8 comment="DNS Allowed"
 /ip hotspot walled-garden ip add dst-host=8.8.4.4
 /ip hotspot walled-garden ip add dst-host=10.0.0.2 comment="Access to ABillS Server"
 /ip hotspot walled-garden ip add dst-host=webmoney.ru comment="Access to Webmoney.ru"

Подключаем внешний Radius сервер в настройках Mikrotik:

/radius add address=10.0.0.2 secret=radsecret service=hotspot

После этого в билинге нужно Добавить сервер доступа Mikrotik

Создайте линк на стартовую страницу

# ln -s /usr/abills/Abills/modules/Hotspot/start.cgi /usr/abills/cgi-bin/start.cgi

через Winbox:
ABillS: настройка Mikrotik+HotSpot+ABillS

Страница авторизации на Mikrotik

Страница авторизации, с ссылкой на стартовую страницу на билинге, на которой клиент может купить карточку доступа к Hotspot.

Установка

Распаковываем архив и заливаем на Mikrotik.

У пользователя abills_admin должны быть включены права ftp.

cd /usr/abills/misc/hotspot/
tar -xvf hotspot.tar
scp -r hotspot abills_admin@10.0.0.1:/

Если IP адрес интерфейса хотспота отличается от 10.0.0.1, то на странице hotspot/login.html изменить значение переменной ext_url на нужное значение.

Описание

Возможности:

  • Переход на страницу биллинга для покупки карточки доступа (модуль Cards) или включения гостевого доступа
  • Мультиязычный интерфейс
  • Запись и чтение из cookie выбранного языка
  • Переход на start.cgi с указанным языком
  • Вывод ошибок авторизации в браузер
  • Быстрая авторизация

Скрипт multilang.js

- Позволяет реализовать мультиязычный интерфейс.
На данный момент есть поддержка 2-ух языков:

  • Английский
  • Русский

Для добавления новых языков нужно создать новую секцию в switch(lang) и заполнить переменные, а на странице hotspot/login.html добавить элемент в список Languages.

Скрипт fastlogin.js

Пользователь после регистрации может авторизоваться по ссылке вида:
http://10.0.0.1/login?fastlogin=true&login=%LOGIN%&password=%PASSWORD%
Для этого в config.pl добавить:

$conf{HOTSPOT_LOGIN_URL}='http://10.0.0.1/login?fastlogin=true&login=%LOGIN%&password=%PASSWORD%'

Альтернативная схема авторизации

Для расширения возможностей работы с хотспотом был добавлен еще один вариант взаимодействия биллинга с хотспотом.

Настройка Хотспота полностью аналогична описанной выше. Отличие только в странице авторизации login.html

login.html
<html>
  <title>...</title>
  <body>
    <form name="redirect" action="https://192.168.0.1:9443/start.cgi" method="post">
      <input type="hidden" name="mac" value="$(mac)">
      <input type="hidden" name="username" value="$(username)">
      <input type="hidden" name="link_login_only" value="$(link-login-only)">
      <input type="hidden" name="link_orig" value="$(link-orig)">
      <input type="hidden" name="server_name" value="$(server-name)">
      <input type="hidden" name="error" value="$(error)">
    </form>
    <script language="JavaScript">
      document.redirect.submit();
    </script>
  </body>
</html>

В файле необходимо изменить адрес на ваш.

Конфигурация

$conf{HOTSPOT_AUTO_LOGIN} = 1; Использование альтернативного способа авторизации (по умолчанию используется старая схема)
$conf{HOTSPOT_LOG} = '/usr/abills/var/log/hotspot_log'; Отдельный лог для событий связанных с хотспотом. (авторизация, регистрация, ошибки)
$conf{HOTSPOT_REDIRECT_URL} = 'https://www.google.com'; Страница куда будет перенаправлен пользователь после подключения.
$conf{HOTSPOT_MAC_LOGIN} = 1; Разрешить авторизацию пользователей по мак адресу клиента.
$conf{HOTSPOT_CHECK_PHONE} = 1; Обязательная проверка телефона. Система отправляет смс с пин-кодом на указанный номер.
$conf{HOTSPOT_AUTH_NUMBER} = '+XXXXXXXXXXX'; Номер телефона, на который нужно перезвонить пользователю для авторизации
$conf{HOTSPOT_SN_LOGIN} = 'Facebook'; Разрешить авторизацию пользователей через Фейсбук.
$conf{HOTSPOT_BUY_CARDS} = 1; Разрешить регистрацию только после оплаты тарифа. (Должен быть настроен прием онлайн платежей)
$conf{HOTSPOT_SHOW_FB} = 'https://www.facebook.com/Mypage'; Предложение лайкнуть ФБ страницу. (Работает только с авторизацией через Фейсбук)
$conf{HOTSPOT_GUESTS_GROUP} = 'HotGroup'; Группа для пользователей, которые регистрируются через хотспот.
$conf{HOTSPOT_GUESTS_GID} = '800'; Номер(ID) этой группы.

Примеры конфигурации

MAK авторизация

$conf{HOTSPOT_AUTO_LOGIN} = 1;
$conf{HOTSPOT_MAC_LOGIN} = 1;
$conf{HOTSPOT_REDIRECT_URL} = 'https://www.google.com';

Пользователь подключается к сети WiFi, на его устройстве автоматически открывается браузер. После нескольких автоматических редиректов в браузере открывается страница www.google.com (На фоне прошла проверка зарегистрирован ли уже пользователь с этим МАК-адресом, если нет - создан новый пользователь. Данные найденного либо созданного пользователя были отправлены на микротик для авторизации.)

Фейсбук авторизация

$conf{HOTSPOT_AUTO_LOGIN} = 1;
$conf{HOTSPOT_SN_LOGIN} = 'Facebook';
$conf{HOTSPOT_SHOW_FB} = 'https://www.facebook.com/Coca-Cola/';
$conf{HOTSPOT_REDIRECT_URL} = 'https://www.google.com';

Пользователь подключается к сети WiFi, на его устройстве автоматически открывается браузер. При первом подключении откроется страница Фейсбука, с просьбой дать доступ к публичной информации пользователя. Далее откроется страница с виджетом, который предложит лайкнуть страницу. После нажатия кнопки «продолжить» пользователя перенаправит на www.google.com. (На фоне все аналогично первому примеру, только проверяется не мак, а аккаунт Фейсбука).

Идентификация пользователя с помощью СМС

$conf{HOTSPOT_AUTO_LOGIN} = 1;
$conf{HOTSPOT_CHECK_PHONE} = 1;
$conf{HOTSPOT_REDIRECT_URL} = 'https://www.google.com';

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

Идентификация пользователя с помощью звонка на указанный номер

$conf{HOTSPOT_AUTO_LOGIN} = 1;
$conf{HOTSPOT_CHECK_PHONE} = 1;
$conf{HOTSPOT_AUTH_NUMBER} = '+XXXXXXXXXXX';

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

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

$conf{HOTSPOT_AUTO_LOGIN} = 1;
$conf{HOTSPOT_MAC_LOGIN} = 1;
$conf{HOTSPOT_REGISTRATION} = 'NO'; (запретить гостевых пользователей) 
$conf{HOTSPOT_BUY_CARDS} = 1;  (разрешить онлайн оплату тарифа)
$conf{HOTSPOT_TPS}='123;345';  (тарифы доступные для пользователя)

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