Установка ABillS под Freebsd

Замечания по установкe операционной системы.

  • При разбиении диска на разделы крайне рекомендуется отвести для раздела /var не менее 10 Гигабайт. Если планируется высокая нагрузка, это значение можно увеличить.
  • Рекомендованный дистрибутив FreeBSD 11.0-RELEASE (http://freebsd.org/)
  • Про установку FreeBSD можно почитать здесь FreeBSD Handbook

Скачать образы: Официальный FTP
11.0
amd64 : ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/11.0/FreeBSD-11.0-RELEASE-amd64-dvd1.iso
i386 : ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/ISO-IMAGES/11.0/FreeBSD-11.0-RELEASE-i386-dvd1.iso

Установка операционной системы


Пошаговая настройка

ABillS

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

# fetch https://sourceforge.net/projects/abills/files/abills/0.75/abills-0.75.110.tgz

При проблемах с сертификатами, можно запустить без их проверки

# fetch --no-verify-peer https://sourceforge.net/projects/abills/files/abills/0.75/abills-0.75.110.tgz

Разархивирование:

# tar zxvf abills-0.75.110.tgz
# cp -Rf abills /usr/

Создаем конфигурационный файл системы :

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

в нем выставляем все под свои нужды

#DB configuration 
$conf{dbhost}='localhost';
$conf{dbname}='abills'; 
$conf{dblogin}='abills';
$conf{dbpasswd}='sqlpassword'; 
$conf{ADMIN_MAIL}='info@your.domain'; 

При изменении значения в $conf{secretkey} поменяйте его также в файле abills.sql

Вносим в 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

Установить права на чтение и запись веб-сервером для файлов веб интерфейса

mkdir /usr/abills/backup
chown -Rf www /usr/abills/cgi-bin /usr/abills/Abills/templates /usr/abills/backup
mkdir -p /usr/abills/var/log
touch /usr/abills/var/log/sql_errors
chmod 666 /usr/abills/var/log/sql_errors
chown nobody /usr/abills/var/log/sql_errors

MySQL

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

# pkg install -y mysql56-server mysql56-client

Автостарт после перезагрузки. /etc/rc.conf

echo mysql_enable=\"YES\" >> /etc/rc.conf

Запускаем MySQL

# /usr/local/etc/rc.d/mysql-server start

Очищаем пароль для комфортной установки (только для 5.7)

# mysqladmin -u root --password=`tail -1 /root/.mysql_secret` -h localhost password ""

# mysql –connect-expired-password -u root -p`tail -1 /root/.mysql_secret` -e 'ALTER USER `root`@`localhost` IDENTIFIED BY «»'

Создаём пользователя и базу.

# mysql --default-character-set=utf8 -u root

В консоли mysql делаем (Если меняли пароль в /usr/abills/libexec/config.pl, меняем и в запросе):

  use mysql;
  GRANT ALL ON abills.* TO `abills`@localhost IDENTIFIED BY "sqlpassword";  
  CREATE DATABASE abills DEFAULT CHARACTER SET utf8 COLLATE  utf8_general_ci;
  quit;

Загружаем таблицы в базу.

# mysql --default-character-set=utf8 -D abills < /usr/abills/db/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 -D abills < /usr/abills/db/abills.sql

Perl modules

Для работы системы нужны Perl модули.

# cd /usr/abills/misc/
# perl perldeps.pl pkg

Создаём симлинк для исполнительного файла perl

ln -s /usr/local/bin/perl /usr/bin/perl

Web Server (Apache)

Устанавливаем Apache

# pkg install -y apache24

Копируем конфиг apache

# cp /usr/abills/misc/apache/abills_httpd.conf /usr/local/etc/apache24/Includes/

Раскомментируем модули /usr/local/etc/apache24/httpd.conf

 #LoadModule rewrite_module libexec/apache24/mod_rewrite.so
 #LoadModule cgi_module libexec/apache24/mod_cgi.so
 #LoadModule ssl_module libexec/apache24/mod_ssl.so
 #LoadModule include_module libexec/apache24/mod_include.so

По умолчанию работаем на HTTPS, поэтому нужны сертификаты.

# /usr/abills/misc/certs_create.sh apache 

Для автоматического запуска apache внести изменения в rc.conf

# echo apache24_enable=\"YES\" >> /etc/rc.conf   

Создаем каталог для логов веб-сервера Abills

 # mkdir /var/log/httpd/

Запускаем apache

# /usr/local/etc/rc.d/apache24 start

Radius

Ставим из портов:

# cd /usr/ports/net/freeradius2 && make install

копируем готовые файлы настроек

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

Благодаря модулю sql, можно хранить сервера доступа в базе данных (всё равно необходим перезапуск радиуса после добавления/изменения серверов, но не надо править clients.conf).
Очищаем список серверов доступа из внутреннего файлика (чтоб не было дупликатов из-за записей в базе)

# echo '' > /usr/local/etc/raddb/clients.conf
# cp /usr/abills/misc/freeradius/v2/sql.conf /usr/local/etc/raddb/

Заполняем нужные нам параметры соединения с БД

# vim /usr/local/etc/raddb/sql.conf
sql {
        database = "mysql"
        driver = "rlm_sql_${database}"
        server = "localhost"
        #port = 3306
        login = "abills"
        password = "sqlpassword"
        radius_db = "abills"
        
# В самом конце файла
        '%secretkey%' меняем на 'test12345678901234567890'

Для автоматического запуска радиуса внести изменения в /etc/rc.conf

# echo radiusd_enable=\"YES\" >> /etc/rc.conf

запускаем радиус :

# /usr/local/etc/rc.d/radiusd start

Сборка ядра

Ядро нужно собирать, если планируете шейпить трафик (использовать как сервер доступа) на текущем сервере
Сборка ядра для управления трафиком :

Перезагружаем сервер и приступаем к установке необходимого софта.

Настройка веб-интерфейса Abills

Открываем веб интерфейс https://your.host:9443/admin/
Логин администратора по умолчанию abills пароль abills
Прежде всего надо сконфигурировать сервера доступа NAS (Network Access Server).

Переходим в меню Configuration→NAS

Параметры

IP IP адрес NAS сервера
Name Название
Radius NAS-Identifier Идентификатор сервера (можно не вписывать)
Describe Описание сервера
Type Тип сервера. В зависимости от типа по разному обрабатываются запросЫ на авторизацию
Authorization Тип авторизации. SYSTEM - При хранении паролей в UNIX базе (/etc/passwd)
SQL - при хранении паролей SQL базе (MySQL, PosgreSQL)
Alive Период отправки Alive пакетов
Disable Отключить
:Manage: Секция менеджмента NAS сервера
IP:PORT IP адрес и порт для контроля соединения. Например, для отключения пользователя из веб-интерфейса
User Пользователь для контроля
Password Пароль
RADIUS Parameters Дополнительные параметры которые передаются NAS серверу после успешной авторизации.

После заведения сервера доступа добавьте ему пул адресов IP POOLs.

FIRST IP Первый адрес в пуле
COUNT Количество адресов

К примеру 10.1.0.1 количество 60 000 (хватит на всех :)
Одному серверу доступа может принадлежать несколько пулов адресов.
Создание тарифного плана

Меню System configuration → Internet → Tarif Plans

Регистрация пользователя Customers → Users → Add

Заведение сервиса Internet на пользователя.

Customers → Users → Information → Services → Internet

Проверяем

# cd /usr/abills/libexec/
# ./radtest.sh auth -rad

если всё прошло нормально в вы увидите что-то типа :

 
 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=192, length=44
      Acct-Interim-Interval = 300
      Session-Timeout = 1607940
      Framed-IP-Address = 10.0.0.216
      Framed-IP-Netmask = 255.255.255.255

и в журнале ошибок /Отчёт/Internet/Ошибка/ должна появиться строка

2013-02-23 12:55:55 LOG_INFO: AUTH [test] NAS: 1 (xxx.xxx.xxx.xxx) GT: 0.03799

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

Настройка шейпера и маскарада

В системе реализированно несколько вариантов выбирать предпочтительный

Установка ABillS автоинсталятором