Біллінг abills на Ubuntu server

Практично, більшість послуг, що надаються провайдерами або сервісами, потребує присутності системи автоматизованого обліку витрачених ресурсів. Сьогодні є велика кількість білінг-систем, як платних, так і безкоштовних, що розповсюджуються під вільною ліцензією. Деякі їх орієнтовані суворо певний сервіс, інші рішення багатофункціональні. Система білінгу ABillS відноситься до класу програм all-in-one.

Можливості ABillS

Установка FreeRADIUS

Почнемо з встановлення FreeRADIUS, який відповідає за передачу інформації між програмами-сервісами та системою білінгу, забезпечуючи три А (Авторизацію, Аутентифікацію, Акаунтинг). У репозитаріях переважної більшості дистрибутивів він присутній, тому:

sudo apt-get install freeradius radiusclient1

У своїй роботі FreeRADIUS використовує кілька конфігураційних файлів, що знаходяться в каталозі /etc/freeradius (залежно від виду установки чи дистрибутива може бути /etc/raddb). Усі їх чіпати не потрібно, достатньо змінити кілька параметрів. Почнемо з radiusd.conf, в якому виконуються загальні налаштування сервера.

sudo mcedit /etc/freeradius/radiusd.conf

Дані про користувачів записуються у файл /etc/freeradius/users, у ньому необхідно підправити відповідний параметр так, щоб за це відповідав скрипт ABillS.

DEFAULT Acct-Status-Type == Alive Exec-Program = "/usr/abills/libexec/racct.pl"

DEFAULT Acct-Status-Type == Stop Exec-Program = "/usr/abills/libexec/racct.pl"

Тепер перевіряємо правильність заповнення конфігураційного файлу:

check-radiusd-config -рівень 345 radiusd on Radius server configurationlooks OK.

Якщо все нормально, запускаємо сервер у режимі налагодження «radiusd –X » і переходимо до наступного кроку.

Налаштування MySQL

Далі нам буде потрібна робоча СУБД MySQL, тому перейдемо до її встановлення. Якщо вона є, цей крок можна пропустити.

sudo apt-get install mysql-server mysql-client

У нашому випадку білінг і м'яз знаходяться на одному вузлі, тому цього достатньо. Якщо використовується інший сервер, не забудь змінити значення тут. Запускаємо MySQL:

sudo /etc/init.d/mysql start

Наступний крок: у mysql створюємо користувачаabills з паролемpassword та базу данихabills :

mysql -u root -p mysql> use mysql; Database changed

mysql>INSERT INTO user (Host, User, Password) VALUES ('localhost','abills', password('password')); mysql>INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Index_priv, Alter_priv, Lock_tables_priv, Create_tmp_ 'abills', 'abills', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y' ); mysql>CREATE DATABASE abills; mysql>flush privileges; mysql> quit

Для зручності ці команди можна винести у текстовий файл та завантажити через консоль. Тепер копіюємо із сайту проекту останню версію ABills, розпаковуємо:

cd /usr $ tar xzvf abills-0.37.tgz $ cd abills

Усередині знаходиться шаблон таблиць бази даних, завантажуємо його:

mysql -D abills -u root -p

Все, SQL'ні розбирання закінчено.

Встановлення Apache

Для коректної роботи ABillS апач повиненбути зібраний за допомогою mod_rewrite, тобто при ручному складанні індіанця використовуємо:

./configure –enable-rewrite=shared

При встановленні з репозитарію, жодних додаткових рухів тіла не потрібно:

sudo apt-get install apache2 $ cat /etc/apache2/mods-available/rewrite.load LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

Тільки за замовчуванням він вимкнений, не забудь увімкнути:

sudo a2enmod rewrite Module rewrite installed; run /etc/init.d/apache2 force-reload to enable.

Для налаштування веб-сервера до дистрибутиву ABillS входить конфіг /usr/abills/misc/abills_httpd.conf, який підключає потрібні каталоги як віртуальний сервер. Щоб встановити, достатньо ввести команду:

sudo sh -c cat /usr/abills/misc/abills_httpd.conf >> \ /etc/apache2/apache2.conf»

Але без виправлення працювати він не буде. На його основі можна створити свій файл:

sudo mcedit /etc/apache2/apache2.conf

# Підключаємо інтерфейс користувача Alias ​​/abills «/usr/abills/cgi-bin/» RewriteEngine on RewriteCond % ^(.*) RewriteRule ^(.* ) – [E=HTTP_CGI_AUTHORIZATION:%1] Options Indexes ExecCGI SymLinksIfOwnerMatch …

# Інтерфейс адміністратора AddHandler cgi-script .cgi Options Indexes ExecCGI FollowSymLinks AllowOverride none 1. Дивимося, від імені якого користувача працює веб-сервер, і встановлюємо потрібні права доступу на каталоги:

grep User /etc/apache2/apache2.conf User www-data
sudo chown -Rf www-data /usr/abills/cgi-bin sudo chown -Rf www-data /usr/abills/Abills/templates

Каталогbackup призначений для зберігання архіву БД, за замовчуванням він не створюється, але для роботи дуже бажаний:

sudo mkdir /usr/abills/backup sudo chown -Rf www-data /usr/abills/backup

І перезапускаємо апач командою "/etc/init.d/apache2 restart ".

Останні налаштування

Для коректної роботи потрібно кілька Perl модулів, в документації проекту пропонується завантажувати їх з CPAN:

sudo perl -MCPAN -e shell cpan> install DBI cpan> install DBD::mysql cpan> install Digest::MD5 cpan> install Digest::MD4 cpan> install Crypt::DES cpan> install Digest::SHA1 cpan> install Bundle::libnet cpan> install Time::HiRes cpan> quit

Загалом потрібні не всі зазначені модулі. Так libnet знадобиться тільки в тому випадку, якщо планується використовувати базу паролів Unix, а Time-HiRes лише для тестування швидкості. Напевно, у репозитарії твого дистрибутива основні модулі теж є. У Ubuntu використовуємо команду:

sudo apt-get install libdbi-perl libdbd-mysql-perl libmd5-perl \ libdigest-md4-perl libdigest-sha1-perl libcrypt-des-perl

Тепер переходимо безпосередньо до налаштування ABillS. В архіві є шаблон файлу конфігурації, перейменовуємо його і приступаємо до налаштувань:

sudo cp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl

Всі параметри чіпати не будемо, тільки найнеобхідніші та найцікавіші, інші поки що можна залишити в значеннях за замовчуванням.

sudo mcedit /usr/abills/libexec/config.pl

І /etc/crontab вставляємо код, необхідний для періодичного запуску скриптів:

*/5 * * * * root /usr/abills/libexec/billd -all 1 0 * * * root /usr/abills/libexec/periodic daily 1 0 * * * root /usr/abills/ libexec/periodic monthly

На цьому налаштування ABillS закінчено.

Встановлюємо PPPoE

Наприклад спробуємо підключити ABillS до PPPoE-серверу, це найпростіший, але водночас і затребуваний варіант. Встановимо пакет pppoe, решта компонентів вже є в системі:

sudo apt-get install pppoe

Перевіряємо, чи завантажені необхідні модулі:

lsmod grep ppp pppoe 15680 2 pppox 4872 1 pppoe ppp_generic 29332 6 pppoe,pppox slhc 7552 1 ppp_generic

Якщо висновок нічого не показує, завантажуємо "modprobe pppoe". Записуємо у файл /etc/ppp/options рядок "plugin rp-pppoe.so". За налаштування PPPoE-сервера відповідає файл /etc/ppp/pppoe-server-options, в Ubuntu його немає, тому створюємо:

sudo mcedit /etc/ppp/pppoe-server-options

Запускаємо PPPoE сервер:

sudo pppoe-server -I eth1 -L 192.168.0.10 -O /etc/ppp/pppoe-server-options

sudo mkdir /etc/ppp/radius
sudo mcedit /etc/ppp/radius/radiusclient.conf

authserver localhost:1812 acctserver localhost:1813 І в файл /etc/radiusclient/servers заносимо рядок для аутентифікації клієнта, що підключається, він повинен збігатися з даними, записаними у файлі сервера /etc/freeradius/clients.conf, то є в нашому випадку це:

Використання веб-інтерфейсу ABillS

Після натискання на кнопкуДодати з'явиться вікно з інформацією клієнта. поточний станпоказано як «Не активізовано », вибираємо праворуч посиланняDialup/VPN і в новому вікні натискаємоАктивація. Щоб клієнт міг підключитися, слід створити пароль та поповнити рахунок. Натискаємо в лівій вкладці посиланняПароль і вводимо його двічі, потім переходимо вОплати і заносимо деяку суму на його рахунок.

Для початку краще провести тестування підключення нового користувача за допомогою утилітиradtest (як варіант можна використовувати скриптlibexec/radtest.sh, що йде в поставці ABillS). Формат команди перевірки такий:

radtest testuser testpassword IP-RADIUS:1812 0 radius_secret 0 IP_NAS

Тобто у нашому прикладі:

radtest test password 127.0.0.1:1812 0 password123 0 127.0.0.1 Access-Request id id 126 to 127.0.0.1 port 1812 User-Name = «test» User-Password NAS-IP-Address = 127.0.0.1 NAS-Port = 0 Framed-Protocol = PPP rad_recv: Access-Accept packet from host 127.0.0.1:1812, > Session-Timeout = 722541 Framed-IP-Address = 192.168.2.34 Framed-IP-Netmask = 255.255.255.255

У журналі /usr/abills/var/log/abills.log має з'явитися рядок про допуск нового клієнта. Тепер можна спробувати з'єднатись віддалено. У мене все запрацювало, тільки коли я підключив додаткові словники /etc/freeradius/dictionary:

$INCLUDE /usr/share/freeradius/dictionary.microsoft $INCLUDE /usr/share/freeradius/dictionary.unix

Щоб клієнти могли вийти до мережі, слід налаштувати маскарадинг, простіше це зробити, встановивши пакетиipmasq таdnsmasq. В результаті ми отримали готову систему роздачі інтернету, що має всі необхідні функції.