[[http://ubilling.net.ua |Ubilling]] — реализация мощного, гибкого и интуитивно понятного web-интерфейса для stargazer.Мы стараемся создать продукт удовлетворяющий любые требования к АСР провайдеров любого масштаба. Сколько это стоит? Да нисколько, устанавливайте и пользуйтесь на здоровье — для хороших людей ничего не жалко ;)» (взято с официального сайта 🙂 )
Документация - [[http://wiki.ubilling.net.ua/doku.php]]
Поправки выделенные красным цветом относятся к Debian 8\\
eth0-глобал 192.168.1.100\\
eth1— внутрь 192.168.100.1\\
==== Устанавливаем пакеты: ====
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\\
* **1-e**: надо ввести пароль для пользователя root Mysql т.к. у меня машина тестовая то я введу туда «password».\\
* **2-е**: bandwidthd спрашивает на каком интерфейсе слушать будем. укажем интерфейс под названием eth1.\\
* **3-е**: bandwidthd спрашивает, какие сети протоколировать будем, если все интерфейсы настроены правильно, то он автоматически заполнит поле останется только нажать ОК.\\
*
==== Перейдем к конфигурации установленных паркетов ====
При установке dhcp3-server вываливается ошибка то, что он не может стартануть и нужно указать интерфейс, на котором будет работать наш dhcp.
mcedit /etc/default/isc-dhcp-server
INTERFACES=”eth1”
При перезапуске он опять ругнется на то, что в конфигах ничего не прописано к этому мы вернемся чуть позже. Вообще Ubilling генерирует свои конфиги.\\
Bandwidthd тоже высыпал ошибку о том что не нашел конфиг, исправим !
cd /usr/share/doc/bandwidthd/
cp bandwidthd.conf /etc/bandwidthd/
mcedit /etc/bandwidthd/bandwidthd.conf
UPD: В новой версии не актуально. конфиги лежат уже там где нужно.\\
Настроим, раскомментируем и поправим следующие директивы:
subnet 192.168.100.0/24
dev "eth1"
htdocs_dir "/var/lib/bandwidthd/htdocs"
Далее сделаем символическую ссылку, что бы можно было зайти на web-морду:
ln -fs /var/lib/bandwidthd/htdocs/ /var/www/band
UPD: симлинк не актуальный\\
Перезапустим bandwidthd
/etc/init.d/bandwidthd restart
теперь можно зайти на web-морду по следующему адресу:
http://ip_адрес_сервера/band/
UPD http://ip_адрес_сервера/bandwidthd/
включим мод php в apache:
a2enmod php5
Отредактируем /etc/sudoers:
User_Alias BILLING = www-data
BILLING ALL = NOPASSWD: ALL
==== Установим шейпер HTB и настроим его: ====
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
значит все в порядке !
==== Подкорректируем softflowd: ====
mcedit /etc/default/softflowd
INTERFACE="eth1"
OPTIONS="-n 192.168.100.1:42111"
==== Установим stargazer ====
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 \\
compilation terminated.\\
полный путь /usr/include/linux/netfilter_ipv4/ip_queue.h\\
создаем данный файл и вставляем содержимое [[https://git.netfilter.org/iptables/tree/include/linux/netfilter_ipv4/ip_queue.h |Внешняя ссылка]]
==== Перейдем к настройке stargazer ! ====
скопируем недостающие конфиги из 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
DirName0 = Internet
DirName1 =
DirName2 =
DirName3 =
DirName4 =
DirName5 =
DirName6 =
DirName7 =
DirName8 =
DirName9 =
################################################################################
# Store module
# Configure the module that works with the database server
# Warning: Only one store module could be used at the same time!
################################################################################
# Other 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
==== запускаем stargazer: ====
root@debian:/# stargazer
Идем смотреть лог. Если в логе следующее:
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 -- +++++++++++++++++++++++++++++++++++++++++++++
Значит. все норм.
Проверим, создались ли таблицы в базе данных, для этого выполним команду:
mysql -u root -p stg -e "SHOW TABLES"
Ответ:
+---------------+
| Tables_in_stg |
+---------------+
| admins |
| messages |
| stat |
| tariffs |
| users |
+---------------+
Данный вывод означает, что все в порядке и создалось 5 таблиц.
Выполним следующую команду чтобы убить stargazer
killall -s 9 stargazer
==== Перейдем к установки Ubilling: ====
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 |
+--------------------+
Дамп залит !
==== Перейдем к редактированию конфигов Ubilling: ====
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/*
==== Вернемся к редактированию конфигов и скриптов в /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
==== Вход в Ubilling ====
Зайдем /ip_сервера/billing логин: admin пароль:demo
UPD: создать Alias в apache conf-enabled если на странице куча текста:
mcedit /etc/php5/apache2/php.ini
short_open_tag=o
при установке по данной статье наблюдал следующее:
когда захожу в 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
**Готово!**