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

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

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

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

# pkg update && pkg upgrade -y

ABillS

Загрузить пакет можно по адресу http://sourceforge.net/projects/abills/
Также на сайте с дистрибутивамы может уже находиться более новая версия чем в инструкции.

# fetch https://sourceforge.net/projects/abills/files/abills/0.76/abills-0.76.45.tgz

При проблемах с сертификатами, можно:
а) Обновить сертификаты и попробовать снова (рекомендуется)

# pkg install -y ca_root_nss && fetch https://sourceforge.net/projects/abills/files/abills/0.76/abills-0.76.45.tgz

б) Запустить без их проверки

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

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

# tar zxvf abills-0.76.45.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, меняем и в запросе):

  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

Freeradius

cd /usr/ports/net/freeradius3 && make && make install clean

Ручная конфигурация

копируем конфигурацию

cd /usr/abills/
rm /usr/local/etc/raddb/sites-enabled/*
cp misc/freeradius/v3/mods-enabled/perl /usr/local/etc/raddb/mods-enabled/perl
cp misc/freeradius/v3/mods-enabled/sql /usr/local/etc/raddb/mods-enabled/sql
cp misc/freeradius/v3/sites-enabled/abills_default /usr/local/etc/raddb/sites-enabled/abills_default
cp misc/freeradius/v3/users /usr/local/etc/raddb/users

В файле /usr/local/etc/raddb/mods-enabled/sql пропишите данные доступа к базе

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

Автоконфигурация

cd /usr/abills/misc/
./autoconf PROGRAMS=freeradius FREERADIUS=3

нажимаем всюду yes

Запуск

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

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

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

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

Удаление

 cd /usr/ports/net/freeradius3 && make deinstall clean
 rm -r /usr/local/etc/raddb

При переустановке очистите конфиг

 make clean config

Сборка ядра

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

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

Настройка веб-интерфейса 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

Проверяем RADIUS

# 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

Если нет информации попробуйте запустить в соседней консоли RADIUS в режиме отладки

radiusd -X

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

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

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

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