Модуль для подсчета трафика в локальной сети.
Позволяет разделять трафик на 65535 классов.
Возможно разделение трафика по IP-адресам или по портам.
Блокировка клиентов с отрицательным депозитом.
Авторизация клиентов через Web-интерфейс или по 802.1х
Club Monitor - упрощённый мониторинг для компьютерного клуба. Выдача карточек доступа к сети. Печать чеков.
Модуль получает данные о трафике от внешних коллекторов (trafd, ipcad, Cisco Netflow). Получив данные от коллектора, система просматривает таблицу активных сессий (Monitoring/ Dialup / VPN/) и для них проводит подсчет трафика в зависимости от тарифного плана клиента. Модуль использует тарифные планы, описанные в модуле Dv (Dialup/VPN). Если данные о трафике не принадлежат ни одной из активных сессий, то они складываются в файл /usr/abills/var/log/ipn/unknown_ip.log при включённой опции UNKNOWN_IP_LOG.
Для получения данных и их подсчёта и складывания в базу используются следующие программы:
trafdstats - для получения данных от trafd и последующей их обработкой traffic2sql
traffic2sql - для получения данных от других коллекторов (Ipcad, flowtools).
Система периодически запускает их из cron.
Авторизация пользователей: при открытии страницы браузером пользователи автоматически попадают на страницу авторизации, и, только после успешной авторизации, могут пользоваться интернетом.
В качестве примера используется машина под управлением FreeBSD |
cd /usr/abills/libexec/ ln -s ../Abills/modules/Ipn/trafdstats trafdstats ln -s ../Abills/modules/Ipn/traffic2sql traffic2sql |
Создать таблицы в базе.
mysql --default-character-set=utf8 -D abills < db/Ipn.sql |
@MODULES = ( 'Ipn' ); |
Опции:
$conf{IPN_DETAIL}=1; | Вести детальную статистику на сервере где traffic2sql работает |
---|---|
$conf{IPN_DETAIL_MIN_SIZE}=1024; | Задаёт минимальный размер пакета который будет попадать в детализацию. Данная опция предохраняет от замусоривания |
$conf{IPN_DAILY_LOG_ROTATE}=1; | Ротация детализации и логов статистики каждый день. При включённой опции не работает подсчёт предоплаченного трафика |
$conf{IPN_STATIC_IP}=1; | Использовать только статические адреса. Система проверяет статические адреса всех имеющихся клиентов и присваивает им трафик. Исключая таким образом потери из за переподключений при использовании динамических адресов авторизации. При данной схеме работы трафик в журнал Monitoring / Online не попадает, он складывается непосредственно в статистику пользователя |
$conf{IPN_FILTER}=«/usr/abills/libexec/ipn_filter.sh»; | Полный путь к программе, которая запустится, если у клиента заполнено поле Filter ID. Данная программа запускается после команды, прописанной в $conf{IPN_FW_START_RULE} и $conf{IPN_FW_STOP_RULE}. Программе передаются следующие аргументы %STATUS (ONLINE_ENABLE,ONLINE_DISABLE,HANGUP) %LOGIN %IP %FILTER_ID %PORT %UID в виде аргументов. Также передаются переменные окружения: NAS_IP_ADDRESS NAS_MNG_USER NAS_MNG_IP_PORT Не забывайте, что при ручной активации пользователя программа может выполняться с правами веб-сервера, поэтому лучше её запускать через sudo. Пример: abills/misc/ipn_filter.sh |
$conf{IPN_DETAIL_CLEAN_PERIOD}=30; | Чистить лог детализации каждых 30 дней |
$conf{IPN_USERMENU}=1; | Включить в пользовательском интерфейсе меню открытия доступа |
$conf{IPN_CLUBMONITOR}=1; | Включить клуб монитор. Упрощённый интерфейс мониторинга активных сессий и меню создания карточек доступа |
$conf{IPN_DAILY_RESTART}=1; | Рестартовать сессии каждый день |
$conf{IPN_DEPOSIT_OPERATION}=1; | Снимать деньги модулем IPN. При включении этой опции деньги со счёта снимаются в реальном времени после каждого обновления статистики. |
$conf{IPN_FW_FIRST_RULE}=20000; | Номер первого правила в брандмауэре |
$conf{IPN_FW_START_RULE}=«« | Правила для открытия доступа. Программе всегда передаются следующие параметры: %IP - IP адрес %MASK - битная маска (32,24) %NUM - номер правила ($conf{IPN_FW_FIRST_RULE} + (PORT или последняя цифра IP адреса) ) %LOGIN - Логин Примеры: FreeBSD »/usr/local/bin/sudo /sbin/ipfw -q delete %NUM; /usr/local/bin/sudo /sbin/ipfw -q add %NUM allow ip from %IP to any; /usr/local/bin/sudo /sbin/ipfw -q add %NUM allow ip from any to %IP»; Пример с шейпером $conf{IPN_FW_START_RULE}=«/usr/local/bin/sudo /usr/abills/libexec/linkupdown ipn up fxp1 %LOGIN %IP». ' > /dev/null 2>&1;'. «/usr/local/bin/sudo /sbin/ipfw -q add %NUM allow ip from %IP to any; /usr/local/bin/sudo /sbin/ipfw -q add %NUM allow ip from any to %IP»; Linux «/usr/bin/sudo /sbin/iptables -t nat -I PREROUTING 1 -s %IP/%MASK -j ACCEPT; /usr/bin/sudo iptables -I FORWARD 1 -s %IP -d 0/0 -j ACCEPT; /usr/bin/sudo iptables -I FORWARD 1 -s 0/0 -d %IP -j ACCEPT»; |
$conf{IPN_FW_STOP_RULE}=«« | Правила для закрытия доступа. FreeBSD »/usr/local/bin/sudo /sbin/ipfw -q delete %NUM; /usr/local/bin/sudo /sbin/ipfw -q add %NUM deny ip from %IP to any; /usr/local/bin/sudo /sbin/ipfw -q add %NUM deny ip from any to %IP»; Пример с шейпером $conf{IPN_FW_STOP_RULE}=«/usr/local/bin/sudo /usr/abills/libexec/linkupdown ipn down fxp1 %LOGIN %IP». ' > /dev/null 2>&1;'. «/usr/local/bin/sudo /sbin/ipfw -q delete %NUM»; Linux «/usr/bin/sudo /sbin/iptables -t nat -D PREROUTING -s %IP/%MASK -j ACCEPT; /usr/bin/sudo iptables -D FORWARD -s 0/0 -d %IP -j ACCEPT; /usr/bin/sudo iptables -D FORWARD -s %IP -d 0/0 -j ACCEPT»; |
$conf{IPN_FW_RULE_UID}=1; | Использовать UID (ID пользователя в системе) как префикс для создания правил разрешения доступа. Правила создаются следующим образом $conf{IPN_FW_FIRST_RULE} + UID. По умолчанию система в качестве префикса использует 4 байт IP адреса: для 192.168.10.23 - $conf{IPN_FW_FIRST_RULE} + 23. |