Содержание

Идентификация абонента в сети WiFi с помощью мобильного телефона

Рекомендуем ознакомиться с возможностью модуля Wi-Fi HotSpot, управление осуществляется через графический интерфейс DPIUI2.
Ниже представлен вариант для самостоятельной реализации данного модуля.
Подробная инструкция развертывания Wi-Fi Hot Spot.

Введение

В связи с ужесточением правил доступа через публичные WiFi hotspots к сети оператора связи, появилась необходимость идентифицировать абонента одним из способов по телефонному номеру, по паспортным данным или через портал гос.услуг. В данном примере разберем организацию доступа с использованием идентификации абонента по телефонному номеру.

Схема работы

Последовательность действий:

  1. абонент подключается к сети WiFi
  2. появляется welcome page с информацией, что абонент должен открыть браузер и идентифицировать себя 1)
  3. абонент отрывает браузер, при переходе на любой URL, происходит переадресация абонента на страницу идентификации
  4. абонент вводит телефонный номер, запрашивает код доступа
  5. код доступа отправляется на телефонный номер через SMS
  6. абонент вводит полученный код доступа
  7. происходит запись сессионной куки на абонентское устройство с сохранением в течении суток 2) и происходит переход на запрошенный пользователем URL

Для настройки сети потребуется, подключенные отдельно:

  1. DHCP сервер для организации централизованной выдачи адресов абонентам, обладающий возможностью при выдачи нового IP адреса вызвать shell скрипт 3)
  2. Виртуальная машина с установленным WEB-сервером Apache (httpd), модулем просмотра статистики и отчетов (nfsen)
  3. Доступ к сервису для отправки SMS сообщений4)
  4. (опционально) NAT для уменьшения к-ва используемых IPv4 адресов, и записью лога трансляций IP↔IP,PORT 5)
  5. (опционально) Radius для аутентификации в сети по идентификатору абонента 6)

Схема сети (упрощенно):

  1. WiFi роутер, сконфигурированный для получения IP от централизованного DHCP сервера и установлена welcome page 7)
  2. Роутер(ы) сети
  3. СКАТ DPI
  4. Граничный роутер

таким образом весь трафик абонентов проходит через СКАТ DPI.

Последовательность работы:

  1. абонентское устройство подключается к WiFi роутеру
  2. WiFi роутер обращается за новым IP к DHCP серверу
  3. DHCP сервер вызывает shell скрипт, при выдаче нового IP, и отдает данные по новому IP на WiFi роутер
  4. shell скрипт по выданному IP на СКАТ DPI активирует услугу белый список и тариф с ограничениями доступа
  5. WEB-сервер получает запрос на welcome page, абонент активирует браузер и переходит на любой URL
  6. WEB-сервер получает запрос на страницу идентификации 8), абонент вводит телефонный номер и нажимает "получить код доступа"
  7. WEB-сервер получает запрос на код доступа, формирует случайное число и отправляет на телефон абонента, абонент вводит в форму полученный код и нажимает подтвердить
  8. WEB-сервер получает запрос на подтверждение кода доступа, если код правильный, вызывает shell скрипт для удаления услуги белый список и установки тарифа WiFi доступа, устанавливает куки в браузере и переадресует на запрошенный URL

архив с исходными файлами

Настройка DPI

используем описание классов protocols.txt

http    cs0
https   cs0
dns     cs0
default cs1

Конвертируем:

cat protocols.txt|lst2dscp /etc/dpi/protocols.dscp

из архива с исходниками копируем на DPI сервер директорию:

htdocs/wifi/.script в /home/fastdpi/

создаем файл тарифа default_policing.cfg для доступа к интернет через WiFi - 10 mbit:

htb_inbound_root=rate 10mbit
htb_inbound_class0=rate 1mbit ceil 10mbit
htb_inbound_class1=rate 1mbit ceil 10mbit
htb_inbound_class2=rate 8bit ceil 10mbit
htb_inbound_class3=rate 8bit ceil 10mbit
htb_inbound_class4=rate 8bit ceil 10mbit
htb_inbound_class5=rate 8bit ceil 10mbit
htb_inbound_class6=rate 8bit ceil 10mbit
htb_inbound_class7=rate 8bit ceil 10mbit
htb_root=rate 10mbit
htb_class0=rate 1mbit ceil 10mbit
htb_class1=rate 1mbit ceil 10mbit
htb_class2=rate 8bit ceil 10mbit
htb_class3=rate 8bit ceil 10mbit
htb_class4=rate 8bit ceil 10mbit
htb_class5=rate 8bit ceil 10mbit
htb_class6=rate 8bit ceil 10mbit
htb_class7=rate 8bit ceil 10mbit

создаем файл тарифа captive_portal_hard.cfg для блокировки доступа к интернет совместно с белым списком:

htb_inbound_root=rate 256kbit
htb_inbound_class0=rate 8bit ceil 256kbit
htb_inbound_class1=rate 8bit ceil 8bit
htb_inbound_class2=rate 8bit ceil 8bit
htb_inbound_class3=rate 8bit ceil 8bit
htb_inbound_class4=rate 8bit ceil 8bit
htb_inbound_class5=rate 8bit ceil 8bit
htb_inbound_class6=rate 8bit ceil 8bit
htb_inbound_class7=rate 8bit ceil 8bit
htb_root=rate 256kbit
htb_class0=rate 8bit ceil 256kbit
htb_class1=rate 8bit ceil 8bit
htb_class2=rate 8bit ceil 8bit
htb_class3=rate 8bit ceil 8bit
htb_class4=rate 8bit ceil 8bit
htb_class5=rate 8bit ceil 8bit
htb_class6=rate 8bit ceil 8bit
htb_class7=rate 8bit ceil 8bit

Настроить услугу белый список:

cp_server=yoursite.ru/welcome.php

Настройка DHCP

  1. установить на триггер на выдачу нового IP: ssh dpi_user@dpi_host "/home/fastdpi/_add_captive_portal.sh <IP>"

Настойка Web-сервера

  1. настроить конфигурацию Apache, пример в директории архива conf/:
    в conf.d/php.ini перенести/добавить настройки из примера conf/php.ini
    включить файл main.conf
    настроить DocumentRooot на /var/www/html/htdocs/wifi/
  2. скопировать htdocs/ в /var/www/html
  3. отредактировать /var/www/html/htdocs/wifi/.script/remove_captive_portal.sh
  4. отредактировать /var/www/html/htdocs/wifi/request.php указать USER и PASSWORD доступ к сервису отправки SMS сообщений
1)
для мобильных устройств, например iphone автоматически отображаемая welcome page открывается в специальном режиме браузера, в котором нельзя сохранить сессионные куки и требуется открыть браузер отдельно.
2)
сессионные куки используются для повторной идентификации абонента в сети что бы не требовалось снова идентифицировать абонента через отправку SMS, срок хранения может регулироваться оператором связи самостоятельно.
3)
считаем включенным в сеть до DPI
4)
в примере используется сервис www.smsdirect.ru
5) , 6)
не будет рассматриваться далее, для упрощения схемы
7)
должна располагаться на ВМ с WEB-сервером
8)
так же проверяется наличие куки, если куки есть, то происходит автоматическая регистрация в сети абонента по данным сохраненным в куки