(У меня SQL база находится на линукс-сервере на другой машине, поэтому я не собирал, но проблем не должно быть).
(Для сборки сразу с поддержкой utf8 - make WITH_CHARSET=utf8).
# cd /usr/ports/database/mysql51-server && make && make install
Автостарт после перезагрузки. /etc/rc.conf
echo mysql_enable=\"YES\" >> /etc/rc.conf
Создаём пользователя и базу.
# mysql --default-character-set=utf8 -u root -p
use mysql;
INSERT INTO user (Host, User, Password)
VALUES ('localhost','abills', password('sqlpassword'));
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv,
Delete_priv, Create_priv, Drop_priv, Index_priv, Alter_priv,
Lock_tables_priv, Create_tmp_table_priv, Create_view_priv,
Show_view_priv, Execute_priv, Event_priv, Trigger_priv)
VALUES ('localhost', 'abills', 'abills', 'Y', 'Y', 'Y', 'Y', 'Y',
'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
CREATE DATABASE abills;
flush privileges;
Загружаем таблицы в базу.
# mysql --default-character-set=utf8 -D abills < abills.sql
Для работы системы нужны модули.
| DBI | (cd /usr/ports/databases/p5-DBI && make && make install) |
|---|---|
| DBD-mysql | (cd /usr/ports/databases/p5-DBD-mysql51 && 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) |
Apache
Собираем апач 2.2 из портов.
# cd /usr/ports/www/apache22 # make # make install
Для автоматического запуска апача внести изменения в rc.conf
# echo apache_enable=\"YES\" >> /etc/rc.conf
Файл конфигурации
# cp /usr/abills/misc/apache/abills_httpd.conf /usr/local/etc/apache22/Include
Все пакеты кроме самого биллинга я ставил из портов и все нормально работало, начнем с радиуса:
# cd /usr/ports/net/freeradius2 && make install
Далее идем в /usr/local/etc/raddb и убираем у всех файлов .sample (чесно говоря и не люблю из-за этого фрю :)
Правим в этой же /usr/local/etc/raddb директории users
Все строки комментируем, и в конец вставляем эту (По-умолчанию авторизовыватся через скрипт):
DEFAULT Auth-Type = Accept Exec-Program-Wait = "/usr/abills/libexec/rauth.pl"
Далее правим acct_users просто вставив это в конец (запуск скриптов на события радиуса):
DEFAULT Acct-Status-Type == Start Exec-Program = "/usr/abills/libexec/racct.pl" DEFAULT Acct-Status-Type == Alive Exec-Program = "/usr/abills/libexec/racct.pl" DEFAULT Acct-Status-Type == Stop Exec-Program = "/usr/abills/libexec/racct.pl"
Теперь нужно описать клиентов, которых будет наш радиус обслуживать, для этого в clients.conf добавляем следующие строки (опять же в конец): !!! (Если PPPoE демон или PPTP демон на этой же машине, то достаточно найти строки и изменить в них значение secret и shortname).
client 127.0.0.1 {
secret = radsecret
shortname = exppp
}
Если у вас pppd, poptop, cisco, lucent max6000, exppp или еще какая-нибудь терминирующая железка/сервер не на одной машине с радиусом, то вам нужно для них всех добавить по такой секции, для того, чтобы радиус знал о том, что они будут у него авторизовыватся.
Например, у меня есть локальный exppp и для него я описал выше адрес машины на которой он стоит, пароль и обозвал его exppp.
Еще у меня есть DialUP концентратор Lucent MAX6000 для него я добавил следующее:
client 217.21.248.211 {
secret = maxsecret
shortname = nas1.provider.com
}
В файле radiusd.conf нужно закомментировать использование модулей ‘chap’ и ‘mschap’ в разделе ‘authorize’
authorize {
preprocess
suffix
files
}
С радиусом пока все, но позже в зависимости от используемых способов терминирования (подключения пользователей) мы в него будем добавлять кое-что еще.
Для автоматического запуска радиуса внести изменения в /etc/rc.conf
# echo radiusd_enable=\"YES\" >> /etc/rc.conf
Ставим FreeBSD поновее, ставим исходники ядра и добавляем некоторые возможности в ядро:
# cd /usr/src/sys/i386/conf # cp SMP GATE-SMP
(Если у вас один процессор и нет гипертрэйдинга, копируйте не SMP, а GENERIC)
# ee GATE-SMP
В конец вставляем этот кусок:
# For Abills options IPFIREWALL options IPFIREWALL_DEFAULT_TO_ACCEPT options DUMMYNET options NETGRAPH options NETGRAPH_PPPOE options IPFILTER options IPFILTER_LOG options IPDIVERT
Собираем:
# /usr/sbin/config GATE-SMP # cd ../compile/GATE-SMP # make depend # make # make install
Перегружаем машину и приступаем к установке необходимого софта.
ABillS
Загрузить пакет можно по адресу http://sourceforge.net/projects/abills/
tar zxvf abills-0.54.tgz cp -Rf abills /usr/
Правим конфигурационный файл системы (в нем выставляем все под свои нужды)
/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{USERS_MAIL_DOMAIN}="your.domain";
# используется для шифрования паролей администраторов и пользователей.
$conf{secretkey}="test12345678901234567890";
При изменении значения в $conf{secretkey} поменяйте его также в файле abills.sql
Вносим в cron периодические процессы /etc/crontab
*/5 * * * * root /usr/abills/libexec/billd -all\\ 1 0 * * * root /usr/abills/libexec/periodic daily\\ 1 1 * * * root /usr/abills/libexec/periodic monthly\\
Установить права на чтение и запись вебсервером для файлов веб интерфейса
# chown -Rf www /usr/abills/cgi-bin /usr/abills/Abills/templates /usr/abills/backup # mkdir /usr/abills/var /usr/abills/var/log
Открываем веб интерфейс http://your.host:9443/admin/
Логин администратора по умолчанию abills пароль abills
Прежде всего надо сконфигурировать сервера доступа NAS (Network Access Server).
Переходим в меню System 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→Dialup / VPN
Проверяем
# radtest testuser testpassword 127.0.0.1:1812 0 radsecret 0 127.0.0.1
Если всё правильно настроено, в файле логов /usr/abills/var/log/abills.log должна появиться строка
2005-02-23 12:55:55 LOG_INFO: AUTH [testuser] NAS: 1 (xxx.xxx.xxx.xxx) GT: 0.03799
В системе реализированно несколько вариантов выбирать предпочтительный