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

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

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

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

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

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

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

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

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

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

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

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

1. Режим работы NAS в режимах UPDATE и CHECKER (dialup.workmode);

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

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

4. Возможно ограничение скорости (Шейпинг) каналов в зависимости от атрибутов, переданных RADIUS-сервером;

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

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

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

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

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