Содержание

Ubilling — реализация мощного, гибкого и интуитивно понятного web-интерфейса для stargazer.Мы стараемся создать продукт удовлетворяющий любые требования к АСР провайдеров любого масштаба. Сколько это стоит? Да нисколько, устанавливайте и пользуйтесь на здоровье — для хороших людей ничего не жалко ;)» (взято с официального сайта 🙂 )

Документация - http://wiki.ubilling.net.ua/doku.php

Поправки выделенные красным цветом относятся к Debian 8

eth0-глобал 192.168.1.100
eth1— внутрь 192.168.100.1

Устанавливаем пакеты:

title
apt-get install mysql-server-core-5.1 mysql-client-5.1 libmysqlclient16 
libmysqlclient-dev apache2 mysql-server expat libexpat1-dev php5-cli 
libapache2-mod-php5 php5-mysql dhcp3-server build-essential bind9 
bandwidthd softflowd libxmlrpc-c3-dev sudo

UPD изменились версии и названия пакетов: libxmlrpc-c3-dev →libxmlrpc-c++8-dev, dhcp3-server→isc-dhcp-server

Перейдем к конфигурации установленных паркетов

При установке dhcp3-server вываливается ошибка то, что он не может стартануть и нужно указать интерфейс, на котором будет работать наш dhcp.

title
mcedit /etc/default/isc-dhcp-server
INTERFACES=”eth1”

При перезапуске он опять ругнется на то, что в конфигах ничего не прописано к этому мы вернемся чуть позже. Вообще Ubilling генерирует свои конфиги.

Bandwidthd тоже высыпал ошибку о том что не нашел конфиг, исправим !

title
cd /usr/share/doc/bandwidthd/
cp bandwidthd.conf /etc/bandwidthd/
mcedit /etc/bandwidthd/bandwidthd.conf

UPD: В новой версии не актуально. конфиги лежат уже там где нужно.

Настроим, раскомментируем и поправим следующие директивы:

title
subnet 192.168.100.0/24
dev "eth1"
htdocs_dir "/var/lib/bandwidthd/htdocs"

Далее сделаем символическую ссылку, что бы можно было зайти на web-морду:

title
ln -fs /var/lib/bandwidthd/htdocs/ /var/www/band

UPD: симлинк не актуальный

Перезапустим bandwidthd

title
/etc/init.d/bandwidthd restart

теперь можно зайти на web-морду по следующему адресу:

title
http://ip_адрес_сервера/band/

UPD http://ip_адрес_сервера/bandwidthd/

включим мод php в apache:

title
a2enmod php5

Отредактируем /etc/sudoers:

title
User_Alias BILLING = www-data
BILLING          ALL = NOPASSWD: ALL

Установим шейпер HTB и настроим его:

title
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, создадим директории и сами файлы:

title
mkdir -p /etc/sysconfig/htb
 
cd /etc/sysconfig/htb
touch eth0
touch eth1
touch eth0-2.root
touch eth1-2.root

Наполним их содержимым:

title
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

Далее выполним следующие команды:

title
htb compile
htb start
htb stats

Если после выполнения последний команды видим следующее:

title
### 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

значит все в порядке !

Подкорректируем softflowd:

title
mcedit /etc/default/softflowd
 
INTERFACE="eth1"
OPTIONS="-n 192.168.100.1:42111"

Установим stargazer

title
mkdir /root/BILLING
cd /root/BILLING
wget http://stg.dp.ua/download/server/2.407-p1/stg-2.407-p1.tar.gz
tar zxvf stg-2.407-p1.tar.gz
cd stg-2.407-p1/projects/stargazer/
./build
make install
cd ../sgconf && ./build && make && make install
cd ../sgconf_xml/ && ./build && make && make install
cd /root/BILLING/stg-2.407-p1/projects/stargazer/plugins/configuration/rpcconfig
make && make install

UPD: stg-2.407-p1 что-то не собрался на Debian 7.5 заюзал stg-2.408
Ошибка при сборке stg в Debian 8
libipq.h:38:43: fatal error: linux/netfilter_ipv4/ip_queue.h: Нет такого файла или каталога
#include <linux/netfilter_ipv4/ip_queue.h>
compilation terminated.
полный путь /usr/include/linux/netfilter_ipv4/ip_queue.h
создаем данный файл и вставляем содержимое
Внешняя ссылка

Перейдем к настройке stargazer !

скопируем недостающие конфиги из conf-available.d/ в conf-enabled.d/

title
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 и прописывать туда наши скопированные модули:

title
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>

Создадим файлик куда будут складываться логфайлы:

title
mkdir /etc/stargazer/log/
cd /etc/stargazer/log/
touch /etc/stargazer/log/stargazer.log

отредактируем конфиги:

title
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
title
mcedit store_mysql.conf
 
dbuser=root - ваш пользователь
rootdbpass=password - ваш пароль
title
mcedit mod_cap_nf.conf
 
TCPPort = 42111
UDPPort = 42111
title
mcedit mod_rpc.conf
 
Port = 8081
title
mcedit mod_remote_script.conf:
 
SubnetFile = /etc/stargazer/subnets

Создадим файл subnets:

title
cd /etc/stargazer
touch subnets
mcedit subnets 
192.168.100.0/24 192.168.1.100 - ваши сети
Chmod 777 subnets

Поправим файлик rules находиться он по следующему пути /etc/stargazer/

title
mcedit /etc/stargazer/rules
ALL     0.0.0.0/0    DIR0

запускаем stargazer:

title
root@debian:/# stargazer

Идем смотреть лог. Если в логе следующее:

title
2013-01-29 18:46:56 -- Stg v. 2.407-p1
2013-01-29 18:46:56 -- Message queue created successfully. msgKey=5555 msgID=0
2013-01-29 18:46:56 -- Timer thread started successfully.
2013-01-29 18:46:56 -- Storage plugin: mysql_store v.0.67. Loading successfull.
2013-01-29 18:46:56 -- Users started successfully.
2013-01-29 18:46:56 -- Traffcounter started successfully.
2013-01-29 18:46:56 -- Module: 'CAP_NF v. 0.4'. Start successfull.
2013-01-29 18:46:56 -- Module: 'Remote script v 0.3'. Start successfull.
2013-01-29 18:46:56 -- Module: 'InetAccess authorization plugin v.1.4'. Start successfull.
2013-01-29 18:46:56 -- Module: 'Always Online authorizator v.1.0'. Start successfull.
2013-01-29 18:46:56 -- Module: 'Stg configurator v.0.08'. Start successfull.
2013-01-29 18:46:56 -- Module: 'Stargazer RPC v. 0.2'. Start successfull.
2013-01-29 18:46:56 -- Stg started successfully.
2013-01-29 18:46:56 -- +++++++++++++++++++++++++++++++++++++++++++++

Значит. все норм.

Проверим, создались ли таблицы в базе данных, для этого выполним команду:

title
mysql -u root -p stg -e "SHOW TABLES"

Ответ:

title
+---------------+
| Tables_in_stg |
+---------------+
| admins        |
| messages      |
| stat          |
| tariffs       |
| users         |
+---------------+

Данный вывод означает, что все в порядке и создалось 5 таблиц. Выполним следующую команду чтобы убить stargazer

title
killall -s 9 stargazer

Перейдем к установки Ubilling:

title
cd /var/www/
mkdir billing
cd billing
wget http://ubilling.net.ua/ub.tgz
tar zxvf ub.tgz

Заливаем дамп mysql

title
cat /var/www/billing/docs/test_dump.sql | mysql -u root -p stg

Проверяем что дамп залит:

title
mysql -u root -p stg -e "SHOW TABLES"

Видим:

title
+--------------------+
| 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            |
+--------------------+

Дамп залит !

Перейдем к редактированию конфигов Ubilling:

title
mcedit /var/www/billing/config/mysql.ini

;user login
username = "root" - ваш логин
;user password 
password = "password" - ваш пароль
title
mcedit /var/www/billing/config/billing.ini
 
SUDO=/usr/bin/sudo
RC_DHCPD=/etc/init.d/isc-dhcp-server

Перенесем папку multinet и перенесем конфиги dhcp:

title
cd /var/www/billing
mv multinet multinet_back
 
mkdir /etc/dhcp_back
mv  /etc/dhcp/* /etc/dhcp_back/

Создадим симлинк что бы генерированные Ubilling’ом конфиги отображались в папке /etc/dhcp:

title
ln -fs  /etc/dhcp /var/www/billing/multinet

Правим темплейты dhcp в ubilling расположены они по следующему пути: /var/www/billing/config/dhcp

title
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}
}
title
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}";
}

Скопируем скрипты и дадим права:

title
cp -f /var/www/billing/docs/presets/Linux/etc/* /etc/stargazer/
chmod a+x /etc/stargazer/*

Вернемся к редактированию конфигов и скриптов в /etc/stargazer:

title
mcedit /etc/stargazer/config
 
host = localhost
username = root - ваш логин
password = password - ваш пароль
database = stg
title
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
title
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 изменим в каждом по одной строчке:

title
mcedit /etc/stargazer/GetMac
#! /usr/bin/php
 
mcedit /etc/stargazer/GetSpeed
#! /usr/bin/php
 
mcedit /etc/stargazer/GetUpSpeed
#! /usr/bin/php

Создадим файл для логов:

title
touch /etc/stargazer/log/allconnect.log

Изменим права на директории billing и dhcp иначе убиллинг не сможет генерировать конфиги для dhcp

title
chown www-data:www-data  -R /etc/dhcp 
chown www-data:www-data  -R /var/www/billing

Раскомментируем следующую строчку, что бы разрешить форвард пакетов:

title
mcedit /etc/sysctl.conf
net.ipv4.ip_forward=1

Исправим путь в /etc/stargazer/conf-enable/mod_remote_script.conf:

title
mcedit /etc/stargazer/conf-enabled.d/mod_remote_script.conf
SubnetFile = /var/www/billing/remote_nas.conf

В этот файл при создании nas серверов Ubilling все пропишет сам. Как вы могли заметить этот файл мы правим два раза ! Внимательно проверяйте пути к файлам и наличие файлов в конфиге ubilling!

title
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

Вход в Ubilling

Зайдем /ip_сервера/billing логин: admin пароль:demo

UPD: создать Alias в apache conf-enabled если на странице куча текста:

title
mcedit /etc/php5/apache2/php.ini
short_open_tag=o

при установке по данной статье наблюдал следующее: когда захожу в Ubilling то страница не открывается, а скачивается — лечится просто перезапуском apache:

title
/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, а конкретнее он должен выглядеть так:

title
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

заново изменим права:

title
chown www-data:www-data  -R /etc/dhcp 
chown www-data:www-data  -R /var/www/billing

далее в ubilling в серверы DHCP удаляем запись и создаем заново.

создадим тариф !

создадим скорость тарифу !

Добавим пользователя !

Зададим ему тариф !

сходим посмотрим лог :

title
cat /etc/stargazer/log/allconnect.log

Если видим следующее:

title
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. должно быть следующее:

title
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:

title
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

Готово!