Ubilling — реализация мощного, гибкого и интуитивно понятного web-интерфейса для stargazer.Мы стараемся создать продукт удовлетворяющий любые требования к АСР провайдеров любого масштаба. Сколько это стоит? Да нисколько, устанавливайте и пользуйтесь на здоровье — для хороших людей ничего не жалко ;)» (взято с официального сайта 🙂 )
Документация - http://wiki.ubilling.net.ua/doku.php
Документация (архив. вдруг кому-то нужно…) - Debian 8
УСТАНОВКА UBILLING на DEBIAN 10 Buster
Stargazer как-то странно себя ведет на mariadb, поэтому будем устанавливать Mysql версии 5.6 на Debian 10
eth0-глобал 192.168.1.100
eth1— внутрь 192.168.100.1
apt-get update apt-get upgrade apt-get install gnupg net-tools mc sudo wget https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb dpkg -i mysql-apt-config_0.8.9-1_all.deb
1.Выберем Debian stretch - Buster'a -нет
2.Нас интересует версия 5.6
apt-get update Ошибка: Следующие подписи неверны: EXPKEYSIG 8C718D3B5072E1F5 MySQL Release Engineering <mysql-build@oss.oracle.com> sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 8C718D3B5072E1F5 apt-get update
apt-get install mysql-community-server mysql-community-client libmysqlclient-dev \
apache2 expat libexpat1-dev php-cli libapache2-mod-php php-mysql isc-dhcp-server \
build-essential bind9 bandwidthd softflowd libxmlrpc-c++8-dev php-mbstring php-bcmath \
php-curl php-gd php-snmp php-soap php-xml php-zip php-imap php-json php-tokenizer php-memcached
0. Вопрос Mysql - задаем пароль root
1. Вопрос BandwidthD - Прослушиваемый интерфейс - eth1
2. Вопрос BandwidthD - протоколируемые сети 192.168.100.0/24
3. ошибка запуска dhcp-server. сразу исправим:
mcedit /etc/default/isc-dhcp-server # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACESv4="eth1" #- указываем на каком интерфейсе будем раздавать адреса. #INTERFACESv6=""
При перезапуске он опять ругнется на то, что в конфигах ничего не прописано к этому мы вернемся чуть позже. Вообще Ubilling генерирует свои конфиги.
Настроим php:
mcedit /etc/php/7.3/apache2/php.ini short_open_tag=on systemctl reload apache2.service
Настроим bandwidthd:
Раскомментируем и поправим следующие директивы:
mcedit /etc/bandwidthd/bandwidthd.conf subnet 192.168.100.0/24 dev "eth1" htdocs_dir "/var/lib/bandwidthd/htdocs"
Перезапустим bandwidthd
/etc/init.d/bandwidthd restart
теперь можно зайти на web-морду по следующему адресу:
http://ip_адрес_сервера/bandwidthd/
Отредактируем /etc/sudoers:
User_Alias BILLING = www-data BILLING ALL = NOPASSWD: ALL
cd /home/sector wget downloads.sourceforge.net/project/htbinit/HTB.init/0.8.5/htb.init-v0.8.5?use_mirror=surfnet mv htb.init-v0.8.5\?use_mirror\=surfnet /usr/local/sbin/htb cd /usr/local/sbin/ chmod +x htb ln -fs /usr/local/sbin/htb /etc/init.d/
По умолчанию htb хранит конфиги в папке /etc/sysconfig/htb, создадим директории и сами файлы:
mkdir -p /etc/sysconfig/htb cd /etc/sysconfig/htb touch eth0 touch eth1 touch eth0-2.root touch eth1-2.root
Наполним их содержимым:
mcedit /etc/sysconfig/htb/eth0 DEFAULT=0 R2Q=100 mcedit /etc/sysconfig/htb/eth1 DEFAULT=0 R2Q=100 mcedit /etc/sysconfig/htb/eth0-2.root RATE=100Mbit CEIL=100Mbit mcedit /etc/sysconfig/htb/eth1-2.root RATE=100Mbit CEIL=100Mbit
Далее выполним следующие команды:
htb compile htb start htb stats
Если после выполнения последний команды видим следующее:
### eth0: queueing disciplines qdisc htb 1: root refcnt 2 r2q 100 default 0 direct_packets_stat 36 Sent 4768 bytes 36 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 ### eth0: traffic classes class htb 1:2 root prio 0 rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 2000 ctokens: 2000 ### eth1: queueing disciplines qdisc htb 1: root refcnt 2 r2q 100 default 0 direct_packets_stat 3 Sent 242 bytes 3 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 ### eth1: traffic classes class htb 1:2 root prio 0 rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 2000 ctokens: 2000
значит все в порядке !
mcedit /etc/softflowd/default.conf INTERFACE="eth1" OPTIONS="-n 192.168.100.1:42111"
mkdir /root/BILLING cd /root/BILLING wget wget http://ubilling.net.ua/stg/stg-2.409-rc5.tar.gz tar zxvf stg-2.409-rc5.tar.gz cd stg-2.409-rc5/projects/stargazer/ ./build make install cd ../sgconf && ./build && make && make install cd ../sgconf_xml/ && ./build && make && make install cd /root/BILLING/stg-2.409-rc5/projects/stargazer/plugins/configuration/rpcconfig && make && make install
скопируем недостающие конфиги из conf-available.d/ в conf-enabled.d/
cd /etc/stargazer/conf-available.d/ cp store_mysql.conf /etc/stargazer/conf-enabled.d/ cp mod_rpc.conf /etc/stargazer/conf-enabled.d/ cp mod_cap_nf.conf /etc/stargazer/conf-enabled.d/ cp mod_remote_script.conf /etc/stargazer/conf-enabled.d/
Идем править конфиг stargazer /etc/stargazer/stargazer.conf и прописывать туда наши скопированные модули:
LogFile = /etc/stargazer/log/stargazer.log <DirNames> DirName0 = Internet DirName1 = DirName2 = DirName3 = DirName4 = DirName5 = DirName6 = DirName7 = DirName8 = DirName9 = </DirNames> ################################################################################ # Store module # Configure the module that works with the database server # Warning: Only one store module could be used at the same time! <IncludeFile "conf-enabled.d/store_mysql.conf"> </IncludeFile> ################################################################################ # Other modules <Modules> <IncludeFile "conf-enabled.d/mod_ao.conf"> </IncludeFile> <IncludeFile "conf-enabled.d/mod_ia.conf"> </IncludeFile> <IncludeFile "conf-enabled.d/mod_sg.conf"> </IncludeFile> <IncludeFile "conf-enabled.d/mod_cap_nf.conf"> </IncludeFile> #<IncludeFile "conf-enabled.d/mod_rpc.conf"> #</IncludeFile> <IncludeFile "conf-enabled.d/mod_remote_script.conf"> </IncludeFile> </Modules>
Создадим файлик куда будут складываться логфайлы:
mkdir /etc/stargazer/log/ cd /etc/stargazer/log/ touch /etc/stargazer/log/stargazer.log
отредактируем конфиги:
conf-enabled.d/store_mysql.conf conf-enabled.d/mod_cap_nf.conf conf-enabled.d/mod_rpc.conf conf-enabled.d/mod_remote_script.conf
mcedit store_mysql.conf dbuser=root - ваш пользователь rootdbpass=password - ваш пароль
mcedit mod_cap_nf.conf TCPPort = 42111 UDPPort = 42111
mcedit mod_rpc.conf Port = 8081
mcedit mod_remote_script.conf: SubnetFile = /etc/stargazer/subnets
Создадим файл subnets:
cd /etc/stargazer touch subnets mcedit subnets 192.168.100.0/24 192.168.1.100 - ваши сети chmod 777 subnets
Поправим файлик rules находиться он по следующему пути /etc/stargazer/
mcedit /etc/stargazer/rules
ALL 0.0.0.0/0 DIR0
root@debian:/# stargazer
Идем смотреть лог. Если в логе следующее:
2020-08-24 10:24:48 -- Stg v. 2.409 2020-08-24 10:24:48 -- Message queue created successfully. msgKey=5555 msgID=0 2020-08-24 10:24:48 -- Timer thread started successfully. 2020-08-24 10:24:48 -- [store_mysql] MYSQL_STORE: Current DB schema version: 2 2020-08-24 10:24:48 -- Storage plugin: mysql_store v.0.67. Loading successfull. 2020-08-24 10:24:48 -- Users started successfully. 2020-08-24 10:24:48 -- Traffcounter started successfully. 2020-08-24 10:24:48 -- Module 'Remote script v 0.3' started successfully. 2020-08-24 10:24:48 -- Module 'Stg Configurator v. 2.0' started successfully. 2020-08-24 10:24:48 -- Module 'Always Online authorizator v.1.0' started successfully. 2020-08-24 10:24:48 -- Module 'InetAccess authorization plugin v.1.4' started successfully. 2020-08-24 10:24:48 -- Module 'cap_nf v. 0.4' started successfully. 2020-08-24 10:24:48 -- Stg started successfully. 2020-08-24 10:24:48 -- +++++++++++++++++++++++++++++++++++++++++++++
Значит. все норм.
Проверим, создались ли таблицы в базе данных, для этого выполним команду:
mysql -u root -p stg -e "SHOW TABLES"
Ответ:
+---------------+ | Tables_in_stg | +---------------+ | admins | | messages | | stat | | tariffs | | users | +---------------+
Данный вывод означает, что все в порядке и создалось 5 таблиц. Выполним следующую команду чтобы убить stargazer
killall -s 9 stargazer
cd /var/www/ mkdir billing cd billing wget http://ubilling.net.ua/ub.tgz tar zxvf ub.tgz
Заливаем дамп mysql
cat /var/www/billing/docs/test_dump.sql | mysql -u root -p stg
Проверяем что дамп залит:
mysql -u root -p stg -e "SHOW TABLES"
Видим:
+--------------------+ | Tables_in_stg | +--------------------+ | address | | admins | | ahenassign | | apt | | bankstaparsed | | bankstaraw | | build | | cardbank | | cardbrute | | cashtype | | catv_activity | | catv_bankstaparsed | | catv_bankstaraw | | catv_decoders | | catv_fees | | catv_payments | | catv_paymentscorr | | catv_signups | | catv_tariffs | | catv_users | | cfitems | | cftypes | | city | | contractdates | | contracts | | contrahens | | cpe | | cpetypes | | dhcp | | directions | | dshape_time | | emails | | employee | | genocide | | jobs | | jobtypes | | lousytariffs | | messages | | modem_templates | | modems | | nas | | nastemplates | | nethosts | | networks | | notes | | passportdata | | payments | | paymentscorr | | phones | | radattr | | realname | | services | | servtariff | | sigreq | | speeds | | stat | | street | | switchdeadlog | | switches | | switchmodels | | tags | | tagtypes | | tariffs | | taskman | | ticketing | | ub_im | | ubstats | | ubstorage | | uhw_brute | | uhw_log | | userreg | | users | | userspeeds | | vcash | | vcashlog | | vservices | | weblogs | +--------------------+ +--------------------+ | Tables_in_stg | +--------------------+ | address | | admins | | ahenassign | | apt | | bankstaparsed | | bankstaraw | | build | | cardbank | | cardbrute | | cashtype | | catv_activity | | catv_bankstaparsed | | catv_bankstaraw | | catv_decoders | | catv_fees | | catv_payments | | catv_paymentscorr | | catv_signups | | catv_tariffs | | catv_users | | cfitems | | cftypes | | city | | contractdates | | contracts | | contrahens | | cpe | | cpetypes | | dhcp | | directions | | dshape_time | | emails | | employee | | genocide | | jobs | | jobtypes | | lousytariffs | | messages | | modem_templates | | modems | | nas | | nastemplates | | nethosts | | networks | | notes | | passportdata | | payments | | paymentscorr | | phones | | radattr | | realname | | services | | servtariff | | sigreq | | speeds | | stat | | street | | switchdeadlog | | switches | | switchmodels | | tags | | tagtypes | | tariffs | | taskman | | ticketing | | ub_im | | ubstats | | ubstorage | | uhw_brute | | uhw_log | | userreg | | users | | userspeeds | | vcash | | vcashlog | | vservices | | weblogs | +--------------------+
Дамп залит !
mcedit /var/www/billing/config/mysql.ini ;user login username = "root" - ваш логин ;user password password = "password" - ваш пароль
mcedit /var/www/billing/config/billing.ini SUDO=/usr/bin/sudo RC_DHCPD=/etc/init.d/isc-dhcp-server
Перенесем папку multinet и перенесем конфиги dhcp:
cd /var/www/billing mv multinet multinet_back mkdir /etc/dhcp_back mv /etc/dhcp/* /etc/dhcp_back/
Создадим симлинк что бы генерированные Ubilling’ом конфиги отображались в папке /etc/dhcp:
ln -fs /etc/dhcp /var/www/billing/multinet
Правим темплейты dhcp в ubilling расположены они по следующему пути: /var/www/billing/config/dhcp
mcedit /var/www/billing/config/dhcp/global.template option domain-name "ourisp"; option domain-name-servers 8.8.8.8; default-lease-time 3600; max-lease-time 43200; authoritative; ddns-update-style none; log-facility local7; one-lease-per-client true; deny duplicates; shared-network ourisp { {SUBNETS} }
mcedit /var/www/billing/config/dhcp/subnets.template subnet {NETWORK} netmask {MASK} { default-lease-time 3600; option domain-name "ourisp"; option subnet-mask {MASK}; option routers 192.168.100.1; include "/etc/dhcp/{HOSTS}"; }
Скопируем скрипты и дадим права:
cp -f /var/www/billing/docs/presets/Linux/etc/* /etc/stargazer/ chmod a+x /etc/stargazer/*
mcedit /etc/stargazer/config host = localhost username = root - ваш логин password = password - ваш пароль database = stg
mcedit /etc/stargazer/OnConnect IFUP="eth0" IFDOWN="eth1" echo "$cur_date $cur_time CONNECT: ID-$ID;LOGIN-$LOGIN;IP-$IP;CASH-$CASH;SPEED-$SPEED;UPSPEED-$UPSPEED,MAC-$MAC" >> /etc/stargazer/log/allconnect.log
mcedit /etc/stargazer/OnDisconnect IFUP="eth0" IFDOWN="eth1" echo "$cur_date $cur_time DISCONNECT: ID-$ID;LOGIN-$LOGIN;IP-$IP;CASH-$CASH;SPEED-$SPEED;UPSPEED-$UPSPEED,MAC-$MAC" >> /etc/stargazer/log/allconnect.log
Отредактируем скрипты GetMAC, GetSpeed и GetUpSpeed изменим в каждом по одной строчке:
mcedit /etc/stargazer/GetMac #! /usr/bin/php mcedit /etc/stargazer/GetSpeed #! /usr/bin/php mcedit /etc/stargazer/GetUpSpeed #! /usr/bin/php
Создадим файл для логов:
touch /etc/stargazer/log/allconnect.log
Изменим права на директории billing и dhcp иначе убиллинг не сможет генерировать конфиги для dhcp
chown www-data:www-data -R /etc/dhcp chown www-data:www-data -R /var/www/billing
Раскомментируем следующую строчку, что бы разрешить форвард пакетов:
mcedit /etc/sysctl.conf net.ipv4.ip_forward=1
Исправим путь в /etc/stargazer/conf-enable/mod_remote_script.conf:
mcedit /etc/stargazer/conf-enabled.d/mod_remote_script.conf SubnetFile = /var/www/billing/remote_nas.conf
В этот файл при создании nas серверов Ubilling все пропишет сам. Как вы могли заметить этот файл мы правим два раза ! Внимательно проверяйте пути к файлам и наличие файлов в конфиге ubilling!
root@billing:/var/www/billing/config# cat billing.ini ; type of low level billing interraction baseconf = sgconfxml SGCONF=/usr/sbin/sgconf SGCONFXML=/usr/sbin/sgconf_xml STG_HOST=localhost STG_PORT=5555 XMLRPC_PORT=8081 STG_LOGIN=admin STG_PASSWD=123456 SUDO=/usr/bin/sudo TOP = /usr/bin/top -b CAT=/bin/cat GREP=/bin/grep RC_DHCPD=/etc/init.d/isc-dhcp-server UPTIME=/usr/bin/uptime PING=/bin/ping TAIL=/usr/bin/tail KILL=/bin/kill STGPID=/var/run/stargazer.pid STGNASHUP=1 PHPSYSINFO=phpsysinfo/ LANG = ru TASKBAR_ICON_SIZE = 64 ; user register options REGRANDOM_MAC=1 REGALWONLINE=1 REGDISABLEDSTAT=1 ;user reset type RESET_AO=0 ;No checks for stargazer runing process NOSTGCHECKPID=1
Создадим Alias и выполним вход в Ubilling
cd /etc/apache2/conf-available/ mcedit billing.conf
<Directory /var/www/billing> Options +FollowSymLinks Require all granted </Directory> Alias /billing /var/www/billing/
a2enconf billing systemctl reload apache2
Зайдем /ip_сервера/billing логин: admin пароль:demo
при установке по данной статье наблюдал следующее: когда захожу в Ubilling то страница не открывается, а скачивается — лечится просто перезапуском apache:
/etc/init.d/apache2 restart
создадим в справочнике сети и услуги назовем услугу Internet
далее создадим nas сервер там же в справочниках
стартанем stargazer
был случай что не стартанул перезагрузил систему глянул в remote_nas.conf пусто…. пошел в ubilling в nas сервер запись присутствовала, удалил, создал заново пошел, глянул remote_nas.conf появились записи стартанул stargazer ЗАПУСТИЛСЯ !
Идем в сервер DHCP и добавляем сеть имя конфига укажем eth.conf
нажмем на кнопку dhcpd.conf он должен быть похож на шаблон который мы правили /var/www/billing/conf/dhcp/global.template, а конкретнее он должен выглядеть так:
option domain-name "ourisp"; option domain-name-servers 8.8.8.8; default-lease-time 3600; max-lease-time 43200; authoritative; ddns-update-style none; log-facility local7; one-lease-per-client true; deny duplicates; shared-network ourisp { subnet 192.168.100.0 netmask 255.255.255.0 { default-lease-time 3600; option domain-name "ourisp"; option subnet-mask 255.255.255.0; option routers 192.168.100.1; include "/etc/dhcp/eth.conf"; } }
если что то пошло не так то удаляем все содержимое в /var/www/billing/multinet и /etc/dhcp
заново изменим права:
chown www-data:www-data -R /etc/dhcp chown www-data:www-data -R /var/www/billing
далее в ubilling в серверы DHCP удаляем запись и создаем заново.
создадим тариф !
создадим скорость тарифу !
Добавим пользователя !
Зададим ему тариф !
сходим посмотрим лог :
cat /etc/stargazer/log/allconnect.log
Если видим следующее:
2013.01.29 21:16:27 CONNECT: ID-1;LOGIN-kemobl1ap1_nlm4;IP-192.168.100.20;CASH-0.000000;SPEED-256;UPSPEED-256,MAC-14:88:45:66:35:47
Значит все в порядке !
посмотрим htb stats. должно быть следующее:
htb stats ### eth0: queueing disciplines qdisc htb 1: root refcnt 2 r2q 100 default 0 direct_packets_stat 225 Sent 27310 bytes 225 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 ### eth0: traffic classes class htb 1:2 root prio 0 rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 2000 ctokens: 2000 ### eth1: queueing disciplines qdisc htb 1: root refcnt 2 r2q 100 default 0 direct_packets_stat 0 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 ### eth1: traffic classes class htb 1:4101 root prio 0 rate 256000bit ceil 256000bit burst 1600b cburst 1600b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 781250 ctokens: 781250 class htb 1:101 root prio 0 rate 256000bit ceil 256000bit burst 1600b cburst 1600b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 781250 ctokens: 781250 class htb 1:2 root prio 0 rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 2000 ctokens: 2000 ### eth1: filtering rules filter parent 1: protocol ip pref 3 fw filter parent 1: protocol ip pref 3 fw handle 0x1005 classid 1:4101 filter parent 1: protocol ip pref 3 fw handle 0x65 classid 1:101
Добавим правила в iptables:
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 192.168.1.100
Готово!