**''Документация по модулю 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.