Модуль IPN

В настоящее время для данного модуля разработана более современная замена - модуль Inet. Модуль IPN оставлен для совместимости и постепенно будет удалён.

Назначение модуля

Модуль IPN предназначен для обсчёта постоянных подключений по протоколу IP путём сбора и анализа первичных логов. Первичные логи собираются либо напрямую коллектором BGIPNNetFlowCollector, либо сторонней программой, которая "подсовывает" бинарные логи в коллектор, оставляя ему лишь функцию обработки.

Также модуль может осуществлять автоматическую блокировку пользователей, посылая управляющие команды на шлюз пользователя. В данный момент модуль поддерживает следующие типы шлюзов:

  • FreeBSD роутер с файрволом ipfw;

  • Linux-роутер с файрволом iptables и системой контроля трафика iproute2;

  • DLINK 35xx, 38xx с поддержкой DHCP Options 82;

  • любой управляемый коммутатор в режиме простой блокировки порта;

  • CISCO как VPN-шлюз с RADIUS-авторизацией (предоставление виртуальных сетей корпоративным клиентам);

  • Mikrotik RouterOS;

  • Любое ваше оборудование, которое можно поддержать с помощью реализации шлюза на встроенном языке BeanShell.

Идентификатором клиента в системе выступает IP-адрес, либо интерфейс подключения.

Настройка модуля

После инсталляции модуля, создания его экземпляра в Редакторе модулей и услуг необходимо завести услуги, определяющие типы трафика в модуле. Например: IPN внешний входящий, IPN внешний исходящий, IPN локальный входящий, IPN локальный исходящий.

images/download/attachments/43385996/x_209.gif

На вкладке Конфигурация модуля установите конфигурацию по умолчанию.

Конфигурация
# Аактивные и приостановленные статусы договора
contract.status.active.codes=0
contract.status.suspend.codes=3,4
 
web.menuItem1=IP-статистика (IPN)
web.menuItem2=Управление шлюзом (IPN)
web.menu.gateRules=Управление правилами шлюзов(IPN)
# Статус шлюза клиента после оплаты и разблокирования 0 - открыт, 1 - закрыт
status.after.unlock=1
# Коды услуг, не затрагиваемых при перерасчёте, например, если услуга используется для занесения наработки скриптом
#service.recalc.ignore=
# Статус шлюза по умолчанию (0 - открыт, 1 - закрыт, 2 - заблокирован, 3 - удалён, 4 - жёсткая блокировка)
default.contract.status=0
# Вывод только разрешенных услуг в Web-статистике. 0 - все услуги, 1 - только разрешенные услуги.
web.service.allow=1
# Количество выводимых ошибок в периодических процессах
max.periodic.errors=30
#----------------------------------------
# Выборочное отключение проверки закрытого периода
# Обсчет максимальных трафиков
#closed.date.disabled.ActionMaxRecalculate=1
# Обсчет логов
#closed.date.disabled.ActionRecalculate=1
# Изменение адресов
#closed.date.disabled.ActionUpdateContractAddress=1
#----------------------------------------
# Шаблон имени файла детализации за период
#{dd1}{MM1}{yyyy1} - день, месяц, год начала периода, {dd2}.{MM2}.{yyyy2}-день, месяц, год конца периода, {dd2}.{MM2}.{yyyy2} день, месяц, год даты заказа выписки.
#{ip} - диапазон сети или ip-адрес
#{contract_title} - номер договора
#{user} - имя оператора, заказавшего выписку
#file.detail.template={cid}_{dd1}.{MM1}.{yyyy1}_{dd2}.{MM2}.{yyyy2}_{dd_now}.{MM_now}.{yyyy_now}

Базовые понятия и алгоритм работы модуля

Все базовые компоненты модуля изображены на схеме.

images/download/attachments/43385996/ipn_struct.png

Клиент получает доступ в сеть, проходя через машину - Шлюз, ограничивающую доступ и машину - Источник. В некоторых случаях они могут быть совмещены на одном устройстве.

Функция источника - предоставление информации о трафике абонента посредством передачи NetFlow-потока на коллектор модуля IPN (BGIPNNetFlowCollector). Функция шлюза - получение от сервера управляющих команд, закрывающих или открывающих доступ пользователя к сети и их выполнение.

Обработка входных данных разделена на несколько этапов (описание упрощено, более подробно каждый этап рассмотрен далее):

  1. Коллектор принимает поток логов и сохраняет их в бинарные файлы определённого формата с разбивкой по часам, в логах содержится сырая информация о том с какого IP-адреса на какой какое количество байт было передано;

  2. При переходе часа отдельный поток коллектора обрабатывает файлы, помещая в БД агрегированную наработку по часам, привязывая IP-адреса к договорам и разделяя их по видам услуг;

  3. По расписанию планировщик тарифицирует агрегированную наработку, используя тарифные планы абонентов и начисляя наработку на баланс договоров. Переобсчёт производится каждый раз за весь месяц.

Сервер биллинга, планировщик и коллектор - отдельные процессы. Связь между ними осуществляется исключительно через БД. Так, сервер может передать через БД задание на переобработку логов коллектору, задание на переобсчёт логов планировщику заданий. Коллектор передаёт через базу серверу информацию по статусу часовых логов (загружен/обработан/отсутсвует) для отображения в менеджере источников.