Установка Stargazer+Ubilling на Ubuntu Server 10.10

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

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

При установке программ вас попросят ввести пароль для root от mysql.

Включаем мод в php:

a2enmod php5

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

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

Делаем симлинк на Bandwindthd

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

Установка IPSET

1. Качаем архив IPSET 4.x версии он нормально работает на Maverick (в последних версиях 12.04 можно установить через apt-get install ipset) http://ipset.netfilter.org/install.html

2. Распаковываем:

tar -xf ipset-4.5.tar.bz2

3. Заходим в папку собираем и включаем:

cd ipset-4.5/

make && make install && make clean

depmod && depmod -A
modprobe ip_set

Всё должно пройти без ошибок.

И собственно всё.. Ipset уже готов служить вам =)

Установка и настройка Htb

0. Качаем Htb: http://sourceforge.net/projects/htbinit/

1. В скрипте htb.init проверяем и корректируем по вкусу переменные HTB_PATH, HTB_CACHE, TC, IP, MP.

2.

cp htb.init /etc/init.d/htb

и делаем

update-rc.d htb defaults

3. cd /etc/sysconfig/htb

 
touch eth0
touch eth1
touch eth0-2.root
touch eth1-2.root

nano eth0

 
DEFAULT=0
R2Q=100

nano eth1

DEFAULT=0
R2Q=100

nano eth0-2.root

RATE=100Mbit
CEIL=100Mbit

nano eth1-2.root

RATE=100Mbit
CEIL=100Mbit

Проверить работу скрипта htb.init, кроме спидтестов, можно просмотром конфигурации командами:

tc class show dev ВАШ_ИНТЕРФЕЙС
tc qdisc show dev ВАШ_ИНТЕРФЕЙС

Установка 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

Редактирование конфигов и настройка опций

Редактируем конфиг /etc/stargazer/stargazer.conf Вот здесь очень сомнительное место. Возможно стоит его не рассматривать. Сделайте симлинк на cap_nf и remote_script из /etc/stargazer/conf-available.d/ в /etc/stargazer/conf-enabled.d/ и желательно удалить линк на cap_ether говорят он не вменяемый =) И давайте сразу создадим директорию под логи - для удобства:

rm /etc/stargazer/conf-enabled.d/mod_cap_ether.conf
ln -fs /etc/stargazer/conf-available.d/mod_remote_script.conf /etc/stargazer/conf-enabled.d/
mkdir /etc/stargazer/log/

Конец сомнительного места.

################################################################################
#                        Stargazer Configuration file                          #
################################################################################

# путь к логфайлу
LogFile = /etc/stargazer/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 = Local
  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 = ваш_пароль
</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>

<Module cap_nf>
      TCPPort = 42111
      UDPPort = 42111
</Module>

</Modules>



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

ALL     172.16.0.0/18   DIR1
ALL     0.0.0.0/0       DIR0

И так первый запуск stargazer'a:

stargazer

Теперь проверим создались ли базы в MySQL

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

В ответ должны увидеть это:

Tables_in_stg

admins
messages
stat
tariffs
users

Выключаем stargazer:

killall stargazer

Теперь можно приступить к установке Ubilling'a

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

Тут у меня возникала проблема с правами на файлы..

chmod -R 0777 content/ config/ multinet/ exports/ remote_nas.conf vservices.php

Заливаем дамп mysql из ubilling:

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 |
| build |
| cardbank |
| cardbrute |
| cashtype |
| cfitems |
| cftypes |
| city |
| contracts |
| contrahens |
| cpe |
| cpetypes |
| dhcp |
| directions |
| dshape_time |
| emails |
| employee |
| jobs |
| jobtypes |
| logs_11_2011 |
| messages |
| modem_templates |
| modems |
| nas |
| nethosts |
| networks |
| notes |
| payments |
| phones |
| realname |
| services |
| servtariff |
| speeds |
| stat |
| street |
| switches |
| switchmodels |
| tags |
| tagtypes |
| tariffs |
| taskman |
| userreg |
| users |
| userspeeds |
| vcash |
| vcashlog |
| vservices |
| weblogs |
+-----------------+

Редактируем конфиг в ubilling: /var/www/billing/config/mysql.ini

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

Редактирем конфиг в ubilling /var/www/billing/config/billing.ini

; метод взаимодействия со 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

STGPID=/var/run/stargazer.pid

;путь к uptime
UPTIME=/usr/bin/uptime

;путь к ping
PING=/bin/ping

;путь к PHPSysInfo
PHPSYSINFO=phpsysinfo/

STGNASHUP=1 

;язык по умолчанию
LANG = ru

;размер иконок в "панели задач"
TASKBAR_ICON_SIZE = 64

; опции регистрации новых пользователей
; регистрировать новых пользователей со случайным MAC
REGRANDOM_MAC=1

; регистрировать новых пользователей с флагом "Всегда онлайн"
REGALWONLINE=1

; регистрировать новых пользователей с отключенной детальной статистикой
REGDISABLEDSTAT=1

Не забываем указать путь на будующий «лог файл» от dhcpd /var/www/billing/config/alter.ini

NMLEASES = /var/log/dhcpd.log

Создаём симлинки на каталог и файл - без них ни чего не заработает =)

ln -fs /var/www/billing/multinet/ /etc/dhcp3/multinet
ln -fs /var/www/billing/remote_nas.conf /etc/stargazer/remote_nas.conf

Копируем стандартные скрипты из Ubilling в stargazer и выставляем на них права.

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

Редактируем /etc/stargazer/config для подключения к базе stg

host = localhost
username = root
password = ваш_проль
database = stg

Запускаем stargazer

stargazer

Создание зоны .isp, редактирование хостов и DHCP

Редактируем файл /etc/bind/named.conf

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

zone "isp" {
  type master;
  file "/etc/bind/db.isp";
};

Создаём файл и редактируем его

cd /etc/bind/
touch db.isp
nano db.isp

Содержимое /etc/bind/db.isp

$TTL 3h
@ IN SOA billing.isp. root.billing.isp. 1 1d 12h 1w 3h

isp. IN NS billing.isp.

billing A          172.16.0.1 #Биллинг
stat    A          172.16.0.1 #Личный кабинет
nas1    A          172.16.0.1 #Сервер Bandwidthd

Редактируем /etc/bind/named.conf.options

acl isp {
        172.16.0.0/18;
        };
options {
        directory "/var/cache/bind";

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
        allow-query {"isp";};
};

Настройка хостов в Apache2 /etc/apache2/site-enabled/000-default -Приводим содержимое в данный вид:

<VirtualHost *:80>
ServerName billing.isp
DocumentRoot "/var/www/billing/"
AddDefaultCharset utf-8
</virtualhost>


<VirtualHost *:80>
ServerName stat.isp
DocumentRoot "/var/www/billing/userstats/"
AddDefaultCharset utf-8
</virtualhost>

<VirtualHost *:80>
ServerName nas1.isp
DocumentRoot "/var/www/band/"
AddDefaultCharset utf-8
</virtualhost>

Настройка DHCP Чтобы dhcp заработал нужно отредактировать /etc/default/dhcp3-server

INTERFACES="eth1"

Это интерфейс на котором у нас в дальнейшем будут раздаваться IP адреса для абонентов.

Редактируем /etc/dhcp3/dhcpd.conf

option domain-name "isp";
option domain-name-servers 172.16.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;
shared-network ourisp {
subnet 172.16.0.0 netmask 255.255.192.0 {
default-lease-time 3600;
option domain-name "ourisp";
option subnet-mask 255.255.192.0;
option routers 172.16.0.1;
include "/etc/dhcp3/multinet/ethernet.conf";
}
}

Для того чтобы логировать не известные МАК'и настрим логирование /etc/rsysctl.conf или он может называться /etc/sysctl.conf Сталкивался с разным названием)) :

!dhcpd
 *.*                       /var/log/dhcpd.log

Делаем шаманское движение, без которого в Ubuntu у вас не получится заставить dhcpd юзать каталог multinet

Редактируем nano /etc/apparmor.d/usr.sbin.dhcpd3 Добавляем туда следующее:

/var/www/billing/multinet/ r,
/var/www/billing/multinet/** r,

После чего перезапускаем службы:

/etc/init.d/rsysctl restart или /etc/init.d/rsyslog restart
/etc/init.d/bind9 restart
/etc/init.d/apache2 restart
/etc/init.d/dhcp3-server restart

Переходим к web интерфейсу - Настройка

http://billing.isp/ Login: admin Password: demo (Желательно сменить пароль)

1. Добавляем классы трафика.

Справочники ---> Классы трафика: 

№.0 Название класса: Интернет
№.1 Название класса: Локалка

2. Добавляем сети.

Справочники ---> Сети

Начальная ІР: 172.16.0.11 Последний ІР: 172.16.63.255
Тип сети: dhcpstatic
Network/CIDR: 172.16.0.0/18

Услуги.
Название услуги: Интернет

3. Создаём правило раздачи DHCP

Справочники ---> DHCP

Сеть: 172.16.0.0/18
Имя конфига DHCP: ethernet.conf
option domain-name "isp";
option domain-name-servers 172.16.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;

shared-network ourisp {
{SUBNETS}
}

Создаём безлимитный тариф.

Справочники ---> Тарифы
Создать новый тариф

Название тарифа: Unlim-1
Абонплата: 50
Предоплаченный трафик: 0
Подсчет трафика: up+down
Стоимость заморозки: 10
Цена не зависит от времени: Ставим галочку
Без порога: Ставим галочку

5. Делаем ограничение по скорости для нашего тарифа.

Справочники ---> Скорость тарифов

Делаем скоростные ограничения 1мб/c
Скорость загрузки: 1024
Скорость отгрузки: 1024

Добавляем наш будущий сервер доступа «NAS«

Справочники ---> Сервера доступа (NAS)

Сеть: 172.16.0.0/18
Тип сервера доступа: rscriptd
IP: 172.16.0.1
Имя сервера доступа: nas1
Ссылка на Bandwidthd: http://nas1.isp/

Скрипты автозапуска

Создаём файл в /etc/init.d/ и редактируем его

touch /etc/init.d/bil
chmod a+x /etc/init.d/bil
nano /etc/init.d/bil

Содержимое /etc/init.d/bil

#!  /bin/sh
# /etc/init.d/bil

########################################################################
######################## Конфигурация путей ############################

HTB="/etc/init.d/htb" #Путь к шейперу
IPT="/sbin/iptables" # Путь до IPTABLES
IPS="/usr/local/sbin/ipset" # Путь до IPSET
WAN_IP="ВАШ_ВНЕШНИЙ_IP" #IP адрес внешнего интерфейса
IF_WORLD="eth0" #Интерфейс смотрящий в грешный мир
SQL="/etc/init.d/mysql" # Путь до init.d скрипта MySQL
WEB="/etc/init.d/apache2" #  Путь до init.d скрипта Apache2
DHCP="/etc/init.d/dhcp3-server" # Путь до init.d скрипта Dhcp3-server
BAND="/etc/init.d/bandwidthd" # Путь до init.d скрипта Bandwindthd
STAR="/usr/sbin/stargazer" # Путь до bin файла stargazer
SOFTD="/etc/init.d/softflowd" #  Путь до init.d скрипта  Softflowd
#Softflowd для разных подсетей
SOFT="/usr/sbin/softflowd -i eth1 -n 127.0.0.1:42111" # Тут указываем интерфейс на котором висят пользователи (eth1)

########################################################################
# Что будет происходить и запускаться при старте: (Конфигурация запуска)
########################################################################
 case "$1" in
   start)

echo "###################################################################################"
echo "###################################################################################"
echo "########################### Запускаем Биллинговую систему #########################"
echo "###################################################################################"
echo "###################################################################################"

#Перезапускаем MySql, Apache, Dhcp3-server
$SQL restart
$WEB restart
$DHCP restart

######################################################################################

#Разрешаем хождение пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# Создаём списки для подсети: (172)
$IPS -N FFIN ipmap --network 172.16.0.0/18
$IPS -N FSNAT ipmap --network 172.16.0.0/18
$IPS -N FSNATDROP ipmap --network 172.16.0.0/18


#####################################
#				    #
#	Социальные запреты	    #
#				    #
#####################################

# Создание правил доступа к социальным сетям (разрешённые IP адреса)
$IPS -N WHITE iptree
	$IPS -A WHITE 172.16.0.30
        $IPS -A WHITE 172.16.0.38
        $IPS -A WHITE 172.16.0.39
        $IPS -A WHITE 172.16.0.41
        $IPS -A WHITE 172.16.0.42
        $IPS -A WHITE 172.16.0.43
        $IPS -A WHITE 172.16.0.44
        $IPS -A WHITE 172.16.0.45
        $IPS -A WHITE 172.16.0.46
        $IPS -A WHITE 172.16.0.51
        $IPS -A WHITE 172.16.0.64

#Адреса серверов социальных сетей:
	$IPS -N SOCIAL iptree
	$IPS -A SOCIAL 217.20.152.240
	$IPS -A SOCIAL 87.240.131.99
	$IPS -A SOCIAL 87.240.143.242
	$IPS -A SOCIAL 87.240.188.249
	$IPS -A SOCIAL 93.186.224.240
	$IPS -A SOCIAL 93.186.224.243

# Разрешаем Белому списку посейщать социальные сети
$IPT -t filter -A FORWARD -m set --set WHITE src -m set --set SOCIAL dst -j ACCEPT

# Запрещаем всем не вошедшим в белый список посейщать социальные сети
$IPT -t filter -A FORWARD -m set --set SOCIAL dst -j DROP



# Добавляем наши адреса в NAT таблицу
#(172)
$IPT -t nat -A POSTROUTING -m set --set FSNAT src -o $IF_WORLD -j SNAT --to-source $WAN_IP
$IPT -t filter -I FORWARD -m set --set FFIN src,dst -j ACCEPT
$IPT -t filter -I FORWARD -m set --set FFIN dst,src -j ACCEPT
$IPT -t filter -I FORWARD -m set --set FSNATDROP src,dst -j DROP
$IPT -t filter -I FORWARD -m set --set FSNATDROP dst,src -j DROP




############################################################################################

# Запускаем Bandwindthd
$BAND start

# Запускаем HTB (Шейпер)
$HTB start

# Запускаем прослушку Softflowd для (172)
$SOFT


# Запускаем Stargazer
$STAR

echo "###################################################################################"
echo "###################################################################################"
echo "#################################### Биллинг запущен ##############################"
echo "###################################################################################"
echo "###################################################################################"
     ;;





########################################################################################
########################################################################################
# Что будет происходить при остановке скрипта: (Конфигурация завершения работы биллинга)
########################################################################################

   stop)
echo "###################################################################################"
echo "###################################################################################"
echo "############################# Выключаем систему Биллинга ##########################"
echo "###################################################################################"
echo "###################################################################################"


#Убиваем все процессы старгазера
killall stargazer

#Удаляем правила шейпера
tc qdisc del dev eth1 root #(172)

#Останавливаем softflowd
$SOFTD stop

#Останавливаем Bandwindthd
$BAND stop

#Останавливаем шейпер HTB
$HTB stop



# Чистим правила в таблицах Iptables и удаляем списки IPSET

#(172)
$IPT -F
$IPT -F -t nat
$IPS -F FFIN
$IPS -X FFIN
$IPS -F FSNAT
$IPS -X FSNAT
$IPS -F FSNATDROP
$IPS -X FSNATDROP





# Удаляем конфигурацию доступа к социальным сетям
$IPS -X SOCIAL
$IPS -X WHITE

#Удаляем учётные записи с конфигурацией шейпера.
rm -rf /etc/stargazer/dn/*

echo "###################################################################################"
echo "###################################################################################"
echo "#################################### Биллинг выключен #############################"
echo "###################################################################################"     
echo "###################################################################################"

     ;;
   *)
     echo "Usage: /etc/init.d/billing {start|stop}"
     exit 1
     ;;
 esac

 exit 0

update-rc.d bil defaults

Теперь делаем рестарт и после него проверяем как всё запустилось

shutdown -r now

Скрипты OnConnect - OnDisconnect + Htb + IPSET

Скрипт OnConnect из стандартного набора ubilling совсем капельку отредактирован мной (путь к логам отредактирован, прежде чем копировать и вставлять убедитесь что вы создали все директории):

#!/bin/bash
#OnConnect
IFUP="eth1"
IFDOWN="eth1"


###########################
LOGIN=$1
IP=$2
CASH=$3
ID=$4
SPEED=`/etc/stargazer/GetSpeed $LOGIN`
UPSPEED=`/etc/stargazer/GetUpSpeed $LOGIN`
MAC=`/etc/stargazer/GetMac $LOGIN`
SCOUNT="Kbit"

IPT="/sbin/iptables"
IPS="/usr/local/sbin/ipset"
tc="/sbin/tc"
arpcmd="/usr/sbin/arp"
cur_date=`date \+\%Y.\%m.\%d`
cur_time=`date \+\%H:\%M:\%S`

# DELETE RULEZ
######################################################################
$IPT -t nat -D PREROUTING --src $IP --dst 0.0.0.0/0 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.1
$IPT -t filter -D INPUT -s $IP -j ACCEPT
while [ $? -eq 0 ]
do
$IPT -t filter -D INPUT -s $IP -j ACCEPT
done

$IPT -t filter -D FORWARD -s $IP -j ACCEPT
while [ $? -eq 0 ]
do
$IPT -t filter -D FORWARD -s $IP -j ACCEPT
done

$IPT -t filter -D FORWARD -d $IP -j ACCEPT
while [ $? -eq 0 ]
do
$IPT -t filter -D FORWARD -d $IP -j ACCEPT
done

$IPT -t filter -D OUTPUT -d $IP -j ACCEPT
while [ $? -eq 0 ]
do
$IPT -t filter -D OUTPUT -d $IP -j ACCEPT
done
#######################################################################

# fix user mac to ip
$arpcmd -d $IP $MAC
while [ $? -eq 0 ]
do
$arpcmd -d $IP $MAC
done
$arpcmd -s $IP $MAC

############################

declare -i mark1=$ID+101
declare -i mark2=$ID+4101

$IPT -t mangle -A FORWARD -d $IP -j MARK --set-mark $mark1
$IPT -t mangle -A FORWARD -s $IP -j MARK --set-mark $mark2


############################################
########## 1subnet
#Download
$tc class add dev $IFDOWN parent 1:1 classid 1:$mark1 htb rate $SPEED$SCOUNT
$tc filter add dev $IFDOWN parent 1: protocol ip prio 3 handle $mark1 fw classid 1:$mark1

#Upload
$tc class add dev $IFUP parent 1:1 classid 1:$mark2 htb rate $UPSPEED$SCOUNT
$tc filter add dev $IFUP parent 1: protocol ip prio 3 handle $mark2 fw classid 1:$mark2
#############################################



## Интернет для (172)
$IPS -D FSNATDROP $IP
while [ $? -eq 0 ]
do
$IPS -D FSNATDROP $IP
done
$IPS -A FFIN $IP
$IPS -A FSNAT $IP


#
################################################

# DAY/NIGHT switcher
/bin/echo $SPEED:`expr $ID + 4101` > /etc/stargazer/dn/$LOGIN


# ADD TO LOG
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

Скрипт OnDisconnect из стандартного набора ubilling совсем капельку отредактирован мной (путь к логам отредактирован, прежде чем копировать и вставлять убедитесь что вы создали все директории):


#!/bin/bash
# OnDisconnect
IFUP="eth1"
IFDOWN="eth1"

LOGIN=$1
IP=$2
CASH=$3
ID=$4
SPEED=`/etc/stargazer/GetSpeed $LOGIN`
UPSPEED=`/etc/stargazer/GetUpSpeed $LOGIN`
SCOUNT="Kbit"

IPT="/sbin/iptables"
IPS="/usr/local/sbin/ipset"
tc="/sbin/tc"


# TIME FORMAT
cur_date=`date \+\%Y.\%m.\%d`
cur_time=`date \+\%H:\%M:\%S`

# DELETE RULEZ  IPT
######################################################################
$IPT -t filter -D INPUT -s $IP -j ACCEPT
while [ $? -eq 0 ]
do
$IPT -t filter -D INPUT -s $IP -j ACCEPT
done

$IPT -t filter -D FORWARD -s $IP -j ACCEPT
while [ $? -eq 0 ]
do
$IPT -t filter -D FORWARD -s $IP -j ACCEPT
done

$IPT -t filter -D FORWARD -d $IP -j ACCEPT
while [ $? -eq 0 ]
do
$IPT -t filter -D FORWARD -d $IP -j ACCEPT
done

$IPT -t filter -D OUTPUT -d $IP -j ACCEPT
while [ $? -eq 0 ]
do
$IPT -t filter -D OUTPUT -d $IP -j ACCEPT
done

#########################

declare -i mark1=$ID+101
declare -i mark2=$ID+4101


if [ -n "$mark1" ]
then
    $IPT -t mangle -D FORWARD -d $IP -j MARK --set-mark $mark1
    while [ $? = 0 ]
    do
            $IPT -t mangle -D FORWARD -d $IP -j MARK --set-mark $mark1
    done
fi

if [ -n "$mark2" ]
then
    $IPT -t mangle -D FORWARD -s $IP -j MARK --set-mark $mark2
    while [ $? = 0 ]
    do
            $IPT -t mangle -D FORWARD -s $IP -j MARK --set-mark $mark2
    done
fi

#############################################################################

#Download
$tc filter del dev $IFDOWN parent 1: protocol ip prio 3 handle $mark1 fw classid                                                                              1:$mark
$tc class del dev $IFDOWN parent 1:1 classid 1:$mark1 htb rate $SPEED$SCOUNT

#Upload
$tc filter del dev $IFUP parent 1: protocol ip prio 3 handle $mark2 fw classid 1                                                                             :$mark1
$tc class del dev $IFUP parent 1:1 classid 1:$mark2 htb rate $UPSPEED$SCOUNT

############################################################################


## Отключить интернет (172)
$IPS -D FFIN $IP
while [ $? -eq 0 ]
do
$IPS -D FFIN $IP
done
$IPS -D FSNAT $IP
while [ $? -eq 0 ]
do
$IPS -D FSNAT $IP
done
$IPS -A FSNATDROP $IP


############################################################################


$IPT -t nat -A PREROUTING --src $IP --dst 0.0.0.0/0 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.1



# DAY/NIGHT switcher
/bin/rm /etc/stargazer/dn/$LOGIN


echo "$cur_date $cur_time DISCONNECT: ID-$ID;LOGIN-$LOGIN;IP-$IP;CASH-$CASH" >> /etc/stargazer/log/allconnect.log

Пробуем стартовать

Для начала остановим систему через скрипт bil:

/etc/init.d/bil stop

Ну а теперь запустим эту систему:

/etc/init.d/bil start

В теории всё должно работать.

Приколюхи от Ubilling:

колонка «онлайн» с модными звёздочками

1. Лезем в конфиг /var/www/billing/config/alter.ini и редактируем:

DN_ONLINE_DETECT=1

2. Убеждаемся что в скриптах OnConnect/OnDisconnect есть подобное: OnConnect

/bin/echo $SPEED:`expr $ID + 4101` > /etc/stargazer/dn/$LOGIN

OnDisconnect

/bin/rm /etc/stargazer/dn/$LOGIN

3. Делаем симлинк на папку:

ln -fs /etc/stargazer/dn/ /var/www/billing/content/dn

4. Радуемся звёздочкам =)

Мой alter.ini

;Опции поиска новых MAC адресов
;Если у вас в сети используються только статические пулы хостов DHCP переменная NMLEASES должна выглядеть как /var/log/messages, или как /var/db/dhcpd/dhcpd.leases или /var/log/dhcpd.log в случае раздачи динамикой не привязываясь к маку, ну либо вы выдаете неизвестным пользователям IP адреса из другой сети с заворотом на страницу с уведомлением. 
NMLEASES = /var/log/dhcpd.log

;Показывать неизвестные МАС адреса в диалоге смены МАС 
NMLEASEMARK="DHCPDISCOVER"

;Показывать неизвестные МАС адреса в диалоге смены МАС 
NMREP_INMACCHG=1

Отображать новые MAC адреса в виде выпадающего списка 
SIMPLENEWMACSELECTOR=1

;Подгружать плагины профиля пользователя
PROFILE_PLUGINS=1

;Показывать название населенного пункта в адресных полях
CITY_DISPLAY=1

;Рассматривать квартиру с нулевым номером как частный дом 
ZERO_TOLERANCE=1

;Поддержка работы с доксис модемами 
DOCSIS_SUPPORT=0

;Идентификатор сети модемов 
DOCSIS_MODEM_NETID=2

; Пути к исходным и скомпилированным конфигам модемов 
docsis_cm_source=multinet/cm_source/
docsis_cm_bin=multinet/cm_bin/

;Присваивание контрагентам улиц 
AGENTS_ASSIGN=1

; Включать експорт оплат? (например в 1С) 
EXPORT_ENABLED=1

;Идентификатор предпринимателя по умолчанию (используется если не присвоена улица либо вообще отключено присваивание улиц 
;множественным контрагентам) 
DEFAULT_ASSIGN_AGENT=1

;Время начала и конца суток 
EXPORT_FROM_TIME=00:00:00
EXPORT_TO_TIME=23:59:59

;Формат експорта 
EXPORT_FORMAT=xml

; Експортировать только положительные оплаты? 
EXPORT_ONLY_POSITIVE=1

;Шаблоны експорта 
EXPORT_TEMPLATE=config/1c.xml
EXPORT_TEMPLATE_HEAD=config/head-1c.xml
EXPORT_TEMPLATE_END=config/end-1c.xml

;Входная и выходная кодировки експорта
EXPORT_ENCODING=utf-8
IMPORT_ENCODING=utf-8

;Отображение трафика, может принимать значения: «float», «b», «Kb», «Mb», «Gb», «Tb» (Без кавычек) 
TRAFFSIZE= Gb

;Производить ли ресет пользователя при смене тарифа 
TARIFFCHGRESET=1

;Прятать ли пароли из административного интерфейса?
PASSWORDSHIDE=0

;Определять онлайновость исходя из содержимого /content/dn ?
DN_ONLINE_DETECT=0

;Человеко-читаемая трансляция имен сервисов в отчетах о оплатах 
TRANSLATE_PAYMENTS_NOTES=0

;Подсвечивать «важные» поля профиля 
HIGHLIGHT_IMPORTANT=1

;Генерировать nmchange.sh при посещении отчета по тарифам 
NMCHANGE=0

;Подсвечивать строки в модуле «Онлайн» 
ONLINE_LIGHTER=1

;Включить поддержку OpenPayz?
OPENPAYZ_SUPPORT=0

;Ручной режим OpenPayz 
OPENPAYZ_MANUAL=1

;ID типа платежа под с которым будут вноситься оплаты в ручном режиме 
OPENPAYZ_CASHTYPEID=1

;Подсветка сегодняшних оплат 
HIGHLIGHT_TODAY_PAYMENTS=1

;Включение расширенных фильтров в модуле «Онлайн», например, теперь можно найти всех Варфоломеев проживающих на улице Ленина 
ONLINE_FILTERS_EXT=1

;При удалении пользователя не трогать его договор в целях обеспечения уникальности
STRICT_CONTRACTS_PROTECT=1

;Контролировать ли уникальность номера договора? 
STRICT_CONTRACTS_UNIQUE=1

;Включена ли поддержка учета КТВ? 
CATV_ENABLED=0

;Показывать ли колонку LAT в модуле «Онлайн»? 
ONLINE_LAT=1

;Включить массовую рассылку сообщений авторизаторам при помощи stargazer? 
MASSSEND_ENABLED=1

;Использовать ли рассылку хелпдеском вместо использования механики рассылки stargazer? 
MASSSEND_SAFE=1

; Максимально допустимый уровень кредита, возможны значения от 0 до «много-много», DISABLED если не лимитируем.
STRICT_CREDIT_LIMIT=DISABLED

; Включено ли связывание пользователей (ака корпоративные пользователи)? 
USER_LINKING_ENABLED=1

; Поле для связывания (IP, login… или еще какое-то) 
USER_LINKING_FIELD="IP"

;ID доп. поля профиля по которому определяется факт связанности
USER_LINKING_CFID=24

; Репликация тарифа родительского пользователя на дочерних 
USER_LINKING_TARIFF=1

; Репликация денежных операций родительского пользователя на дочерних 
USER_LINKING_CASH=1

;  Репликация кредита родительского пользователя на дочерних 
USER_LINKING_CREDIT=1

;Путь к логфайлу stargazer 
STG_LOG_PATH=/etc/stargazer/log/stargazer.log

;Путь к arping 
ARPING=/usr/sbin/arping

;Интерфейс с которого будет производиться arping 
ARPING_IFACE=-i vlan101

;Включать ли модуль ARPdiag? Имеет смысл если используется статическая адресация а также arpwatch
ARPDIAG_ENABLED=1

;Путь к логу arpwatch 
ARPDIAG_LOG=/var/log/messages

;Опция отвечающая за то, какие таблички должны быть исключены при бекапе БД 
NOBACKUPTABLESLIKE=logs_,detailstat,weblogs

;Может ли пользователь изменять размер иконок в панели задач?
TB_ICONCUSTOMSIZE=1

;Генерировать рандомный MAC в диалоге ручной смены MAC? 
MACCHANGERANDOMDEFAULT=1

; Если значение установлено в 1 - будет вызван ресет пользователя при изменении любого кастомного поля профиля
RESETONCFCHANGE=1
RESETONTAGCHANGE=1

; Показывать ли уведомление о новых тикетах в «Панели задач»? 
TB_NEWTICKETNOTIFY=1

Включен ли импорт банковских выписок? 
BS_ENABLED=1

;Входная и выходная кодировки банковских выписок, в норме может потребоваться модификация только входной.
BS_INCHARSET="cp866"
BS_OUTCHARSET="utf-8"

;Опции импорта банковских выписок (черная магия, руками не трогать) 
BS_OPTIONS="|,13,3,4,5"

;Тип оплат для денег разнесенных автоматом по выпискам 
BS_CASHTYPE=1

;Режим высокой производительности модуля «Онлайн»: Ajax, отложенный рендеринг, 
;максимально урезанный функционал. Неплохо работает при абонбазах 10-60к абонентов,
;не вызывая своим видом возрастания нагрузки на сервер, как и коллапса браузера 
ONLINE_HP_MODE=1

; Запрет на редактирование логинов-паролей-айпишек при регистрации, рекомендуется включить и не трогать руками
SAFE_REGMODE=1

;Количество тикетов на стриницу в хелпдеске
TICKETS_PERPAGE=50

;Включен ли учет НДС? 
NDS_ENABLED=0

;ID тега обозначающего пользователя плательщика НДС 
NDS_TAGID=9

;Процентная ставка НДС 
NDS_TAX_PERCENT=20

;Дополнительные ссылки к «Финансовым операциям» из модуля онлайн и результатов поиска 
FAST_CASH_LINK=0

;Включен ли мониторинг сигнала на Mikrotik? 
MTSIGMON_ENABLED=0

;Используется ли сервис приема заявок на подключение? 
SIGREQ_ENABLED=0

;Время в минутах по прошествию которого все свитчи будут перепинговываться. 
SW_PINGTIMEOUT=2

;Включен ли показ непингнувшихся свитчей на панели задач? 
TB_SWITCHMON=1

;Включено ли API удаленного вызова пароцедур? 
REMOTEAPI_ENABLED=1 

;Включена ли поддержка шаблонизации аттрибутов Radius? 
RADIUST_ENABLED=0

Источники и автор статьи:

Основные источники информации которые помогли написать эту инструкцию:

local.com.ua

wiki.ubilling.net.ua

habrahabr.ru

Автор инструкции: Сергей - Mescaline ©

setupubuntuserver1010.txt · Последние изменения: 2013/02/25 10:55 — mescaline
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki