[[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 **Готово!**