Установка ABillS на CentOS

Исходная: минимальная установка CentOS 6.xx/7.xx.
Для установки достаточно иметь версию CentOS-а с Minimal ISO: https://www.centos.org/download/

Обновляем систему:

# yum update

Загрузить сам биллинг можно по адресу http://sourceforge.net/projects/abills/.

# cd /usr/
# wget http://sourceforge.net/projects/abills/files/abills/0.58/abills-0.58.tgz
# tar zxvf abills-0.58.tgz

Подключаем epel репозиторий

Установка MySQL:

*CentOS 7.xx (MariaDB)

#yum install -y mariadb mariadb-devel mariadb-libs mariadb-server

Запуск MariaDB

# systemctl start mariadb

Добавляем MariaDB В автозагрузку

# systemctl enable mariadb

*CentOS 6 x64

Устанавливаем MySQL из скачаного пакета:

wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.16-1.el6.x86_64.rpm-bundle.tar
mkdir MySQL
cd MySQL
tar -xvf ../MySQL-5.6.16-1.el6.x86_64.rpm-bundle.tar
rm -f MySQL-test*rpm
rm -f MySQL-embedded*rpm
yum install MySQL*rpm

Устанавливаем права:

mysql_install_db --user=mysql --ldata=/var/lib/mysql
chown -R mysql /var/lib/mysql
chgrp -R mysql /var/lib/mysql

Установка модулей Perl:

# yum install expat-devel expat
# yum install mod_ssl openssl openssl-devel 
# yum install perl-DBI perl-DBD-MySQL
# yum install perl-Digest-MD5 perl-Digest-SHA1
# yum install perl-Time-HiRes 

Для CentOS 6.xx вместо perl-Digest-MD5, ставим perl-Crypt-PasswdMD5

Если нет опыта настройки SELinux, отключаем:

В файле конфига изменяем SELINUX=enforcing на SELINUX=disabled

# nano /etc/selinux/config 
# reboot

Открываем порт:

# firewall-cmd --zone=public --add-port=9443/tcp --permanent
# firewall-cmd --reload

Настройка Abills

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

В этом файле меняем строчку

# nano /usr/abills/libexec/config.pl

$conf{dbpasswd}='sqlpassword';

Установка и настройка вебсервера

# yum install httpd httpd-devel httpd-tools
# mkdir -p /usr/abills/var/log
# /usr/abills/misc/certs_create.sh apache
# cp /usr/abills/misc/apache/abills_httpd.conf /etc/httpd/conf.d/

Запускаем apache

# service httpd start

Пропишем в автозагрузку

# systemctl enable httpd.service

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

# yum install gdbm gdbm-devel
# find /usr/lib64/ | grep libperl.so

Этот файл находится в ./usr/lib64/perl5/CORE/libperl.so Продолжаем устанавливать нужные библиотеки и сам Freeradius

# yum -y install perl-ExtUtils-Embed gcc
# wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.2.7.tar.gz
# tar zxvf freeradius-server-2.2.7.tar.gz
# cd freeradius-server-2.2.7
# ./configure --prefix=/usr/local/freeradius --with-rlm-perl-lib-dir=/usr/lib64/perl5/CORE --with-openssl=no > 1
# make && make install

Настройка Freeradius:

# ln -s /usr/local/freeradius/sbin/radiusd /usr/sbin/radiusd
# cp /usr/abills/misc/freeradius/v2/radiusd.conf /usr/local/freeradius/etc/raddb/radiusd.conf
# rm /usr/local/freeradius/etc/raddb/sites-enabled/*
# cp /usr/abills/misc/freeradius/v2/default_rlm_perl /usr/local/freeradius/etc/raddb/sites-enabled/abills_default
# cp /usr/abills/misc/freeradius/v2/users_perl /usr/local/freeradius/etc/raddb/users
# cp /usr/abills/misc/freeradius/v2/perl /usr/local/freeradius/etc/raddb/modules/

Изменить файл radiusd.conf.

# nano /usr/local/freeradius/etc/raddb/radiusd.conf


prefix = /usr/local/freeradius
user = freerad
group = freerad

В файле /usr/local/freeradius/etc/raddb/clients.conf удалить всё и вписать:

client 127.0.0.1 {
 secret = secretpass
 shortname = shorrname
}

Создание user и group если freeradius ранее не был установлен то без этого не стартует:

# groupadd freerad
# useradd -g freerad -s /bash/bash freerad
# chown -R freerad:freerad /usr/local/freeradius/etc/raddb
# mkdir /var/run/radiusd/
# chown freerad:freerad /var/run/radiusd/

Запускаем Radius в режиме отладки:

# /usr/local/freeradius/sbin/radiusd -X

Если нет ошибок, включаем radiusd в автозагрузку:
Делаем ссылку на скрипт запуска в каталог /etc/init.d

# ln -s /usr/local/freeradius/sbin/rc.radiusd /etc/init.d/radiusd

Вставляем в конец первого комментария /etc/init.d/radiusd (описание программы, под«# Copyright…», вставляем комментарием):

# nano /etc/init.d/radiusd
#   chkconfig: - 58 74
#   description: radiusd is service access provider Daemon.

Даем права на запись в каталог run:

# chown freerad:freerad /usr/local/freeradius/var/run/radiusd/

Проверяем:

# service radiusd start
# ps ax | grep rad

В списке запущенных процесов ищем наш /usr/local/freeradius/bin/radiusd

Включаем в автозапуск:

# chkconfig radiusd on

Важно В CentOS 7.2 Для корректной работы, необходимо добавить сервис в файрвол

# firewall-cmd --permanent --zone=public --add-service=radius

Настройка базы данных

# mysql --default-character-set=utf8 -u root -p
use mysql;
GRANT ALL ON abills.* TO `abills`@localhost IDENTIFIED BY "sqlpassword";  
CREATE DATABASE abills DEFAULT CHARACTER SET utf8 COLLATE  utf8_general_ci;
flush privileges;
quit;

Добавляем базу данных abills:

# cd /usr/abills/db/
# mysql --default-character-set=utf8 -D abills < abills.sql -p

Периодические процесы

Вносим в cron периодические процессы /etc/crontab. Данные программы занимаются контролем состояния сессий (billd), месячной и дневной абонплатой, тарифных планов по расписанию (periodic)

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

Если нет файла, устанавливаем:

# yum -y install crontab

Установка и настройка accel-ppp:

Тестирование

Тестирование Freeradius:

# cd /usr/local/freeradius/bin
# ./radtest test 123456 127.0.0.1:1812 0 secretpass 0 127.0.0.1

Настройка серверов доступа

В интерфейсе администратора надо сконфигурировать сервера доступа NAS (Network Access Server).

Выбираем свой в меню справа.