top
logo


Установки Ubilling на Ubuntu server 10.04.3 LTS PDF Печать E-mail
Автор: Administrator   
27.11.11 12:50

Общие аспекты установки Ubilling на

Ubuntu server 10.04.3 LTS

 

Данное руководство актуально для версии Ubilling 0.0.7

Требования к установленному ПО

  • Ubuntu server 10.04.3
  • MySQL >=5.x
  • expat
  • expat-dev
  • mysql-server
  • mysql-client-core-5.1
  • libmysqlclient16
  • build-essential
  • libmysqlclient-dev
  • Stargazer версии 2.407 или выше
  • Конфигураторы Stargazer - sgconf/sgconf_xml/xmlrpc
  • PHP версии >=5.x собранный с поддержкой CLI и MySQL
  • Apache версии >=1.3
  • ISC-DHCPD >=3.x
  • sudo
  • iptables
  • bandwidthd (для NAS)
  • softflowd (для NAS)
  • thttpd (для NAS)

Установка требуемого внешнего ПО

В данном примере рассматривается установка всего требуемого ПО при помощи apt.

# sudo bash
# apt-get install mysql-server-core-5.1
# apt-get install mysql-client-core-5.1
# apt-get install libmysqlclient16
# apt-get install libmysqlclient-dev
# apt-get install apache2

(mysql-server при установке запросит пароль суперпользователя БД, для примера это у нас будет newpassword)

# apt-get install  mysql-server

(bandwidthd при установке запросит имя сетевого адаптера через который вести учет и подсети пользователей)

# apt-get install bandwidthd
# apt-get install softflowd
# apt-get install expat
# apt-get install libexpat-dev
# apt-get install php5-cli
# apt-get install libapache2-mod-php5
# apt-get install php5-mysql
# apt-get install dhcp3-server
# aptitude install build-essential
# a2enmod php5

редактируем /usr/local/etc/sudoers

User_Alias BILLING = www
BILLING         ALL = NOPASSWD: ALL

Установка Stargazer

# 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

редактируем /etc/stargazer/stargazer.conf, приводя его в соответствие текущим потребностям Также рекомендуется ознакомиться с документацией по Stargazer для уточнения деталей.

# путь к логфайлу 
LogFile = /var/log/stargazer.log 
# путь к pid
PIDFile = /var/run/stargazer.pid 
# файл с описанием класов трафика
Rules = /etc/stargazer/rules 
# время записи детальной статистики в базу
DetailStatWritePeriod = 1/4 
# время сброса счетчиков трафика в базу
StatWritePeriod = 10 
# день снятия абонплаты
DayFee = 1 
# это последний день месяца?
DayFeeIsLastDay = no 
# день обнуления счетчиков трафика
DayResetTraff = 1 
# "размазанное" снятие абонплаты
SpreadFee = no 
# позволять пользователю доступ если у него остался предоплаченый трафик?
FreeMbAllowInet = no 
# писать стоимость предоплаченого трафика?
WriteFreeMbTraffCost = yes 
# снимать полную абонплату ежемесячно?
FullFee = yes 
# названия класов трафика относительно /etc/stargazer/rules
<DirNames> 
  DirName0 = Internet 
  DirName1 = Internal 
  DirName2 = 
  DirName3 = 
  DirName4 = 
  DirName5 = 
  DirName6 = 
  DirName7 = 
  DirName8 = 
  DirName9 =
</DirNames> 
ExecutersNum = 1 
# путь модулей
ModulesPath = /usr/lib/stg 
# модуль хранения данных
<StoreModule store_mysql> 
# хост MySQL
  dbhost = localhost 
# имя базы
  dbname = stg 
# логин пользователя MySQL
  dbuser = root 
# пароль пользователя MySQL
  rootdbpass = newpassword 
</StoreModule> 
<Modules> 
# модуль авторизации AlwaysOnline (рекомендуется)
<Module auth_ao> 
</Module> 
# модуль авторизации штатного авторизатора stargazer
<Module auth_ia> 
  Port = 5555 
  UserDelay = 60 
  UserTimeout = 65 
  FreeMb = cash 
</Module> 
# модуль коллектора трафика NetFlow
<Module conf_sg> 
  Port = 5555 
</Module> 
</Modules> 

редактируем конфиг /etc/stargazer/rules

ALL     192.168.56.0/24  DIR1 
ALL     0.0.0.0/0        DIR0

запускаем stargazer

# stargazer

Убеждаемся в том что модуль store_mysql создал все нужные таблицы в БД

# mysql -u root -p stg -e "SHOW TABLES" 
Enter password: 
+---------------+ 
| Tables_in_stg | 
+---------------+ 
| admins        | 
| messages      | 
| stat          | 
| tariffs       | 
| users         | 
+---------------+ 

Останавливаем stargazer

#killall stargazer

Устанавливаем текущую версию Ubilling

# cd /var/www/
# mkdir billing
# cd billing
# wget http://ubilling.net.ua/ub.tgz
# tar zxvf ub.tgz
# chmod -R 777 content/ config/ multinet/ exports/ remote_nas.conf vservices.php

разворачиваем дамп с нужными таблицами по умолчанию

# cat docs/test_dump.sql | mysql -u root -p stg

убеждаемся нормально ли развернулся дамп

#mysql -u root -p stg -e "SHOW TABLES" 
Enter password: 
+---------------+ 
| Tables_in_stg | 
+---------------+ 
| address       | 
| admins        | 
| apt           | 
| build         | 
| cardbank      | 
| cardbrute     | 
| cashtype      | 
| city          | 
| contracts     | 
..много разных таблиц..
| vcash         | 
| vservices     | 
| weblogs       | 
+---------------+ 

редактируем конфиг config/mysql.ini

;Хост БД 
server = "localhost" 
;порт MySQL
port = "3306" 
;логин пользователя MySQL 
username = "root" 
;его пароль
password = "newpassword" 
;имя базы
db = "stg" 
character = "UTF8" 
prefix = "billing"

редактируем файл config/billing.ini Прежде всего следует определиться с методом взаимодействия со stargazer. На данный момент возможен выбор одного из трех обработчиков: sgconf, sgconfxml(рекомендуется) и xmlrpc.

; метод взаимодействия со stargazer
baseconf = sgconfxml 
; путь к sgconf 
SGCONF=/usr/sbin/sgconf 
; путь к sgconf_xml
SGCONFXML=/usr/sbin/sgconf_xml 
; хост на котором запущен stargazer
STG_HOST=localhost 
; порт конфигуратора
STG_PORT=5555 
; порт XMLRPC
XMLRPC_PORT=8081 
; логин администратора stargazer (по умолчанию admin)
STG_LOGIN=admin 
; пароль администратора stargazer (по умолчанию 1234567)
STG_PASSWD=123456 
;Пути окружения
;путь к sudo
SUDO=/usr/bin/sudo
;путь к top в пакетном режиме
TOP = /usr/bin/top -b -n1 
;путь к cat
CAT=/bin/cat
;путь к grep 
GREP=/bin/grep 
;путь к RC скрипту isc-dhcpd
RC_DHCPD=/etc/init.d/dhcp3-server
;путь к uptime
UPTIME=/usr/bin/uptime 
;путь к ping
PING=/bin/ping 
;путь к PHPSysInfo
PHPSYSINFO=phpsysinfo/ 
;язык по умолчанию
LANG = ua 
;размер иконок в "панели задач"
TASKBAR_ICON_SIZE = 128 
; опции регистрации новых пользователей
; регистрировать новых пользователей со случайным MAC
REGRANDOM_MAC=1 
; регистрировать новых пользователей с флагом "Всегда онлайн"
REGALWONLINE=1 
; регистрировать новых пользователей с отключенной детальной статистикой
REGDISABLEDSTAT=1 

правильность путей к программам окружения можно проверить при помощи команды whereis

создаем несколько нужных симлинков

# ln -fs /var/www/billing/multinet /etc/dhcp3/multinet # ln -fs /var/www/billing/remote_nas.conf /etc/stargazer/remote_nas.conf # ln -fs /var/lib/bandwidthd/htdocs /var/www/band

разворачиваем заготовки стартовых скриптов

# cp -f docs/presets/Linux/etc/* /etc/stargazer/
# chmod a+x /etc/stargazer/*

Особенностью пресетов под Linux является необходимость инициализации шейпера при помощи скрипта shaper.sh который имеет вид:

#!/bin/bash
IFUP=eth0
IFDOWN=eth1
IPT="/sbin/iptables"
tc="/sbin/tc"
SPEEDUP=100mbit
SPEEDDOWN=100mbit
$IPT -t mangle --flush
$tc qdisc add dev $IFDOWN root handle 1: htb
$tc class add dev $IFDOWN parent 1: classid 1:1 htb rate $SPEEDDOWN ceil $SPEEDDOWN
$tc qdisc add dev $IFUP root handle 1: htb
$tc class add dev $IFUP parent 1: classid 1:1 htb rate $SPEEDUP ceil $SPEEDUP

и требует минимальной коректировки под ваши реалии в виде вписывания соответствующих скоростей и имен интерфейсов. В общем последовательность запуска должна быть следующей:

iptables - правила iptables
shaper.sh - инициализация шейпера
stargazer - сам stargazer

скрипт shaper.stop.sh служит для сброса корневых дисциплин и как следствие - для всех пользователей.

редактируем конфиг /etc/stargazer/config прописывая в него текущие параметры MySQL

host = localhost 
username = root 
password = newpassword 
database = stg

редактируем файл /etc/stargazer/OnConnect Вписываем интерфейс на котором будет производиться шейпинг пользователей а также контроль доступа в виде

IFACE="eth0"

запускаем stargazer

# stargazer

и посещаем web-интерфейс который исходя из нашего примера имеет вид: http://192.168.56.2/billing/
логин и пароль по умолчанию admin/demo
Если мы увидели нечто подобное рисунку приведенному ниже значит установка идет по плану ;)

Первоначальная настройка

Весь процес первоначальной настройки вплоть до регистрации первого пользователя
запечатлен в виде трехминутного видеоролика

В общих чертах последовательность должна быть такой:

  1. добавляем нового админа, назначаем ему права
  2. добавляем классы трафика в соответствии с описанными ранее для stargazer
  3. добавляем нужные сети
  4. вешаем на эти сети услуги
  5. добавляем нужные нам тарифы
  6. назначаем им скоростя
  7. добавляем сервера доступа
  8. настраиваем соответствующим образом dhcp
  9. добавляем населенные пункты
  10. добавляем в города улицы и дома куда будем селить абонентов

Настройка DHCPD

редактируем конфиг /etc/dhcp3/dhcpd.conf

option domain-name «ourisp»;

option domain-name-servers 172.30.0.1; 
default-lease-time 3600; 
max-lease-time 43200; 
authoritative; 
ddns-update-style none; 
log-facility local7; 
one-lease-per-client true; 
deny duplicates;  
subnet 172.30.0.0 netmask 255.255.248.0 { 
default-lease-time 3600; 
option domain-name "ctv"; 
option subnet-mask 255.255.248.0; 
option routers 172.30.0.1; 
include "/etc/dhcp3/multinet/ethernet.conf"; 
} 

Периодические задачи

в # crontab -e добавляем

20 0 * * 1  cd /var/www/billing/ ; /usr/bin/php /var/www/billing/vservices.php > /var/log/vservices.log

Стартовый скрипт

/etc/init.d/billing

#!/bin/sh
service mysql start
service apache2 start
/usr/sbin/stargazer
/usr/sbin/bandwidthd
/usr/sbin/softflowd -i eth0 -n 127.0.0.1:42111

назначаем ему нужные права

# chmod a+x /etc/initd.d/billing

останавливаем stargazer и проверяем все ли запускается как надо после чего и смотрим как все запускается вместе:

# killall stargazer
# /etc/init.d/billing
# ps aux | grep stargazer
# ps aux | grep bandwidthd
# ps aux | grep softflowd

Итак на данный момент мы рассмотрели с вами наиболее примитивный пример в котором сам биллинг, его БД, сенсор и коллектор netflow а также весь routing/shape пользовательского трафика проходят на одном единичном хосте. Естественно для сетей с каким либо существенным количеством абонентов и трафика это не является допустимой архитектурой. К счастью stargazer предлагает очень простой и елегантный механизм масштабирования по горизонтали, зовущийся rscriptd и позволяющий удаленно исполнять скрипты OnConnect/OnDisconnect.

Более глубоко настройка NAS будет рассмотрена в другом документе с наглядными примерами и заготовками конфигов. На этом этапе написания документации хотелось бы в общих чертах рассмотреть общие принципы работы удаленных NAS на rscriptd.

Основы конфигурации удаленного NAS на rscriptd

вставляем в /etc/stargazer/stargazer.conf

<Module remote_script> 
SendPeriod = 10
SubnetFile =/etc/stargazer/remote_nas.conf
Password = secretpassword
UserParams=Cash Tariff
Port = 9999 
</Module>

описания NAS для различных подсетей храняться в файле remote_nas.conf в виде

172.30.0.0/24    192.168.0.3

что соотвествует тому, что команды для пользователей в подсети 172.30.0.0/24 следует отправлять rscriptd запущенном на сервере 192.168.0.3

Сборка rscriptd

# 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/rscriptd/
# ./build
# make install

редактируем конфиг /etc/stargazer/rscriptd.conf

LogFileName=/var/log/rscriptd.log 
ExecutersNum=1 
ConfigDir=/etc/rscriptd 
Password=secretpassword
Port=9999 
UserTimeout=60 
ScriptOnConnect=/etc/rscriptd/OnConnect 
ScriptOnDisconnect=/etc/rscriptd/OnDisconnect

Скрипты OnConnect/OnDisconnect/GetSpeed/GetMac/GetUpSpeed вы можете использовать точно теже что и в описанном выше примере только с той разницей что параметры в OnConnect/OnDisconnect передаються в виде

LOGIN=$1 
IP=$2 
CASH=$4 
ID=$3 

Тонкая настройка

Не является платформозависимой и соответствует приведенной в примере для FreeBSD

Кабинет пользователя

настраивается аналогично примеру для FreeBSD

 

оригинал: http://wiki.ubilling.net.ua

ссылка на статью: http://thin.kiev.ua/index.php?option=com_content&view=article&id=460:ubuntu-server-10043-lts&catid=39:linux&Itemid=63

 

{jcomments on}

Последнее обновление 09.04.12 09:30
 
Интересная статья? Поделись ей с другими:

bottom

 

Unreal Commander PfSense по русски Яндекс.Метрика