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

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

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

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

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


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

ABillS

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

# fetch http://skylink.dl.sourceforge.net/project/abills/abills/0.58/abills-0.58.tgz

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

# tar zxvf abills-0.58.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 /usr/abills/var /usr/abills/var/log
# touch /tmp/sql_errors
# chmod 777 /tmp/sql_errors

MySQL

(Для сборки сразу с поддержкой utf8 - make WITH_CHARSET=utf8).

# cd /usr/ports/databases/mysql51-server && make  && make install

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

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

Запускаем MySQL

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

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

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

В консоли 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

Perl modules

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

DBI (cd /usr/ports/databases/p5-DBI && make && make install)
DBD-mysql (cd /usr/ports/databases/p5-DBD-mysql && make && make install)
Digest-MD5 для Chap авторизации (cd /usr/ports/security/p5-Digest-MD5 && make && make install)
Digest-MD4 для MS-Chap авторизации (cd /usr/ports/security/p5-Digest-MD4 && make && make install)
Crypt-DES для MS-Chap авторизации (cd /usr/ports/security/p5-Crypt-DES && make && make install)
Digest-SHA1 для MS-ChapV2 авторизации (cd /usr/ports/security/p5-Digest-SHA1 && make && make install)
Time-HiRes Нужен только для тестирования скорости выполнения авторизации, аккаунтинга, и страниц веб-интерфейса (cd /usr/ports/devel/p5-Time-HiRes && make && make install)
JSON (cd /usr/ports/converters/p5-JSON && make && make install)

Или одной строкой с пакетов:

# pkg install p5-DBI p5-DBD-mysql p5-Digest-MD5 p5-Digest-MD4 p5-Crypt-DES p5-Digest-SHA1 p5-Time-HiRes

Web Server (Apache)

Собираем apache 2.2 из портов.

# cd /usr/ports/www/apache22 && make && make install clean

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

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

Если нужно шифрование трафика для веб-интерфейса, тогда создаём сертификаты. Apache должен быть собран с mod_ssl.

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

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

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

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

 # mkdir /var/log/httpd/

Запускаем apache

# /usr/local/etc/rc.d/apache22 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/

Теперь нужно описать клиентов, которых будет наш радиус обслуживать, для этого в /usr/local/etc/raddb/clients.conf удаляем все и добавляем следующие строки: !!! (Если PPPoE демон или PPTP демон на этой же машине, то достаточно найти строки и изменить в них значение secret и shortname).

client 127.0.0.1 {
   secret = secretpass
   shortname = mpd
}

Если у вас pppd, poptop, cisco, lucent max6000, exppp или еще какая-нибудь терминирующая железка/сервер не на одной машине с радиусом, то вам нужно для них всех добавить по такой секции, для того, чтобы радиус знал о том, что они будут у него авторизовываться.

Например, у меня есть локальный exppp и для него я описал выше адрес машины на которой он стоит, пароль и обозвал его exppp.

Еще у меня есть DialUP концентратор Lucent MAX6000 для него я добавил следующее:

client 217.21.248.211 {
   secret = maxsecret
   shortname = nas1.provider.com
}

С радиусом пока все, но позже в зависимости от используемых способов терминирования (подключения пользователей) мы в него будем добавлять кое-что еще.

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

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

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

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

Сборка ядра

Ставим FreeBSD поновее и добавляем некоторые возможности в ядро:

для 9.3

# For Abills
options         IPFIREWALL
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         DUMMYNET

options         NETGRAPH
options         NETGRAPH_PPPOE
options         NETGRAPH_IPFW
#options         IPFIREWALL_FORWARD
options         IPFIREWALL_NAT          #ipfw kernel nat support
options         LIBALIAS
options         HZ=1000

для 10.

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

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