Користувальницькькі налаштування

Налаштування сайту


Сайдбар

Розділи

Загальний опис
Історія змін
Рекомендації до оновлення
Плани на майбутнє
Відомі проблеми
Онлайн демо
Допомога проекту
Люди
Трохи про безпеку

FAQ



Редагувати сайдбар

setupubuntuserver1010

Це стара версія документу!


Установка 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.1664019551.txt.gz · Востаннє змінено: 2022/09/24 14:39 повз 127.0.0.1