=====Установка 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]]