Опишу и я свой процесс поднятия INET, а так же попрошу помощи разработчиков, да бы этот INET наконец-то заработал.
Что имеем:
Сервер с BGBilling 5.2, отдельный сервер для Access+Accounting, cisco 7206vxr NPE-G2.
Что хочется:
L2TP на cisco с выдачей белых IP (динамика или статика) без DHCP.
И так, начнём.
1. Настраиваем MQ на сервере BGBilling (пусть слушает на всех интерфейсах):
Код:
<transportConnectors>
<transportConnector name="nio" uri="nio://0.0.0.0:61616"/>
</transportConnectors>
перезагружаем сервисы.
2. Устанавливаем модули card и inet
http://www.bgbilling.ru/v5.2/doc/ch01s11.html создаем экземпляр, называю его VPN и создаю 3 услуги - "Время" (16), "Входящий трафик" (14), "Исходящий трафик" (15).
3. Заходим в Модули->VPN->Трафик->Типы трафика. Там уже есть "Время" (0), создаём "Входящий трафик" (1) и "Исходящий трафик" (2).
Согласно
документации нужно ещё создать
Привязки типов трафика.
Как я понимаю тут нужно создать две привязки "Входящий трафик" и "Исходящий трафик",
объясните пожалуйста что я должен здесь прописать!
4. Далее по документации идут Ресурсы.
Vlan ресурсы мне точно не нужны, ресурсы интерфейсов по идее тоже, поэтому заполняю только ip-ресуры.
Создаю папку VPN (1) и категорию pool1 (2) в ней создаю диапазон:
Диапазон адресов X.X.236.2 - X.X.236.254, Роутер X.X.236.1, Маска - 255.255.255.0, DNS - X.X.X.X, X.X.X.X, период с 01.03.2013.
Правильно ли или кроме диапазона и периода ничего заполнять не нужно?
5. Далее идут "Устройства и ресурсы".
В "Типы устройств" создаю "Access+Accounting VPN"
что нужно заполнять в редакторе типов?
В "Устройства" создаю новое устройство, называю его "Access+Accounting VPN", тип выбираю "Access+Accounting VPN". Прописываю конфигурацию:
Код:
#типы устройств - Nas-ов
radius.deviceTypeIds=1
#типы устройств, являющиеся dhcp relay
dhcp.relay.deviceTypeIds=1
#количество потоков на worker'а
accounting.worker.1.thread.count=1
#тарификатор:
#минимальная сумма трафика, при которой тарифицировать соединение
accounting.worker.1.tariffication.1.minDeltaAmount=0
#пауза между заданиями тарификации
accounting.worker.1.tariffication.1.delay=10
#максимальное количество тарифицируемых соединений за задание
accounting.worker.1.tariffication.1.batchSize=100
#трекер (обработка сессий без наработки):
#пауза между заданиями трекинга
accounting.worker.1.tracking.1.delay=20
#максимальное количество проверенных соединений за задание
accounting.worker.1.tracking.1.batchSize=100
#количество потоков на worker'а
accounting.worker.2.thread.count=1
#сброс в базу трафиков и наработки
#минимальная наработка, при которой сбрасывать соединения в базу
accounting.worker.2.flushing.1.minDeltaAccount=0
#пауза между заданиями сброса в базу
accounting.worker.2.flushing.1.delay=20
#максимальное количество сброшенных соединений в базу за задание
accounting.worker.2.flushing.1.batchSize=500
#количество потоков на worker'а
accounting.worker.3.thread.count=1
#завершатель соединений
#пауза между заданиями
accounting.worker.3.finishing.1.delay=20
#максимальное количество сброшенных соединений в базу за задание
accounting.worker.3.finishing.1.batchSize=500
#таймаут перевода соединения в статус suspended при остутствии радиус пакетов
connection.suspend.timeout=900
#таймаут закрытия соединения при остутствии радиус пакетов (не складывается с connection.suspend.timeout)
connection.close.timeout=900
#таймаут перевода соединения в статус suspended при остутствии радиус пакетов (для сессий с ограниченным доступом)
#connection.disable.suspend.timeout=900
#таймаут закрытия соединения при остутствии радиус пакетов (не складывается с connection.suspend.timeout, для сессий с ограниченным доступом)
#connection.disable.close.timeout=900
Конфигурация просто из доки, нужно
отредактировать...
6. Устанавливаю на отдельной машинке Access:
more /usr/local/BGInetAccess/inet-access.xml
Код:
<?xml version="1.0" encoding="UTF-8"?>
<application context="access">
<!-- Уникальное имя приложения -->
<param name="app.name" value="BGInetAccessVPN"/>
<!-- Уникальный числовой id приложения -->
<param name="app.id" value="1"/>
<!-- Параметры подключения к БД -->
<param name="db.driver" value="com.mysql.jdbc.Driver"/>
<param name="db.url" value="jdbc:mysql://X.X.0.2/bgbilling?useUnicode=true&characterEncoding=Cp1251&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&queryTimeoutKillsConnection=true&connectTimeout=1000"/>
<param name="db.user" value="bill"/>
<param name="db.pswd" value="*****************"/>
<param name="db.validationTimeout" value="10"/>
<!-- Параметры подключения к MQ -->
<param name="mq.url" value="failover:(tcp://X.X.0.2:61616)"/>
<param name="mq.user" value="bill"/>
<param name="mq.pswd" value="***************"/>
<!-- id модуля -->
<param name="moduleId" value="5"/>
<!-- id корневого устройства -->
<param name="rootDeviceId" value="1"/>
<!-- Типы фейковых устройств, являющихся аккаунтинг серверами -->
<param name="accounting.deviceTypeIds" value="1"/>
<!-- Внутренняя переменная приложения, не изменять -->
<param name="commonIdentifierName" value="rootDeviceId"/>
<!-- Параметры сохранения логов данных -->
<!-- Директория, в которую сохранять radius логи -->
<param name="datalog.radius.dir" value="data/radius" />
<!-- Размер блока данных в файле лога, также размер буфера на лог файл -->
<param name="datalog.radius.chunk.size" value="262144" />
<!-- Сжимать radius логи: 0 - не сжимать, 1 - zlib -->
<param name="datalog.radius.compression.type" value="1" />
<!-- Директория, в которую сохранять flow логи -->
<param name="datalog.dhcp.dir" value="data/dhcp" />
<!-- Размер блока данных в файле лога, также размер буфера на лог файл -->
<param name="datalog.dhcp.chunk.size" value="131072" />
<!-- Сжимать flow логи: 0 - не сжимать, 1 - zlib -->
<param name="datalog.dhcp.compression.type" value="1" />
<!-- Создание Access -->
<bean name="access" class="ru.bitel.bgbilling.modules.inet.access.Access" />
<context name="radius">
<!-- Cоздание процессора radius-пакетов -->
<bean name="radiusProcessor" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor"/>
<!-- Служебный ScheduledExecutorService, необходимый для dataLogger -->
<scheduledExecutorService name="hrlydtlggr" corePoolSize="1" />
<!-- Cоздание dataLogger, сохраняющего radius-пакеты на диск (только один экземпляр) -->
<bean name="radiusDataLogger" class="ru.bitel.bgbilling.modules.inet.radius.RadiusHourlyDataLogger">
<param name="scheduledExecutor">hrlydtlggr</param>
</bean>
<!-- Cоздание слушателя radius-пакетов на порту с передачей ему процессора и dataLogger -->
<bean name="radiusListener" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusListener">
<constructor>
<!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех -->
<param name="host" value="X.X.0.2"/>
<!-- Порт, на котором будет открыт сокет -->
<param name="port" value="1812"/>
<!-- Размер буфера приема слушателя -->
<param name="recvBufferSize">512 * 1024</param>
<!-- Рекомендуемый SO_RCVBUF сокета -->
<param name="soRCVBUF"></param>
<!-- Количество потоков-обработчиков -->
<param name="threadCount">10</param>
<!-- Максимальное количество пакетов в очереди на обработку -->
<param name="maxQueueSize">200</param>
<!-- Передача процессора -->
<param name="processor">radiusProcessor</param>
<!-- Режим работы, RadiusListener.Mode.authentication -->
<param name="mode">RadiusListener.Mode.authentication</param>
<!-- Передача dataLogger -->
<param name="dataLogger">radiusDataLogger</param>
</constructor>
</bean>
</context>
<!-- Удаляем DHCP за не надобностью -->
</application>
И Accounting
more /usr/local/BGInetAccounting/inet-accounting.xml
Код:
<?xml version="1.0" encoding="UTF-8"?>
<application context="accounting">
<!-- Уникальное имя приложения -->
<param name="app.name" value="BGInetAccountingVPN"/>
<!-- Уникальный числовой id приложения -->
<param name="app.id" value="2"/>
<!-- Параметры подключения к БД -->
<param name="db.driver" value="com.mysql.jdbc.Driver"/>
<param name="db.url" value="jdbc:mysql://X.X.0.2/bgbilling?useUnicode=true&characterEncoding=Cp1251&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncat
ion=false&queryTimeoutKillsConnection=true&connectTimeout=1000"/>
<param name="db.user" value="bill"/>
<param name="db.pswd" value="*****"/>
<param name="db.validationTimeout" value="10"/>
<!-- Параметры подключения к MQ -->
<param name="mq.url" value="failover:(tcp://X.X.0.2:61616)"/>
<param name="mq.user" value="bill"/>
<param name="mq.pswd" value="************"/>
<!-- id модуля -->
<param name="moduleId" value="5"/>
<!-- id корневого устройства -->
<param name="rootDeviceId" value="1"/>
<!-- Внутренняя переменная приложения, не изменять -->
<param name="commonIdentifierName" value="rootDeviceId"/>
<!-- Параметры сохранения radius-пакетов в файлы логов -->
<!-- Директория, в которую сохранять radius логи -->
<param name="datalog.radius.dir" value="data/radius" />
<!-- Размер блока данных в файле лога, также размер буфера на лог файл -->
<param name="datalog.radius.chunk.size" value="524288" />
<!-- Сжимать radius логи: 0 - не сжимать, 1 - zlib -->
<param name="datalog.radius.compression.type" value="1" />
<!-- Параметры сохранения flow-пакетов в файлы логов -->
<!-- Директория, в которую сохранять flow логи -->
<param name="datalog.flow.dir" value="data/flow" />
<!-- Размер блока данных в файле лога, также размер буфера на лог файл и поток слушателя -->
<param name="datalog.flow.chunk.size" value="524288" />
<!-- Сжимать flow логи: 0 - не сжимать, 1 - zlib -->
<param name="datalog.flow.compression.type" value="1" />
<!-- Создание Accounting -->
<bean name="accounting" class="ru.bitel.bgbilling.modules.inet.accounting.Accounting"/>
<context name="radius">
<!-- Cоздание процессора radius-пакетов -->
<bean name="radiusProcessor" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor"/>
<!-- Служебный ScheduledExecutorService, необходимый для dataLogger -->
<scheduledExecutorService name="hrlydtlggr" corePoolSize="1"/>
<!-- Cоздание dataLogger, сохраняющего radius-пакеты на диск (только один экземпляр) -->
<bean name="radiusDataLogger" class="ru.bitel.bgbilling.modules.inet.radius.RadiusHourlyDataLogger">
<param name="scheduledExecutor">hrlydtlggr</param>
</bean>
<!-- Cоздание слушателя radius-пакетов на порту с передачей ему процессора и dataLogger -->
<bean name="radiusListener" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusListener">
<constructor>
<!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех -->
<param name="host" value="X.X.0.2"/>
<!-- Порт, на котором будет открыт сокет -->
<param name="port" value="1813"/>
<!-- Размер буфера приема слушателя -->
<param name="recvBufferSize">1 * 1024 * 1024</param>
<!-- Рекомендуемый SO_RCVBUF сокета -->
<param name="soRCVBUF"></param>
<!-- Количество потоков-обработчиков -->
<param name="threadCount">10</param>
<!-- Максимальное количество пакетов в очереди на обработку -->
<param name="maxQueueSize">200</param>
<!-- Передача процессора -->
<param name="processor">radiusProcessor</param>
<!-- Режим работы, RadiusListener.Mode.accounting -->
<param name="mode">RadiusListener.Mode.accounting</param>
<!-- Передача setup -->
<param name="setup">setup</param>
<!-- Передача dataLogger -->
<param name="dataLogger">radiusDataLogger</param>
</constructor>
</bean>
</context>
<!-- Cоздание процессора flow-пакетов -->
<context name="collector">
<!-- Служебный ScheduledExecutorService, необходимый для dataLogger -->
<scheduledExecutorService name="hrlydtlggr" corePoolSize="1"/>
<!-- Cоздание dataLogger, сохраняющего flow-пакеты на диск (только один экземпляр) -->
<bean name="flowDataLogger" class="ru.bitel.bgbilling.modules.inet.collector.IPHourlyDataLogger">
<param name="scheduledExecutor">hrlydtlggr</param>
</bean>
<!-- Cоздание слушателя flow-пакетов на порту с передачей ему dataLogger -->
<bean name="flowListener" class="ru.bitel.bgbilling.modules.inet.collector.InetFlowListener">
<constructor factoryMethod="newInstance">
<!-- Тип слушателя, netflow, netflow9 или sflow -->
<param name="type" value="netflow"/>
<!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех -->
<param name="host" value="X.X.0.2"/>
<!-- Порт, на котором будет открыт сокет -->
<param name="port" value="2001"/>
<!-- Размер буфера приема слушателя -->
<param name="recvBufferSize">4 * 1024 * 1024</param>
<!-- Рекомендуемый SO_RCVBUF сокета -->
<param name="soRCVBUF">512 * 1024</param>
<!-- Количество потоков-обработчиков -->
<param name="threadCount" value="10"/>
<!-- id устройств-источников, если на данном порту нужно обрабатывать данные только у определенных источников -->
<param name="agentDeviceIds" value=""/>
<!-- Передача dataLogger -->
<param name="dataLogger">flowDataLogger</param>
</constructor>
</bean>
<!--
<bean name="flowListener" class="ru.bitel.bgbilling.modules.inet.collector.InetFlowListener">
<constructor factoryMethod="newInstance">
<param name="type" value="netflow9"/>
<param name="host" value=""/>
<param name="port" value="9367"/>
<param name="recvBufferSize">4 * 1024 * 1024</param>
<param name="soRCVBUF">512 * 1024</param>
<param name="threadCount" value="8"/>
<param name="agentDeviceIds" value="4"/>
<param name="dataLogger">flowDataLogger</param>
</constructor>
</bean>
<bean name="flowListener" class="ru.bitel.bgbilling.modules.inet.collector.InetFlowListener">
<constructor factoryMethod="newInstance">
<param name="type" value="netflow"/>
<param name="host" value=""/>
<param name="port" value="9368"/>
<param name="recvBufferSize">4 * 1024 * 1024</param>
<param name="soRCVBUF">512 * 1024</param>
<param name="threadCount" value="8"/>
<param name="agentDeviceIds" value="20"/>
<param name="dataLogger">flowDataLogger</param>
</constructor>
</bean>
-->
<context name="detail">
<!-- Cоздание обработчика flow детализации -->
<bean name="detailWorker" class="ru.bitel.bgbilling.modules.inet.accounting.detail.InetDetailWorker"/>
</context>
</context>
</application>
Запускаю на обоих update.sh.
Так как flow не нужен, нужно будет удалить.Подскажите что я сделал не так и куда двигаться дальше?