Установка биллинга Abills на Ubuntu 8.04 LTS Server + Mikrotik Router OS в качестве сервера доступа
Опубликовано октября 13, 2008. Автор Dmitriy Lyalyuev
1. Установка Ubuntu 8.04 LTS Server
1.1. Базовая установка системы.
Установка операционной системы Ubuntu ничем не отличается от установки любой другой ОС.- Скачайте и запишите iso-образ Ubuntu 8.04 LTS Server c официального сайта.
- Загрузите компьютер с привода CD-ROM.
- После загрузки Вас попросят выбрать язык установки. После этого – раскладку клавиатуры.
- Инсталлятор обнаружит Ваше аппаратное обеспечение и сконфигурирует сеть по DHCP. Если в Вашей сети нет DHSP-server, то можно сеть настроить вручную.
- Затем инсталлятор спросит Вас об имени хоста и часовом поясе.
- Далее вы можете сконфигурировать разделы на жестком диске.
- Базовая установка системы закончена.
- Теперь необходимо ввести пользователя и пароль, который будет назначен как пользователь sudo.
- Так же можно установить несколько пакетов для работы сервера.
Помощь в каждом разделе установки можно вызвать с помощью «F1″.
1.2. Установка необходимых пакетов.
После установки базовой системы нам предложат установить пакеты. Что нам понадобится обязательно:- LAMP (Linux/Apache/MySQL/PHP server), можно установить после установки базовой системы
- FreeRadius
- модули для Perl
1.2.1. Устанавливаем и настраиваем FreeRadius
Установка производится очень просто, путем запуска всего лишь одной команды:sudo apt-get install freeradius
Дальше идет настройка, что тоже не очень сложно.
Добавляем в файл /etc/freeradius/users.
DEFAULT Auth-Type = Accept
Exec-Program-Wait = "/usr/abills/libexec/rauth.pl"
Все остальное комментируем.
Добавляем в файл /etc/freeradius/acct_users
#Перед Exec-Program должен быть пробел
#Если каждого аккаунтинг-запроса в памяти оставались зомби-процессы racct.pl, то замените в файле acct_users Exec-Program на Exec-Program-Wait
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"
Заменяем в файле /etc/freeradius/clients.conf. Было:
client 127.0.0.1 {
secret = testing123
shortname = localhost
Стало:
client localhost {
secret = radsecret #Пароль для доступа к радиусу
shortname = shortname
Добавляем так же наш NASMikrotik:
client 172.16.0.1 {
secret = radsecret
shortname Mikrotik
nastype = other
}
Так же я столкнулся с проблемой, когда не прописан локальный IP в качестве клиента, то ничего не хочет работать:
client 172.16.0.2 {
secret = radsecret
shortname Mikrotik
nastype = other
}
Cоздаем функции для преавторизации и поставторизации. Добавляем в файл /etc/freeradius/radiusd.conf
modules {
exec pre_auth {
wait = yes
program = "/usr/abills/libexec/rauth.pl pre_auth"
input_pairs = request
output_pairs = config
}
exec post_auth {
wait = yes
program = "/usr/abills/libexec/rauth.pl post_auth"
input_pairs = request
output_pairs = config
}
Комментируем строки ‘mschap’ и ‘eap’ в разделе ‘authorize’ в файле /etc/freeradius/radiusd.conf, т.е. оставляем только это:
authorize {
pre_auth
preprocess
#mschap
#eap
suffix
files
}
Для оповещения о неавторизированных пользователях правим секцию post-auth в файле /etc/freeradius/radiusd.conf
Было:
# Post-Auth-Type REJECT {
# insert-module-name-here
# }
Стало:
Post-Auth-Type REJECT {
post_auth
}
Проверяем конфигурацию freeradius:
sudo check-radiusd-config -level 345 radiusd on
Если все ок, то:
Radius server configuration looks OK.Добавляем словарь для Mikrotika в /etc/freeradius/dictionary.
$INCLUDE /usr/local/radius/share/freeradius/dictionary.mikrotik
1.2.2. Настраиваем MySQL
Создаем файлик pre_abills.sql с содержимым следующего вида: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) VALUES ('localhost', 'abills', 'abills', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
CREATE DATABASE abills;
И выполняем следующую команду:
mysql -u root -p < ./pre_abills.sql
У Вас спросят пароль для пользователя root, который Вы указали при установке LAMP сервера. Дальше выполняем еще одну команду:
mysqladmin flush-privileges
Тем самым мы создали базу данных abills и пользователя abills со всеми правами на данную базу. Переходим к следующему этапу.
1.2.3. Настройка Apache
Меняем кодироку на cp1251 здесь /etc/apache2/conf.d/charsetAddDefaultCharset cp1251
Добавляем поддержку mod_rewrite.
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
Качаем последнюю стабильную версию Abills из CVS. При запросе пароля просто нажмите «Enter»:
# cvs -d:pserver:anonymous@abills.cvs.sourceforge.net:/cvsroot/abills login
# cvs -z3 -d:pserver:anonymous@abills.cvs.sourceforge.net:/cvsroot/abills checkout -r rel-0-5 abills
Копируем скачанную папку ‘abills’ в /usr:
sudo cp -R ./abills /usr/
Подключаем конфиг в Апач:
ln -s /usr/abills/misc/abills_httpd.conf /etc/apache2/sites-enabled/abills_httpd.conf
Теперь, если Вы не хотите вешать биллинг на нестандартный порт, то правим файл /etc/apache2/sites-enabled/abills_httpd.conf. Было:
Listen 9443
<VirtualHost _default_:9443>
Стало:
#Listen 9443
<VirtualHost *:80>
Так же правим файл /etc/apache2/sites-enabled/000-default.conf. Было:
<VirtualHost _default_:80>
Стало:
<VirtualHost *:80>
Обязательно исправьте пути к логам Апача, т.к. конфиг рассчитан на FreeBSD и логи там лежат по другому пути. Нам нужен /var/log/apache2/…
Перезапускаем Apache:
/etc/init.d/apache2 restart
1.2.4. Установка модулей для Perl
Тут все ставится одной коммандой:
sudo apt-get install libdbi-perl libdbd-mysql-perl libdigest-md4-perl libdigest-sha1-perl libnet-perl libcrypt-des-perl
2. Настройка Abills
Abills у нас уже скачан, осталось только его настроить.В папке /usr/abills/libexec/ копируем файл config.pl.default на config.pl.
сp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl
Это основной конфиг биллинга. Правим там пару строк буквально:
$conf{dbhost}='localhost';
$conf{dbname}='abills';
$conf{dbuser}='abills';
$conf{dbpasswd}='sqlpassword';
$conf{dbtype}='mysql';
$conf{default_language}='russian';
$conf{periodic_check}='yes';
$conf{secretkey}="vlnlhjvycjgfxtexkhgv8ti76r865duyvouvo76fkhdc6rxckygvljhbluyvkuc";
После этого правим файлик abills.sql, где меняем строку «test1234567890…» на ту, что прописали в конфиге, как secretkey.
Далее заливаем дамп пустой базы:
mysql -u root -p abills < ./abills.sql
Вставляем в /etc/crontab:
*/5 * * * * root /usr/abills/libexec/billd -all
1 0 * * * root /usr/abills/libexec/periodic daily
1 0 * * * root /usr/abills/libexec/periodic monthly
#ежедневное автоматическое резервное копирование базы данных
1 3 * * * root /usr/abills/libexec/periodic backup
Создаем недостающие каталоги:
mkdir /usr/abills/backup
chown www-data /usr/abills/backup
touch /usr/abills/var/log/abills.log
chown www-data:www-data /usr/abills/var/log/abills.log
Устанавливаем права на чтение и запись WEB-cервером для файлов WEB-интерфейса
chown -Rf www-data:www-data /usr/abills/cgi-bin
Проверка: Открываем веб интерфейс – http://your.host/abills/admin/ Логин администратора по умолчанию – abills, пароль – abills. От имени этого администратора будут выполняться различные операции в автоматическом режиме, например снятие абонплаты в начале месяца, поэтому удалять его не нужно, нужно только изменить пароль на более безопасный.
Для реальных администраторов необходимо завести свои аккаунты и назначить им необходимые права: Система > Администраторы.
Теперь осталось сконфигурировать NAS сервер в биллинге. Заходим в админке «Система – Сервер доступа».
Нажимаем «Добавить» и возле нового сервера доступа нажимаем «IP Pools». Дальше просто вводим первый IP из пула и количество IP адресов в пуле.
IP 172.16.0.1 Название произвольно, NASMikrotik Radius NAS-Identifier Опис Тип mikrotik:Mikrotik (http://www.mikrotik.com) Авторизация SQL External accounting Alive (sec.) 60 Отключено IP:Port 172.16.0.1 Пользователь admin_ssh Пароль Radius secret для NAS Radius Parameters Acct-Interim-Interval=60
Осталось добавить тарифы и пользователей. Это хорошо описано в официальной документации, так что повторяться не имеет смысла.
3. Настройка Mikrotik Router OS
Сразу оговорка, версия Mikrotik должна быть НЕ ниже 2.9.27.Детально настройку я рассматривать не буду, т.к. это тема для отдельной статьи (не исключено, что она будет), а рассмотрим только то, что указано в официальной документации с некоторыми изменениями и дополнениями.
Итак, выполняем следующие команды последовательно:
/radius add address=172.16.0.2 secret=radsecret service=ppp
/radius incoming set accept=yes
/ppp aaa set accounting=yes use-radius=yes interim-update=60
/ppp profile set default local-address=192.168.10.1
/interface pppoe-server server add interface=ether1 service-name=pppoe-in authentication=chap
/interface pptp-server server set enabled=yes authentication=chap
Теперь создаем сертификат для удаленного управления Mikrotik’ом. Сертификат должен быть с пустым паролем.
# /usr/abills/misc/
certs_create.sh ssh admin_ssh
Вновь сгенерированный сертификат лежит в каталоге /usr/abills/Certs/. По FTP заливаем публичный (.pub) сертификат на Mikrotik и создаем НОВОГО пользователя. После чего подключаем сертификат к этому пользователю.
Не используйте учетную запись admin!!!
[admin@mikrotik]> user add name=admin_ssh group=write
[admin@mikrotik]> user ssh-keys import file=id_dsa.admin_ssh.pub
user: admin_ssh
Дальше проверяем действие сертификата:
ssh -l admin_ssh -i /usr/abills/Certs/id_dsa.admin_ssh 172.16.0.1 "/system identity print"
Mikrotik должен нам ответить «name: MikroTik». Если все так и есть, то все у нас получилось и можно пробовать работать.
Теперь, если необходимо, то можно настроить шейпер с учетом разных классов трафика. Для этого в каталог /usr/abills/libexec/ext_acct ложим скрипт mikrotik_mshaper.sh следующего содержания:
#!/bin/sh
# Mikrotik multi traffic class shaper
DEBUG=0;
ACT_STATUS_TYPE=$1;
NAS_IP_ADDRESS=$2;
NAS_PORT=$3;
NAS_TYPE=$4;
USER_NAME=$5;
FRAMED_IP_ADDRESS=$6;
if [ w${ACT_STATUS_TYPE} = wStart ] ; then
/usr/abills/libexec/linkupdown mikrotik up INTERFACE ${USER_NAME} ${FRAMED_IP_ADDRESS} NAS_HOST=NAS_IP_ADDRESS NAS_ADMIN=abills PROTO=pppoe
else if [ w${ACT_STATUS_TYPE} = wStop ] ; then
/usr/abills/libexec/linkupdown mikrotik down INTERFACE ${USER_NAME} ${FRAMED_IP_ADDRESS} NAS_HOST=NAS_IP_ADDRESS NAS_ADMIN=abills PROTO=pppoe
else
echo "Not enought arguments";
fi;
fi;
Естесственно, необходимо назначить нужные права:
chmod 755 /usr/abills/libexec/ext_acct/mikrotik_mshaper.sh
За уточнения и исправления особое спасибо ur3cag.
дополнительно
http://system-administrators.info/?p=1817
http://www.mysql.ru/docs/man/User_names.html
http://silverghost.org.ua/2008/10/13/ustanovka-billinga-abills-na-ubuntu-804-lts-server-mikrotik-router-os-v-kachestve-servera-dostupa/
http://abills.net.ua/wiki/doku.php/abills:docs:ipsec:ru
http://opennet.ru/openforum/vsluhforumID1/87993.html
http://www.lissyara.su/articles/freebsd/traffic_count/mpd5_pppoe+radius+ng_car+abills/
http://archlinux.org.ru/forum/viewtopic.php?f=16&t=2413
http://linuxopen.ru/2007/12/07/nastrojjka-pppoe-servera-na-baze-os.html
https://wiki.archlinux.org/index.php/Wicd
Настройка маршрутизатора RB2011
abills.net.ua Настройка Mikrotik
Комментарии
Отправить комментарий