=====Установка 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:docs:manual:install_centos:epel| инструкцией ]]
==== Скачиваем ABillS ====
На момент написания статьи актуальная версия **0.75.110** (Сходите [[http://sourceforge.net/projects/abills/|сюда]] и проверьте).
# 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 ====
Подключаем репозиторий
# 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
=== Настройка ===
**Заливаем БД ABillS** (пароль тот же что и в **config.pl** и **sql.conf** )
# mysql --default-character-set=utf8 -u root
use mysql;
SET GLOBAL validate_password_policy=0;
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
**Если возникает Invalid default value for 'registration'**\\
Выполняем
# sed -i -e "1 s/^/SET SQL_MODE='NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO';/;" /usr/abills/db/abills.sql
# mysql --default-character-set=utf8 -u root -p -D abills < /usr/abills/db/abills.sql
==== Установка модулей 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 mod_ssl
Создаём сертификат (можно использовать значения по умолчанию)
# /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 libtalloc-devel
Ищем куда установились библиотеки perl
# find /usr/lib64/ | grep libperl.so
Этот файл находится в **/usr/lib64/perl5/CORE/**
Устанавливаем сам Freeradius
# cd /tmp
# wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-3.0.17.tar.gz
# tar zxvf freeradius-server-3.0.17.tar.gz
# cd freeradius-server-3.0.17
Здесь используем ранее найденную папку с библиотекой (**/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
Копируем конфигурационные скрипты (выполнять построчно):
# rm -f /usr/local/freeradius/etc/raddb/sites-enabled/*
# cp /usr/abills/misc/freeradius/v3/default_rlm_perl /usr/local/freeradius/etc/raddb/sites-enabled/abills_default
# cp /usr/abills/misc/freeradius/v3/users_perl /usr/local/freeradius/etc/raddb/users
# cp /usr/abills/misc/freeradius/v3/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 в автозагрузку:\\
Скачиваем systemd скрипт
# wget http://abills.net.ua/misc/centos7.radiusd
# mv centos7.radiusd /etc/systemd/system/radiusd.service
# systemctl daemon-reload
# systemctl enable radiusd
Проверяем:
# service radiusd start
# ps ax | grep rad
В списке запущенных процесов ищем наш **/usr/local/freeradius/bin/radiusd**\\
Добавляем сервис в файрвол
# 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
==== Тестирование ====
Тестирование Freeradius:
# cd /usr/local/freeradius/bin
# ./radtest test 123456 127.0.0.1:1812 0 secretpass 0 127.0.0.1
При правильной конфигурации БД и Freeradius, получим
Sending Access-Request of id 200 to 127.0.0.1 port 1812
User-Name = "test"
User-Password = "123456"
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=200, length=44
Acct-Interim-Interval = 300
Session-Timeout = 2122244
Framed-IP-Address = 10.0.0.182
Framed-IP-Netmask = 255.255.255.255
==== Вход в веб интерфейс ====
Смотрим IP адрес
# ip a
У меня вывело:
[root@centos bin]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:7e:c5:ab brd ff:ff:ff:ff:ff:ff
inet 192.168.1.121/24 brd 192.168.1.255 scope global dynamic enp0s3
valid_lft 38566sec preferred_lft 38566sec
inet6 fe80::a00:27ff:fe7e:c5ab/64 scope link
valid_lft forever preferred_lft forever
Мой локальный адрес:
192.168.1.121
Открываем браузер
https://192.168.1.121:9443/admin/
Логин ''abills'', пароль ''abills''\\
==== Настройка серверов доступа ====
В интерфейсе администратора надо сконфигурировать сервера доступа NAS (Network Access Server).
Выбираем свой в меню справа (Вверху этой страницы блок ''Сервера доступа'').
==== Установка и настройка accel-ppp: ====
[[abills:docs:nas:linux:accel_pptp:ru?centos| Установка и настройка accel-ppoe]]