**''Документация по модулю Hotspot и принадлежащим к нему страницам перенесена в Confluence''**
[[http://abills.net.ua:8090/display/AB/Mikrotik]]
=====Mikrotik HotSpot=====
Инструкция по настройке Hotspot на Mikrotik RouterBoard.\\
Рекомендуется [[abills:docs:nas:mikrotik:basic| сбросить конфигурацию перед настройкой]]
==== Настройка через веб-форму ====
''Настройка / Сервер доступа / Изменить / Hotspot ''\\
Для типов серверов, которые поддерживают Hotspot (в даный момент это mikrotik_dhcp), доступна конфигурация хотспота через веб-интерфейс.\\
\\
**Конфигурация предусматривает установку на чистый Mikrotik**\\
\\
Для установки необходим [[abills:docs:nas:mikrotik:ssh|доступ на Mikrotik через SSH-ключ]].\\
\\
{{ :abills:docs:manual:admin:hotspot_config.png?nolink |}}
\\
Аргументы формы:
^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
После этого в билинге нужно [[abills:docs:nas:mikrotik:abills| Добавить сервер доступа Mikrotik]]\\
Создайте линк на стартовую страницу
# ln -s /usr/abills/Abills/modules/Hotspot/start.cgi /usr/abills/cgi-bin/start.cgi
**через Winbox:**\\
{{youtube>large:3ezFzH14k8c|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%'
===== Альтернативная схема авторизации =====
Для расширения возможностей работы с хотспотом был добавлен еще один вариант взаимодействия биллинга с хотспотом.
{{ :abills:docs:nas:mikrotik:hotspot_new.png?nolink |}}
Настройка Хотспота (на Mikrotik) полностью аналогична описанной выше. Отличие только в странице авторизации login.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_LOGIN_PREFIX} = 'hs'; | Префикс который добавляется к логину пользователей хотспота. |
^$conf{HOTSPOT_GUESTS_GROUP} = 'HotGroup'; | Группа для пользователей, которые регистрируются через хотспот. |
^$conf{HOTSPOT_GUESTS_GID} = '800'; | Номер(ID) этой группы. |
^$conf{HOTSPOT_TPS}='7'; | Явно указать тариф для пользователей хотспота. По умолчанию используется гостевой тариф. |
==== Примеры конфигурации ====
=== 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_ONE_LOGIN_FOR_ALL} = 'hotspot_guest:123456';
Все пользователи авторизируются под одним логином, указанным в конфигурации (в примере логин - hotspot_guest, пароль 123456). Вам необходимо заранее создать такого пользователя и выбрать ему гостевой тариф. В настройке пользователя, в поле CID нужно указать 'ANY', для того чтобы система пропускала пользователей с любыми МАК-адресами. В поле "Одновременно" можно указать предельное число одновременно подключенных пользователей с этим логином (или 0 если ограничений нет).
=== Идентификация пользователя с помощью СМС ===
$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';
Для обработки звонка, в extention.conf asteriska нужно добавить
[abills-agi]
exten => 600,1,NoOP(-----start-----)
exten => 600,n,AGI(/usr/abills/Abills/modules/Hotspot/phone_verification.agi)
exten => 600,n,Hangup()
Пользователь после подключения попадает на форму ввода телефона. После ввода телефона, система предложит ему перезвонить на определенный номер для подтверждения. После звонока - в базу будет добавлен пользователь с таким мак-адресом и телефоном, и последующие подключения будут происходить автоматически.
=== Подключение с онлайн-оплатой активации ===
$conf{HOTSPOT_AUTO_LOGIN} = 1;
$conf{HOTSPOT_MAC_LOGIN} = 1;
$conf{HOTSPOT_REGISTRATION} = 'NO'; (запретить гостевых пользователей)
$conf{HOTSPOT_BUY_CARDS} = 1; (разрешить онлайн оплату тарифа)
$conf{HOTSPOT_TPS}='123;345'; (тарифы доступные для пользователя)
Пользователь после подключения попадает на страницу с списком доступных вариантов подключения, затем выбирает метод оплаты и попадает на страницу выбранной платежной системы. После успешного платежа, в биллинге создается пользователь, и на его счет засчитывается полученная сумма. Дальнейшие подключения происходят автоматически. Если на счету закончились деньги, пользователь увидит сообщение о негативном депозите и может пополнить счет.
=== Оплата с помощью ваучера ===
$conf{HOTSPOT_AUTO_LOGIN} = 1;
$conf{HOTSPOT_MAC_LOGIN} = 1;
$conf{HOTSPOT_USE_PIN} = 1;
$conf{HOTSPOT_TPS}='7';
Пользователь сразу попадает на страницу ввода пин-кода, после ввода кода с ваучера появляется интернет. Если оплаченное время прошло - пользователь опять попадает на страницу ввода пина. Коды пополнения генерируются с помощью модуля Cards, и выдаются диллерам. В данной схеме обязательно использовать тариф с почасовой оплатой. Для примера вы создаете тариф с стоимостью 10 единиц за 1 час. И создаете карточки пополнения на 5 единиц. После ввода пин кода пользователь получит интернет на пол часа.
==== Возможные ошибки ====
Для регистрации пользователей используется модуль Cards, проверте есть ли все необходимые таблицы в базе данных.
Для оплат используется модуль Paysys, проверте подключен ли модуль и есть ли в конфиге настройки хотя бы одной платежной системы.
Дла авторизации через социальные сети дожно быть добавлено дополнительное информационное поле соответствующей соц.сети.
Для гостевых пользователей должен быть создан тариф с типом оплаты "Гостевой доступ".
Убедитесь что в файле "login.html" залитом на Микротик прописан именно ваш адрес биллинга, а сам адрес добавлен в список walled garden ip list.
Некоторые телефоны не приветствуют перенаправление с https на http и наоборот. Решение проблемы - открыть еще один виртуальный сервер, для доступа к start.cgi по http.