Описание WiFi-агента

WiFi-агент предназначен для манипулирования клиентами в WiFi-сетях. Он взаимодействует с сервером ABilling и Access и Accouinting-серверами по RADIUS-протоколу для передачи информации о появлении клиента, его уходе и актуальном времени сессии. Также он управляет маршрутизатором. Общая схема взаимодействия может быть представлена на следующей диаграмме.

Схема взаимодействия

В данный момент WiFi-агент и WiFi-портал реализованы одним приложением и поднимаются на машине маршрутизатора. Это решение работает только для ОС семейства Linux (под FreeSBD и т.п. возможен запуск, если адаптировать скрипты). Пользователь выходит в WiFi-сеть, по DHCP получает IP-адрес с DHCP-сервера, установленного в этой сети, и через точку доступа попадает на маршрутизатор, на котором стоит ОС Linux со службой iptables. Iptables настраивается таким образом, что по умолчанию для клиента закрыты все порты кроме порта, на котором висит WiFi-портал. Все запросы на 80-ый порт перебрасываются на страницу портала, на которой пользователь вводит логин и пароль для доступа к WiFi-сетям. Страница авторизации имеет такой вид:

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

Пользователь водит логин/пароль.

Далее Портал обращается к Access-серверу и шлёт на него авторизационный RADIUS-пакет. Если авторизация проходит успешно (в ответ получен RADIUS-пакет подтверждения авторизации), то портал шлёт об этом запрос WiFi-агенту. WiFi-агент, в свою очередь, шлёт стартовый RADIUS-пакет на Access-сервер и меняет правила iptables, разрешая пользователю выйти в интернет. После успешной авторизации пользователя перекидывают на сервисную страницу.

Сервисная страница

На эту же страницу пользователь может попасть всегда (даже после авторизации), зайдя на http://192.168.184.39:9090 (путь зависит от настроек). Здесь он видит свой баланс, ссылку на первоначальный ресурс, который он набирал до того, как его перекинули на страницу авторизации. Также есть альтернативная ссылка на эту страницу через https.

Сессия клиента может быть завершена следующими способами:

  1. Клиент зашёл на страницу портала и нажал кнопку "выйти";

  2. Клиент исчерпал свой баланс и Access-сервер послал сообщение WiFi-агенту о завершении работы клиента с данным ip;

  3. WiFi-агент, периодически проверяющий (в текущий момент через каждый 60 сек) состояние счётчиков iptables, определит, что клиент был неактивен в течении некоторого времени.

В случае завершения работы (не важно каким из выше перечисленных способов) WiFi-агент пошлёт Stop-пакет Accounting-серверу и удалит разрешающие правила iptables для нужного IP-адреса.

C точки зрения модуля Inet WiFi-агент выступает как NAS-устройстово в дереве устройств. В текущий момент он поддерживает следующие возможности :

  1. Работа с Accounting-сервером по RADIUS-протоколу (Start, Stop, Update);

  2. Тарификация с помощью любых тарифов (по времени, по трафику netflow, по RADIUS-пакетам), которые можно завести в системе ABilling и которые поддерживаются модулем Inet. Для обсчёта трафика на маршрутизаторе нужно поднять NetFlow-агент . Также клиент имеет возможность выбора REALM-ов сразу на странице авторизации;

  3. Доступ к статистике клиента и все возможности, которые предоставляет ядро ABilling и модуль Inet для Web-интерфейса (просмотр баланса, мониторинг сессий и т.п);

  4. Возможно java.lang.IllegalArgumentException: Title must not be null or empty. в зависимости от RADIUS-атрибутов, переданных Access-сервером;

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

  6. Вызов внешних скриптов для получения исходящего/входящего трафика клиента (по умолчанию используются счетчики iptables);

  7. Защита WiFi-сети от ARP-спуффинга;

  8. Функция восстановления пароля через почтовый ящик клиента;

  9. Возможность взаимодействия с модулем Карточки, т.е. возможность активации карты и последующей авторизацией по этой карточке в сети WiFi;

  10. Возможность клиента работать с https-версией портала.