Готовые образы виртуальных машин
Вы можете скачать и развернуть у себя готовый образ виртуальной машины с предустановленным биллингом для первого знакомства, демонстрации и/или тестирования. В данных образах представлен полнофункциональный BGBilling с тестовой лицензией, ограничение лишь в максимальном количестве используемых договоров.
Однако в образах изначально установлены и настроены лишь некоторые модули биллинга. После развертывания Вы легко можете установить дополнительные модули и плагины.
Развертывание
Удостоверьтесь, что на машине, где Вы будете развертывать систему в BIOS/EFI разрешена виртуализация, иначе скорость работы виртуальной машины может быть неудовлетворительной.
Установите на машину-хост VirtualBox (для Windows/OS X/Linux), VMware (для Windows/Linux) или qemu-kvm, qemu-system-x86-64 и virt-manager (для Linux) .
Вы можете выбрать одну из двух операционных систем, на которых предустановлен биллинг: CentOS 7.5 или Debian 9. Скачайте образ диска для выбранной виртуальной машины: .ovf+.vmdk для VirtualBox/VMware или .qcow для qemu-kvm, и для выбранной ОС: centos-billing.ovf + centos-billing-disk001.vmdk (.qcow) или debian-billing.ovf + debian-billing-disk001.vmdk (.qcow).
Создайте новую виртуальную машину, выбрав подходящий тип и версию ОС, необходимый минимальный оперативной объем памяти 1.5GB. В VirtualBox выберите Импорт конфигураций и укажите .ovf-файл, в virt-manager укажите существующий образ диска: centos-billing-disk001.qcow или debian-billing-disk001.qcow. Если импортируете .ovf-файл, то перегенерируйте MAC-адрес.
Для виртуальном машины часы должны быть в системе UTC (т.к. гостевая система - Linux).
Рекомендуемый виртуальный контроллер носителя SATA, именно с этим типом контроллера произведена установка ОС и сборка образа.
Рекомендуемая конфигурация сети - сетевой мост - таким образом виртуальная машина будет представлена в Вашей внутренней сети как отдельный хост. Такой режим удобен для дальнейшего тестирования. Если с созданием сетевого моста возникли сложности, Вы можете указать тип конфигурации NAT и при необходимости настроить проброс портов или же настроить маршрутизацию.
Удалите/отключите звуковое/аудио устройство.
Запустите виртуальную машину.
Залогиньтесь под пользователем bgbilling с паролем bgbilling. Для получения прав суперпользователя выполните sudo -i и введите пароль bgbilling (на CentOS можно выполнить su и ввести пароль bgbilling).
В директории /opt должны быть папки bgbilling, java и другие.
Выполните:
[root
@bgserver
~]
# ip address show
или для Debian можно так:
[root
@debian
~]
# ifconfig
чтобы узнать текущий IP-адрес машины, далее x.x.x.x.
На порту 80, открытом для всех, запущен nginx, который проксирует запросы на 127.0.0.1:8080, разрешая запросы только в личный кабинет абонента, запрещая все остальные. Статические файлы (css, png, js и т.п.) в текущей настройке nginx отдает напрямую (в конфигурации также представлен пример полного проксирования через 127.0.0.1:8080).
Приложения биллинга расположены в директории /opt. База данных MySQL расположена в стандартной директории /var/lib/mysql.
Т.к. в виртуальной машине возникали проблемы с /dev/random (отрабатывало очень долго), в файле /opt/java/jdk8/jre/lib/security/java.security изменено значение параметра securerandom.source c file:/dev/random на file:/dev/urandom (менее безопасный генератор случайных значений).
Hyper-V
При необходимости можно сконвертировать образ в другой тип с помощью qemu-img (данное приложение есть как под Linux, так и под Windows):
qemu-img.exe convert centos-billing-disk001.vmdk -
O
vhdx -o subformat=dynamic centos-billing-disk001.vhdx
Далее нужно создать виртуальную машину и подключить диск. Однако, так как образы изначально предназначены для VirtualBox и qemu-kvm, то система не загрузится в обычном режиме - поэтому необходимо выполнить дополнительные действия:
Загрузиться в rescue-ядро.
Выполнить:
sudo dracut -f /boot/initramfs-
3
.
10
.
0
-
514
.
26
.
2
.e17.x86_64.img
3
.
10
.
0
-
514
.
26
.
2
.e17.x86_64
sudo systemctl reboot
Особенности образа CentOS 7.5
На данном образе разрешено логиниться под пользователем root (!), но запрещено для подключений по ssh.
В качестве фаервола используется firewalld, служба отключена.
В качестве менеджера служб - systemd.
Описания служб находится в /lib/systemd/system.
MySQL 5.7 установлен из репозитария MySQL.
Особенности образа Debian 9
В качестве фаервола используется iptables, правила не заданы.
В качестве менеджера служб - systemd.
Описания служб находится в /lib/systemd/system.
MySQL 5.7 установлен из репозитария MySQL.
Службы
При загрузке системы включены сервисы mysql.service (MariaDB), activemq.service (ActiveMQ), bgbilling.service (BGBillingServer - сервер биллинга), bgscheduler.service (BGScheduler - планировщик заданий) и wildfly.service (личный кабинет).
Пользователь root MySQL доступен у суперпользователя (sudo -i или также su у CentOS).
Фаерволл
Если Вы хотите использовать образ как основу для рабочего сервера, то необходимо настроить фаерволл.
Debian
Данные сценарии предложены для примера. Вероятно, что Вам необходимо будет отредактировать их под свои нужды.
Для IPv4 создайте sh-файл (например, iptables.sh) и выполните его:
#!/bin/bash
iptables -
F
iptables -t nat -
F
iptables -
X
iptables -
P
FORWARD
DROP
iptables -
P
INPUT
DROP
iptables -
P
OUTPUT
ACCEPT
#SSH
iptables -
A
INPUT
-s
192
.
168
.
0
.
0
/
16
-p tcp --dport
22
-j
ACCEPT
#HTTP
iptables -
A
INPUT
-s
192
.
168
.
0
.
0
/
16
-p tcp --dport
8080
-j
ACCEPT
iptables -
A
INPUT
-s
192
.
168
.
0
.
0
/
16
-p tcp --dport
8085
-j
ACCEPT
iptables -
A
INPUT
-s
192
.
168
.
0
.
0
/
16
-p tcp --dport
9990
-j
ACCEPT
iptables -
A
INPUT
-p tcp --dport
80
-j
ACCEPT
#loopback
iptables -
A
INPUT
-i lo -p all -j
ACCEPT
Для IPv6 создайте sh-файл (например, ip6tables.sh) и выполните его:
#!/bin/bash
ip6tables -
F
ip6tables -
X
ip6tables -
A
INPUT
-i lo -j
ACCEPT
ip6tables -
A
OUTPUT
-o lo -j
ACCEPT
ip6tables -
A
OUTPUT
-o eth0 -j
ACCEPT
ip6tables -
A
INPUT
-i eth0 -m state --state
ESTABLISHED
,
RELATED
-j
ACCEPT
ip6tables -
A
INPUT
-m rt --rt-type
0
-j
DROP
ip6tables -
A
FORWARD
-m rt --rt-type
0
-j
DROP
ip6tables -
A
OUTPUT
-m rt --rt-type
0
-j
DROP
ip6tables -
A
INPUT
-s fe80::/
10
-j
ACCEPT
ip6tables -
A
OUTPUT
-s fe80::/
10
-j
ACCEPT
ip6tables -
A
INPUT
-i eth0 -m tcp -p tcp --dport
80
-j
ACCEPT
ip6tables -
I
INPUT
-p icmpv6 -j
ACCEPT
ip6tables -
I
OUTPUT
-p icmpv6 -j
ACCEPT
ip6tables -
I
FORWARD
-p icmpv6 -j
ACCEPT
ip6tables -
P
INPUT
DROP
ip6tables -
P
FORWARD
DROP
ip6tables -
P
OUTPUT
DROP
CentOS
Самый простой способ изменить внутреннюю подсеть, для которой разрешены порты 22 и 8080 - это создать/отредактировать файл /etc/firewalld/zones/internal.xml:
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
zone
>
<
short
>Internal</
short
>
<
description
>For use on internal networks. You mostly trust the other computers on the networks to not harm your computer. Only
<
source
address
=
"192.168.0.0/16"
/>
<
service
name
=
"ipp-client"
/>
<
service
name
=
"mdns"
/>
<
service
name
=
"dhcpv6-client"
/>
<
service
name
=
"samba-client"
/>
<
service
name
=
"ssh"
/>
<
port
protocol
=
"tcp"
port
=
"8080"
/>
<
port
protocol
=
"tcp"
port
=
"8085"
/>
</
zone
>
В /etc/firewalld/zones/public.xml соответственно добавить порт 80:
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
zone
>
...
<
port
protocol
=
"tcp"
port
=
"80"
/>
</
zone
>
И затем вызвать:
[root
@bgserver
~]# firewall-cmd --reload
Обзор
По URL http://x.x.x.x должен открыться личный кабинет абонента (происходит редирект на http://x.x.x.x/bgbilling/webexecuter). Если фаервол настроен корректно, то ЛК также должен быть доступен по URL http://x.x.x.x:8080/bgbilling/webexecuter, т.е. на порту 8080. Параметры входа для личного кабинета - логин: 10000010 (номер тестового договора) и пароль: 123456.
Скачайте и установите клиент биллинга, укажите URL в client.properties http://x.x.x.x:8080/bgbilling/executer и запустите его. В окне логина установите галочку "загружать обновления с этого сервера" и нажмите ОК. В первый раз клиент биллинга загрузит библиотеки модулей и попросит перезапустить его.
Или же на машине, где будет запускаться клиент биллинга в контрольной панели Java на вкладке безопасность добавьте в список исключений http://x.x.x.x/bgbilling/ и откройте в браузере URL http://x.x.x.x:8080/bgbilling/client/bgclient.jnlp - клиент биллинга должен запуститься через Java Web Start.
При работе некоторых антивирусов некоторые вкладки могут очень долго открываться. Это происходит, когда антивирус пытается проверять интернет-трафик, нарушая при этом работу SOAP-протокола Web-сервисов, через который клиент биллинга обращается к серверу биллинга. Если такое странное поведение наблюдается - рекомендуем добавить IP-адрес сервера биллинга в исключения в настройках Вашего антивируса.
Например, для ESET NOD32 необходимо открыть расширенные настройки ESET Smart Security, выбрать раздел "Интернет и электронная почта" - "Фильтрация протоколов" - "Исключенные IP адреса" и добавить в список адрес сервера.
Рекомендуется включить в конфигурации биллинга параметры:
# Логирование действий в журнале событий, 0 - не логировать
bgsecure.log=
1
# Логирование Web-запросов пользователя (Web-интерфейс)
webquery.log=
1
Модуль Inet
Для обработки RADIUS и/или DHCP-запросов может потребоваться изменение настроек фаервола. В "особенностях образа" описано как можно открыть определенные порты.
В модуле Inet данного образа уже настроено несколько примеров различных распространенных схем.
Access+Accounting: IPoE
Сервера приложений InetAccess и InetAccounting расположены в директории /opt/bgbilling/, сервисы systemd: inet-access и inet-accounting. Для данной ветки устройств с небольшими изменениями конфигурации возможно запустить схемы IPoE IP Subscriber, SmartEdge CLIPS. DHCP-запросы могут обрабатываться как сторонним сервером (биллинг не контролирует выдачу IP-адресов), так и InetAccess (биллинг контролирует выдачу IP-адресов, можно выдавать динамические или статические, белые или серые адреса в зависимости от настроек, баланса или статуса договора), причем в двух режимах - когда ASR/SE инициирует сессию по DHCP-запросу ( DHCP DISCOVER packet ), и когда DHCP-запросы приходят с коммутаторов, а ASR/SE инициирует сессию по IP-пакету ( Unclassified source MAC address, в Access-Request приходит User-Name="IP-адрес_абонента", в биллинге отображаются две сессии - DHCP и IP Subscriber).
Поддерживается тарификация и управление ISG/SE-сервисами, их переключение в реальном времени в зависимости от необходимой скорости соединения абонента или других параметров.
Access+Accounting: ISGServiceAccess
Данная ветка с отдельным приложением InetAccess предназначена для выдачи описания ISG-сервисов для Cisco по RADIUS. См. также http://wiki.bitel.ru/index.php/Справочник Cisco-ISG сервисов.
Access+Accounting
SNMP Agent - сбор трафика по SNMP, тарификация по статическому интерфейсу.
Flow Agent - сбор трафика по Netflow/sFlow, тарификация по статическому адресу или подсети.
MPD - PPPoE/PPtP с управлением через RADIUS/CoA, возможна тарификация по Netflow/sFlow с помощью Flow Agent (привязка трафика по адресу сессии в реальном времени).
FreeBSD - шейпер, с управлением по SSH в реальном времени для активных сессий устройств, расположенных внутри этой ветки (в образе настройка на данный момент пока отсутствует, ветка добавлена для примера).
Коммутаторы - предоставление доступа по схеме DHCP Option 82, выдача статических или динамических, белых или серых адресов в зависимости от статуса, баланса и др. параметров договора или настроек аккаунта. Возможно управление через telnet/SSH/SNMP.
Cisco ASR: asr-bras - PPPoE/PPtP с управлением через RADIUS/CoA с поддержкой тарификации и управления ISG/SE-сервисами, а также тарификацией по Netflow.
Возможны многие другие схемы предоставления и управления доступом в интернет. Если возникли проблемы с настройкой Вы всегда можете обратиться на бесплатный форум, в helpdesk или задать вопрос в комментариях к данной статье.
Новый личный кабинет
В образ также включен новый личный кабинет, он является отдельным приложением - сервис wildfly (JBoss). Для его работы BGBillingServer (bgbilling.service) также должен быть запущен.
[root
@bgserver
~]# systemctl start wildfly.service
После запуска wildfly по пути http://x.x.x.x/my/ откроется новый личный кабинет. Параметры входа для личного кабинета - логин: 10000010 (номер тестового договора) и пароль: 123456.