Инструменты пользователя

Инструменты сайта


setupubuntuserver1010

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
setupubuntuserver1010 [2013/02/25 10:54]
mescaline [Установка и настройка Htb]
setupubuntuserver1010 [2013/02/25 10:55] (текущий)
mescaline [Установка и настройка Htb]
Строка 1: Строка 1:
 +**Установка Stargazer+Ubilling на Ubuntu Server 10.10**
 +
 +====== Установка требуемого внешнего ПО на сервер с Ubilling ======
 +
 +<​code>​
 +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
 +</​code>​
 +При установке программ вас попросят ввести пароль для root от mysql.
 +
 +
 +**Включаем мод в php:**
 +<​code>​a2enmod php5</​code>​
 +
 +**Редактируем /​etc/​sudoers**
 +<​code>​
 +User_Alias BILLING = www-data
 +BILLING ​         ALL = NOPASSWD: ALL
 +</​code>​
 +
 +
 +**Делаем симлинк на Bandwindthd**
 +<​code>​
 +ln -fs /​var/​lib/​bandwidthd/​htdocs/​ /​var/​www/​band
 +</​code>​
 +
 +
 +======= Установка IPSET  =======
 +
 +**1. Качаем архив IPSET 4.x версии он нормально работает на Maverick (в последних версиях 12.04 можно установить через apt-get install ipset)**
 +[[http://​ipset.netfilter.org/​install.html]]
 +
 +**2. Распаковываем:​ **
 +<​code>​tar -xf ipset-4.5.tar.bz2</​code>​
 +
 +**3. Заходим в папку собираем и включаем:​**
 +<​code>​
 +cd ipset-4.5/
 +
 +make && make install && make clean
 +
 +depmod && depmod -A
 +modprobe ip_set
 +</​code>​
 +Всё должно пройти без ошибок. ​
 +
 +И собственно всё.. Ipset уже готов служить вам =)
 +
 +======= Установка и настройка Htb =======
 +
 +0. Качаем Htb: [[http://​sourceforge.net/​projects/​htbinit/​]]
 +
 +1. В скрипте htb.init проверяем и корректируем по вкусу переменные HTB_PATH, HTB_CACHE, TC, IP, MP.
 +
 +2. <​code>​cp htb.init /​etc/​init.d/​htb</​code> ​ и делаем <​code>​update-rc.d htb defaults</​code>​
 +
 +3. cd /​etc/​sysconfig/​htb <​code> ​
 +touch eth0
 +touch eth1
 +touch eth0-2.root
 +touch eth1-2.root
 +</​code>​
 +
 +
 +nano eth0 <​code> ​
 +DEFAULT=0
 +R2Q=100
 +</​code>​
 +
 +nano eth1 
 +<​code>​
 +DEFAULT=0
 +R2Q=100
 +</​code>​
 +
 +nano eth0-2.root
 +<​code>​
 +RATE=100Mbit
 +CEIL=100Mbit
 +</​code>​
 +
 +nano eth1-2.root
 +<​code>​
 +RATE=100Mbit
 +CEIL=100Mbit
 +</​code>​
 +
 +**Проверить работу скрипта htb.init, кроме спидтестов,​ можно просмотром конфигурации командами:​**
 +<​code>​
 +tc class show dev ВАШ_ИНТЕРФЕЙС
 +tc qdisc show dev ВАШ_ИНТЕРФЕЙС
 +</​code>​
 +
 +
 +
 +======= Установка Stargazer =======
 +<​code>​
 +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
 +</​code>​
 +
 +
 +
 +
 +======= Редактирование конфигов и настройка опций =======
 +
 +
 +**Редактируем конфиг /​etc/​stargazer/​stargazer.conf**
 +__Вот здесь очень сомнительное место. Возможно стоит его не рассматривать.__
 +Сделайте симлинк на cap_nf и remote_script из /​etc/​stargazer/​conf-available.d/​ в /​etc/​stargazer/​conf-enabled.d/​
 +и желательно удалить линк на cap_ether говорят он не вменяемый =)
 +И давайте сразу создадим директорию под логи - для удобства:​
 +
 +<​code>​
 +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/​
 +</​code>​
 +__
 +Конец сомнительного места.__
 +
 +<​code>​
 +################################################################################​
 +#                        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>​
 +
 +
 +
 +
 +</​code>​
 +
 +
 +
 +**Редактируем конфиг /​etc/​stargazer/​rules**
 +<​code>​
 +
 +ALL     ​172.16.0.0/​18 ​  DIR1
 +ALL     ​0.0.0.0/​0 ​      DIR0
 +
 +</​code>​
 +
 +
 +**И так первый запуск stargazer'​a:​**
 +<​code>​stargazer</​code>​
 +
 +**Теперь проверим создались ли базы в MySQL**
 +<​code>​mysql -u root -p stg -e "SHOW TABLES"</​code>​
 +
 +В ответ должны увидеть это:
 +<​code>​
 +Tables_in_stg
 +
 +admins
 +messages
 +stat
 +tariffs
 +users
 +</​code>​
 +
 +
 +**Выключаем stargazer:​**
 +<​code>​killall stargazer</​code>​
 +
 +**Теперь можно приступить к установке Ubilling'​a**
 +
 +<​code>​cd /var/www/
 +mkdir billing
 +cd billing
 +wget http://​ubilling.net.ua/​ub.tgz
 +tar zxvf ub.tgz
 +</​code>​
 +
 +**Тут у меня возникала проблема с правами на файлы..**
 +<​code>​
 +chmod -R 0777 content/ config/ multinet/ exports/ remote_nas.conf vservices.php
 +</​code>​
 +
 +
 +**Заливаем дамп mysql из ubilling:**
 +<​code>​cat /​var/​www/​billing/​docs/​test_dump.sql | mysql -u root -p stg</​code>​
 +
 +**Проверяем что дамп залит:​**
 +<​code>​mysql -u root -p stg -e "SHOW TABLES"</​code>​
 +В ответ увидим много таблиц:​
 +<​code>​
 ++-----------------+
 +| 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 |
 ++-----------------+
 +</​code>​
 +
 +**Редактируем конфиг в ubilling: /​var/​www/​billing/​config/​mysql.ini**
 +
 +<​code>​
 +;Хост БД
 +server = "​localhost"​
 +;порт MySQL
 +port = "​3306"​
 +;логин пользователя MySQL
 +username = "​root"​
 +;его пароль
 +password = "​ваш_пароль"​
 +;имя базы
 +db = "​stg"​
 +character = "​UTF8"​
 +prefix = "​billing"</​code>​
 +
 +**Редактирем конфиг в ubilling /​var/​www/​billing/​config/​billing.ini**
 +<​code>​
 +; метод взаимодействия со 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
 +
 +</​code>​
 +
 +
 +**Не забываем указать путь на будующий "​лог файл"​ от dhcpd /​var/​www/​billing/​config/​alter.ini**
 +<​code>​NMLEASES = /​var/​log/​dhcpd.log
 +</​code>​
 +
 +
 +**Создаём симлинки на каталог и файл - без них ни чего не заработает =)**
 +<​code>​
 +ln -fs /​var/​www/​billing/​multinet/​ /​etc/​dhcp3/​multinet
 +ln -fs /​var/​www/​billing/​remote_nas.conf /​etc/​stargazer/​remote_nas.conf
 +</​code>​
 +
 +
 +
 +**Копируем стандартные скрипты из Ubilling в stargazer и выставляем на них права.**
 +<​code>​
 +cp -f /​var/​www/​billing/​docs/​presets/​Linux/​etc/​* /​etc/​stargazer/​
 +chmod a+x /​etc/​stargazer/​*
 +</​code>​
 +
 +
 +**Редактируем /​etc/​stargazer/​config для подключения к базе stg**
 +<​code>​
 +host = localhost
 +username = root
 +password = ваш_проль
 +database = stg
 +</​code>​
 +
 +
 +
 +**Запускаем stargazer**
 +<​code>​stargazer</​code>​
 +
 +
 +
 +
 +====== Создание зоны .isp, редактирование хостов и DHCP ======
 +
 +** Редактируем файл /​etc/​bind/​named.conf **
 +<​code>​
 +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";​
 +};
 +
 +</​code>​
 +
 +
 +**Создаём файл и редактируем его**
 +<​code>​
 +cd /etc/bind/
 +touch db.isp
 +nano db.isp
 +</​code>​
 +
 +
 +**Содержимое /​etc/​bind/​db.isp**
 +<​code>​
 +$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
 +
 +</​code>​
 +
 +** Редактируем /​etc/​bind/​named.conf.options **
 +<​code>​
 +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";​};​
 +};
 +
 +</​code>​
 +
 +
 +**Настройка хостов в Apache2 /​etc/​apache2/​site-enabled/​000-default -Приводим содержимое в данный вид:**
 +<​code>​
 +<​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>​
 +</​code>​
 +
 +**Настройка DHCP
 +Чтобы dhcp заработал нужно отредактировать /​etc/​default/​dhcp3-server**
 +<​code>​
 +INTERFACES="​eth1"​
 +</​code>​
 +Это интерфейс на котором у нас в дальнейшем будут раздаваться IP адреса для абонентов.
 +
 +
 +**Редактируем /​etc/​dhcp3/​dhcpd.conf**
 +<​code>​
 +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";​
 +}
 +}
 +</​code>​
 +
 +
 +**Для того чтобы логировать не известные МАК'​и настрим логирование /​etc/​rsysctl.conf или он может называться /​etc/​sysctl.conf Сталкивался с разным названием)) :**
 +<​code>​
 +!dhcpd
 + ​*.* ​                      /​var/​log/​dhcpd.log
 +</​code>​
 +
 +
 +** Делаем шаманское движение,​ без которого в Ubuntu у вас не получится заставить dhcpd юзать каталог multinet **
 +
 +Редактируем nano /​etc/​apparmor.d/​usr.sbin.dhcpd3
 +Добавляем туда следующее:​
 +<​code>​
 +/​var/​www/​billing/​multinet/​ r,
 +/​var/​www/​billing/​multinet/​** r,
 +</​code>​
 +
 +
 +**После чего перезапускаем службы:​**
 +<​code>​
 +/​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
 +</​code>​
 +
 +
 +
 +
 +
 +
 +======= Переходим к web интерфейсу - Настройка =======
 +
 +**
 +http://​billing.isp/​
 +Login: admin Password: demo (Желательно сменить пароль)**
 +
 +
 +**1. Добавляем классы трафика.**
 +<​code>​
 +Справочники ---> Классы трафика: ​
 +
 +№.0 Название класса:​ Интернет
 +№.1 Название класса:​ Локалка
 +</​code>​
 +
 +
 +**2. Добавляем сети.**
 +<​code>​
 +Справочники ---> Сети
 +
 +Начальная ІР: 172.16.0.11 Последний ІР: 172.16.63.255
 +Тип сети: dhcpstatic
 +Network/​CIDR:​ 172.16.0.0/​18
 +
 +Услуги.
 +Название услуги:​ Интернет
 +</​code>​
 +
 +
 +**3. Создаём правило раздачи DHCP**
 +<​code>​
 +Справочники ---> DHCP
 +
 +Сеть: 172.16.0.0/​18
 +Имя конфига DHCP: ethernet.conf
 +</​code>​
 +<​code>​
 +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}
 +}
 +</​code>​
 +
 +
 +
 +**Создаём безлимитный тариф.**
 +<​code>​
 +Справочники ---> Тарифы
 +Создать новый тариф
 +
 +Название тарифа:​ Unlim-1
 +Абонплата:​ 50
 +Предоплаченный трафик:​ 0
 +Подсчет трафика:​ up+down
 +Стоимость заморозки:​ 10
 +Цена не зависит от времени:​ Ставим галочку
 +Без порога:​ Ставим галочку
 +</​code>​
 +
 +
 +**5. Делаем ограничение по скорости для нашего тарифа.**
 +<​code>​
 +Справочники ---> Скорость тарифов
 +
 +Делаем скоростные ограничения 1мб/c
 +Скорость загрузки:​ 1024
 +Скорость отгрузки:​ 1024
 +</​code>​
 +
 +
 +**Добавляем наш будущий сервер доступа "​NAS"​**
 +<​code>​
 +Справочники ---> Сервера доступа (NAS)
 +
 +Сеть: 172.16.0.0/​18
 +Тип сервера доступа:​ rscriptd
 +IP: 172.16.0.1
 +Имя сервера доступа:​ nas1
 +Ссылка на Bandwidthd: http://​nas1.isp/​
 +</​code>​
 +
 +======= Скрипты автозапуска =======
 +
 +** Создаём файл в /​etc/​init.d/​ и редактируем его**
 +<​code>​
 +touch /​etc/​init.d/​bil
 +chmod a+x /​etc/​init.d/​bil
 +nano /​etc/​init.d/​bil
 +</​code>​
 +
 +** Содержимое /​etc/​init.d/​bil **
 +<​code>​
 +
 +#!  /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
 +
 +
 +</​code>​
 +
 +
 +<​code>​update-rc.d bil defaults</​code>​
 +
 +
 +
 +**Теперь делаем рестарт и после него проверяем как всё запустилось**
 +<​code>​
 +shutdown -r now
 +</​code>​
 +
 +
 +
 +
 +
 +======= Скрипты OnConnect - OnDisconnect + Htb + IPSET =======
 +
 +** Скрипт OnConnect из стандартного набора ubilling совсем капельку отредактирован мной (путь к логам отредактирован,​ прежде чем копировать и вставлять убедитесь что вы создали все директории):​ **
 +<​code>​
 +
 +#!/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
 +
 +</​code>​
 +
 +
 +
 +
 +
 +** Скрипт OnDisconnect из стандартного набора ubilling совсем капельку отредактирован мной (путь к логам отредактирован,​ прежде чем копировать и вставлять убедитесь что вы создали все директории):​ **
 +<​code>​
 +
 +
 +#!/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
 +
 +</​code>​
 +
 +
 +
 +
 +======= Пробуем стартовать =======
 +Для начала остановим систему через скрипт bil:
 +<​code>​
 +/​etc/​init.d/​bil stop
 +</​code>​
 +
 +Ну а теперь запустим эту систему:​
 +<​code>​
 +/​etc/​init.d/​bil start
 +</​code>​
 +
 +В теории всё должно работать.
 +
 +
 +======= Приколюхи от Ubilling: =======
 +
 +
 +** колонка "​онлайн"​ с модными звёздочками **
 +
 +1. Лезем в конфиг /​var/​www/​billing/​config/​alter.ini и редактируем:​
 +<​code>​
 +DN_ONLINE_DETECT=1
 +</​code>​
 +
 +2. Убеждаемся что в скриптах OnConnect/​OnDisconnect есть подобное:​
 +OnConnect
 +<​code>​
 +/bin/echo $SPEED:​`expr $ID + 4101` > /​etc/​stargazer/​dn/​$LOGIN
 +</​code>​
 +
 +OnDisconnect
 +<​code>​
 +/bin/rm /​etc/​stargazer/​dn/​$LOGIN
 +</​code>​
 +
 +
 +
 +3. Делаем симлинк на папку:
 +<​code>​
 +ln -fs /​etc/​stargazer/​dn/​ /​var/​www/​billing/​content/​dn
 +</​code>​
 +
 +4. Радуемся звёздочкам =)
 +
 +======= Мой alter.ini =======
 +<​code>​
 +
 +;Опции поиска новых 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
 +
 +
 +</​code>​
 +
 +======= Источники и автор статьи:​ =======
 +
 +
 +**Основные источники информации которые помогли написать эту инструкцию:​**
 +
 +local.com.ua
 +
 +wiki.ubilling.net.ua
 +
 +habrahabr.ru
 +
 +
 +**Автор инструкции:​** [[http://​local.com.ua/​forum/​user/​19095-mescaline/​|Сергей - Mescaline ]](c)
  
setupubuntuserver1010.txt · Последние изменения: 2013/02/25 10:55 — mescaline