Это старая версия документа.
Установка ABillS на CentOS
Исходная: минимальная установка CentOS 6.xx/7.xx.
Для установки достаточно иметь версию CentOS-а с Minimal ISO:
https://www.centos.org/download/
Переходим в режим root
# sudo su
Дополнительная конфигурация системы
Если нет опыта настройки SELinux, отключаем:
Обновляем систему и ставим дополнительные пакеты:
# yum update -y # yum install -y wget gcc make nano perl ntp ntpdate
В файле конфига изменяем SELINUX=enforcing
на SELINUX=disabled
(Если не знаете что делать потом с SELINUX)
# nano /etc/selinux/config # reboot
Подключаем epel репозиторий
# yum install -y epel-release
Если не получилось установить пакет, пользуемся этой инструкцией
Скачиваем ABillS
На момент написания статьи актуальная версия 0.75.110 (Сходите сюда и проверьте).
# cd /usr # wget https://sourceforge.net/projects/abills/files/abills/0.75/abills-0.75.110.tgz # tar zxvf abills-0.75.110.tgz # cp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl
Изменяем конфигурационный файл /usr/abills/libexec/config.pl
#DB configuration $conf{dbhost}='localhost'; # Можно не менять $conf{dbname}='abills'; # Можно не менять $conf{dbuser}='abills'; # Можно не менять $conf{dbpasswd}='sqlpassword'; # Желательно изменить $conf{ADMIN_MAIL}='info@your.domain'; # Нужно изменить # используется для шифрования паролей администраторов и пользователей. $conf{secretkey}="test12345678901234567890"; # Можно не менять
При изменении значения в $conf{secretkey} поменяйте его также в файле /usr/abills/db/abills.sql
Установка MySQL:
*CentOS 7.xx (MariaDB)
Подключаем репозиторий
# yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
Percona установит временный пароль рута, поэтому надо проделать некоторые хитрые манипуляции. Очищаем лог
[ -f /var/log/mysqld.log ] && echo '' > /var/log/mysqld.log
Устанавливаем
# yum -y install Percona-Server-server-57 Percona-Server-devel-57
Запускаем и останавливаем, чтоб инициализировать базу
# systemctl start mysql # systemctl stop mysql
Запускаем без проверки пароля
# sudo -u mysql /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --validate-password=OFF
Получаем пароль из /var/log/mysql.log
# MYSQL_TEMPRORARY_ROOT_PASSWORD=`cat /var/log/mysqld.log | grep generated | awk '{print($11)}'`
Очищаем пароль
# mysqladmin -u root --password="${MYSQL_TEMPRORARY_ROOT_PASSWORD}" -h localhost password ""
Находим PID и убиваем процесс
# kill `cat /var/run/mysqld/mysqld.pid`
Запускаем
# systemctl start mysql
Добавляем в автозагрузку
# systemctl is-enabled mysql || systemctl enable mysql
Установка модулей Perl:
Запускаем скрипт установки зависимостей Perl
# cd /usr/abills/misc/ && perl perldeps.pl rpm -batch
Облегчаем себе жизнь в будущем
# yum -y install perl-App-cpanminus
Если какие-то модули не установились, можно запустить
# cpanm <ИмяМодуля>
Например у меня не установился Imager::QRCode
, запускаю:
# cpanm Imager::QRCode
Установка и настройка Apache
Устанавливаем
# yum -y install httpd httpd-devel httpd-tools
Создаём сертификат (можно использовать значения по умолчанию)
# /usr/abills/misc/certs_create.sh apache
Устанавливаем VirtualHost abills
# cp /usr/abills/misc/apache/abills_httpd.conf /etc/httpd/conf.d/ Открываем порт: # firewall-cmd --zone=public --add-port=9443/tcp --permanent # firewall-cmd --reload
Запускаем apache
# systemctl start httpd.service
Пропишем в автозагрузку
# systemctl enable httpd.service
Установка и настройка Freeradius
Устанавливаем пакеты, необходимые для сборки
# yum -y install gdbm gdbm-devel install perl-ExtUtils-Embed gcc
Ищем куда установились библиотеки perl
# find /usr/lib64/ | grep libperl.so
Этот файл находится в /usr/lib64/perl5/CORE/
Устанавливаем сам Freeradius
# cd /tmp # wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.2.9.tar.gz # tar zxvf freeradius-server-2.2.9.tar.gz # cd freeradius-server-2.2.9
Здесь используем ранее найденную папку с библиотекой (/usr/lib64/perl5/CORE/)
# ./configure --prefix=/usr/local/freeradius --with-rlm-perl-lib-dir=/usr/lib64/perl5/CORE --with-dhcp --with-openssl=no > /dev/null # make && make install
Копируем конфигурационные скрипты (выполнять построчно):
# cp /usr/abills/misc/freeradius/v2/radiusd.conf /usr/local/freeradius/etc/raddb/radiusd.conf # rm -f /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/ ln -s /usr/local/freeradius/sbin/radiusd /usr/sbin/radiusd
Меняем в файле radiusd.conf
# nano /usr/local/freeradius/etc/raddb/radiusd.conf prefix = /usr/local/freeradius user = freerad group = freerad
Благодаря модулю sql
, можно хранить сервера доступа в базе данных (всё равно необходим перезапуск радиуса после добавления/изменения серверов, но не надо править clients.conf).
Очищаем список серверов доступа из /usr/local/freeradius/etc/raddb/clients.conf (чтоб не было дупликатов из-за записей в базе)
# echo '' > /usr/local/freeradius/etc/raddb/clients.conf # cp /usr/abills/misc/freeradius/v2/sql.conf /usr/local/freeradius/etc/raddb/
Заполняем нужные нам параметры соединения с БД
# nano /usr/local/freeradius/etc/raddb/sql.conf
sql { database = "mysql" driver = "rlm_sql_${database}" server = "localhost" #port = 3306 login = "abills" password = "sqlpassword" radius_db = "abills" # В самом конце файла '%secretkey%' меняем на 'test12345678901234567890'
Создаём user и group. (если freeradius ранее не был установлен то без этого не стартует)
# groupadd freerad # useradd -g freerad -s /bash/bash freerad # chown -R freerad:freerad /usr/local/freeradius/etc/raddb
Запуск radius в режиме отладки
# /usr/sbin/radiusd -X
или
# 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
Периодические процесы
Вносим в 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).
Выбираем свой в меню справа.