Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Модуль для подсчета трафика в локальной сети.

Table of Contents

Возможности

  • Позволяет разделять трафик на 65535 классов.

  • Возможно разделение трафика по IP-адресам или по портам.

  • Блокировка клиентов с отрицательным депозитом.

  • Авторизация клиентов через Web-интерфейс или по 802.1х

  • Club Monitor - упрощённый мониторинг для компьютерного клуба. Выдача карточек доступа к сети. Печать чеков.


Схема построения сети

Схема авторизации 

Image RemovedImage Added

Как работает

Модуль получает данные о трафике от внешних коллекторов (trafd, ipcad, Cisco Netflow). Получив данные от коллектора, система просматривает таблицу активных сессий (Monitoring/ Dialup Internet / VPN/) и для них проводит подсчет трафика в зависимости от тарифного плана клиента. Модуль использует тарифные планы, описанные в модуле Dv (Dialup/VPN).   Если данные о трафике не принадлежат ни одной из активных сессий, то они складываются в файл /usr/abills/var/log/ipn/unknown_ip.log при файл в журнал неизвестных сессий (Отчёт>Интернет+>Неизвестный IPs)  при включённой опции UNKNOWN_IP_LOG.
Для получения данных и их подсчёта и складывания в базу используются следующие программы:

  • trafdstats - для получения данных от trafd и последующей их обработкой traffic2sql

  • traffic2sql - для получения данных от других коллекторов (Ipcad, flowtools).

Система периодически запускает их из cron.

Авторизация пользователей: при открытии страницы браузером пользователи автоматически попадают на страницу авторизации, и, только после успешной авторизации, могут пользоваться интернетом.


Настройка Abills

Info

В качестве примера используется машина под управлением FreeBSD


Code Block
languagebash
cd /usr/abills/libexec/
ln -s ../Abills/modules/IpnInternet/trafdstats trafdstats
ln -s ../Abills/modules/IpnInternet/traffic2sql traffic2sql

Создать таблицы в базе.

Code Block
languagebash
 mysql --default-character-set=utf8 -D abills < db/Ipn.sql
Code Block
languagebash
titleabills/libexec/config.pl
@MODULES = (
          'Ipn'
          );

Опции:

$conf{
IPN
INTERNET_TRAFFIC_DETAIL}=1;Вести детальную статистику на сервере где traffic2sql работает
$conf{
IPN
INTERNET_
DETAIL
IPOE_
MIN
DEPOSIT_
SIZE
OPERATION}=1024;Задаёт минимальный размер пакета который будет попадать в детализацию. Данная опция предохраняет от замусоривания
$conf{IPN_DAILY_LOG_ROTATE}=1;Ротация детализации и логов статистики каждый день. При включённой опции не работает подсчёт предоплаченного трафика
$conf{
IPN
INTERNET_
STATIC_IP}=1;Использовать только статические адреса. 
Система проверяет статические адреса всех имеющихся клиентов и присваивает им трафик. Исключая таким образом потери из за переподключений при использовании динамических адресов авторизации. При данной схеме работы трафик в журнал Monitoring / Online не попадает, он складывается непосредственно в статистику пользователя$conf{IPN_
IPOE_FILTER}=
«
'/usr/abills/libexec/
ipn
ipoe_filter.
sh»
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
INTERNET_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.

Настройка сервера доступа

Настройка>Сервер доступа

Type
ipcad
ipoe


Настройка>Сервер доступа>IP POOLs
Нужно внести пул адресов, с которых можно авторизоваться.

Тарифные планы

Модуль использует тарифную логику модуля Dv модуля (Internet). 

  • Заводим классы трафика Настройка>Интернет+>Тарифные планы>Классы трафика. Глобальный класс трафика должен иметь номер 0.

  • Заводим тарифные планы в Настройка>Интернет+>Тарифные планы.

  • В тарифном плане выбираем Intervals. Заводим интервал времени. После заведения интервала времени заводим тарификацию трафика. В тарификации трафика обязательно указывать сети в противном случае модуль не будет вести подсчёт трафика.

Активизация пользователя администратором

Клиенты>Логины>Информация>Сервисы> IP Net

IP:IP адрес клиентаNAS:Сервер доступа. Автоматически выбирается из списка, если IP адрес клиента находится в пуле адресов NAS