Child pages
  • Установка ABillS на FreeBSD

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents


Info
title Замечания по установкe операционной системы
  • При разбиении диска на разделы крайне рекомендуется отвести для раздела /var не менее 10 Гигабайт. Если планируется высокая нагрузка, это значение можно увеличить.

  • Рекомендованный дистрибутив FreeBSD 11.0-RELEASE (http://freebsd.org/)

  • Про установку FreeBSD можно почитать здесь FreeBSD Handbook

Скачать образы: Официальный FTP

Скачать FreeBSD 11.0 AMD64

Скачать FreeBSD 11.0 i386


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

Widget Connector
urlhttps://www.youtube.com/watch?v=4AgNOUAXyH4


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

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

Code Block
languagebash
pkg update && pkg upgrade -y

Загрузить пакет можно по адресу.

ABillS

Также на сайте с дистрибутивамы может уже находиться более новая версия чем в инструкции.

Code Block
languagebash
fetch https://sourceforge.net/projects/abills/files/abills/0.76/abills-0.76.45.tgz

При проблемах с сертификатами, можно: 

а) Обновить сертификаты и попробовать снова (рекомендуется) 

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

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

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


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

Code Block
languagebash
tar zxvf abills-0.76.45.tgz
cp -Rf abills /usr/

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

Code Block
languagebash
cp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl

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

Code Block
languagebash
#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) 

Code Block
languagebash
*/5   *      *    *     *   root    /usr/abills/libexec/billd -all
1     0      *    *     *   root    /usr/abills/libexec/periodic daily
1     1      *    *     *   root    /usr/abills/libexec/periodic monthly

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

Code Block
languagebash
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

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

Code Block
languagebash
pkg install -y mysql56-server mysql56-client

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

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

Запускаем MySQL

Code Block
languagebash
/usr/local/etc/rc.d/mysql-server start

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

Code Block
languagebash
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 "" ' 

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

Code Block
languagebash
mysql --default-character-set=utf8 -u root

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

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

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

Code Block
languagebash
mysql --default-character-set=utf8 -D abills < /usr/abills/db/abills.sql

Если возникает Invalid default value for 'registration' Выполняем

Code Block
languagebash
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 модули.

Code Block
languagebash
cd /usr/abills/misc/
perl perldeps.pl pkg

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

Code Block
languagebash
ln -s /usr/local/bin/perl /usr/bin/perl


Web Server (Apache)

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

Code Block
languagebash
pkg install -y apache24

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

Code Block
languagebash
cp /usr/abills/misc/apache/abills_httpd.conf /usr/local/etc/apache24/Includes/

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

Code Block
languagebash
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, поэтому нужны сертификаты.

Code Block
languagebash
/usr/abills/misc/certs_create.sh apache 

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

Code Block
languagebash
echo apache24_enable=\"YES\" >> /etc/rc.conf   

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

Code Block
languagebash
mkdir /var/log/httpd/Запускаем apache


Code Block
languagebash
/usr/local/etc/rc.d/apache24 start


Freeradius


Code Block
languagebash
cd /usr/ports/net/freeradius3 && make && make install clean

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

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

Code Block
languagebash
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 пропишите данные доступа к базе

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

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

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

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

Запуск

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

Code Block
languagebash
echo radiusd_enable=\"YES\" >> /etc/rc.conf

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

Code Block
languagebash
/usr/local/etc/rc.d/radiusd start

Удаление

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

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

Code Block
languagebash
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:PORTIP адрес и порт для контроля соединения. Например, для отключения пользователя из веб-интерфейса
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

Code Block
languagebash
cd /usr/abills/libexec/
./radtest.sh auth -rad

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

Code Block
languagebash
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 в режиме отладки

Code Block
languagebash
radiusd -X


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

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


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

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

Widget Connector
width500
urlhttps://www.youtube.com/watch?v=YNW0H8aY4k0
height500