Страниц: 1
title
Description
Body
Официальная страница проекта http://abills.asmodeus.com.ua/wiki/doku.php
Цели и задачи, которые мы хотим достичь
Используя операционную систему GNU/Linux, и не покупая мощный сервер, делаем из стандартного или даже старого компьютера шлюз с биллингом
Устанавливаем свободную и бесплатную биллинговую систему ABillS, экономим деньги и время
Авторизация по CHAP или PAP (если есть люди, которые сделали авторизацию по MS-CHAP-2, то отпишитесь пожалуйста)
Возможности ABillS
Тарификация по времени
Тарификация по трафику
Периодические отчисления (месячная и дневная абонентская плата)
Возможность раздельной и совместной тарификации по времени и трафику
Ограничение доступа в интернет по времени суток
Callback
Система скидок
Установка минимальной цены сессии
Работа с неограниченным количеством NAS серверов
Авторизация по SQL базе данных или по системной UNIX базе паролей
Авторизация по PAP, CHAP, MS-CHAP, MS-CHAPv2+MPPE (CHAP, MS-CHAP, MS-CHAPv2 при сохранении паролей в SQL базе)
Шифрование трафика MPPE
IEEE 802.1x
Авторизация PPPoE по MAC адресу
Авторизация PPTP по IP адресу (для MPD по IP и MAC одновременно)
Изменение тарифного плана или снятие денег со счета по расписанию
Классификация трафика (внутренний, внешний, бесплатный) (Только для VPN, Ipnet)
Ограничение скорости в зависимости от вида трафика и времени суток (Только для VPN)
Создание месячных предоплаченых по трафику пакетов
Дневные, недельные и месячные лимиты по трафику и времени
Отчёты по работе системы и состоянию счетов за любой период времени
Генерация и отправка администратору годовых и месячных отчётов по работе системы
WEB интерфейс управления системой с возможностью настройки прав доступа
Лог действий администратора, менеджера
Ограничение сессий по количеству общего (in+out) трафика (для exppp, mpd, pppd + RADIUS plugin (Linux))
Несъёмный минимум для подключений к NAS серверам (Tarif Plans → Credit Tresshold)
Выписка счётов из пользовательского интерфейса
Обратная связь
Система предоплаченых карт.
!VoIP - GNU Gatekeeper, Asterisk
Система пополнения через платёжные системы ~Webmoney.ru и RUpay.ru
Squid монитор
SNMP монитор и набор утилит для работы с NAS серверами.
Система рассылки сообщений для пользователей.
Распространяется по лицензии GNU GPL 2
Версии пакетов
Abills 0.34
freeradius_1.1.2-2
mysql 5.0.24a-4
Apache 2.0.55
pppd 2.4.4
pptpd 1.3.0
radiusclient1 0.3.2
Linux 2.6.17 - которое шло вместе с Debian GNU/Linux
Установка freeradius
В качестве дистрибутива я использовал Debian GNU/Linux Testing 'Etch' (20061002). Но когда вы его ставите, то он не знает о 2 и 3-ем дисках. Поэтому добавьте их.
aptitude install freeradius
Настройка 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Создаем функции для преавторизации и поставторизации. И добавляем порт. Добавляем в файл /etc/freeradius/radiusd.conf
port = 1812
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
suffix
files
}Для оповещения о неавторизированых пользователях правим секцию post-auth в файле /etc/freeradius/radiusd.conf
Было
# Post-Auth-Type REJECT {
# insert-module-name-here
# }Стало
Post-Auth-Type REJECT {
post_auth
}Для нормальной работы с NAS на основе pppd необходимо добавить в файл словарей freeradius’а /etc/freeradius/dictionary следующие строки:
# Ограничение трафика сессии ATTRIBUTE Session-Octets-Limit 227 integer # What to assume as limit - 0 in+out, 1 in, 2 out, 3 max(in,out) ATTRIBUTE Octets-Direction 228 integer # Ограничение скорости соединения ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-1 232 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-1 233 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-2 234 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-2 235 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-3 236 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-3 237 integer
Проверка конфигурационных файлов freeradius
check-radiusd-config -level 345 radiusd on
Если все правильно, то: Radius server configuration looks OK.
При отладке останавливаем freeradius, и запускаем freeradius -X
Установка MySQL
aptitude install mysql-server
Настройка MySQL
Так я и не понял где нужно создавать файл pre_abills.sql, похоже что в любом месте.
Создаем файл pre_abills.sql: touch pre_abills.sql
Редактируем pre_abills.sql
use mysql;
INSERT INTO user (Host, User, Password) VALUES ('%','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;где sqlpassword - пароль mysql-пользователя abills, необходимый для доступа к базе данных abills
Создаём пользователя и базу:
mysql -u root -p < pre_abills.sql
Появиться 'Enter password:' - просто нажать Enter
mysqladmin flush-privileges;
Web server
Для работы web-интерфейса требуется установить и настроить web сервер.
Установка Apache2
aptitude install apache2
Добавляем в /etc/apache2/apache2.conf строку
ServerName "имя сервера"
Меняем кодироку на нужну вам здесь /etc/apache2/conf.d/charset
Добавляем поддержку mod_rewrite.
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
Скачиваем abills c http://sourceforge.net/projects/abills/
Распаковываем в папку /usr
Копируем содержимое /usr/abills/misc/abills_httpd.conf в /etc/apache2/httpd.conf
И перезапускаем сервер cat /usr/abills/misc/abills_httpd.conf echo >> /etc/apache2/httpd.conf /etc/init.d/apache2 restart
Права WEB-сервера уже понижены. Запускается от пользователя www-data
Perl modules
Нам нужны следующие модули:
* DBI (libdbi-perl -- ~Perl5 database interface by Tim Bunce) * DBD::mysql (libdbd-mysql-perl -- A ~Perl5 database interface to the ~MySQL database) (В системе есть версия 3.0007-1, а на сайте cpan.org 4.00. Будем пробывать поочередно) * Digest-MD4 (libdigest-md4-perl -- MD4 Message Digest for Perl) * Crypt-DES (libcrypt-des-perl -- Perl DES encryption module) * Digest-SHA1 (libdigest-sha1-perl -- NIST SHA-1 message digest algorithm) * libnet (libnet-perl -- Implementation of Internet protocols for Perl) * Time::HiRes (В системе этот пакет вируальный)
Установка пакетов, которые есть в базе Debian. Пишем скриптик.
aptitude install libdbi-perl libdbd-mysql-perl libdigest-md4-perl libdigest-sha1-perl libnet-perl libcrypt-des-perl
Настройка ABillS
ABillS мы уже скачали. Теперь правим конфиги.
В папке /usr/abills/libexec/ копируем файл config.pl.default в config.pl cp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl
Правим config.pl
#Check periodic deposit and session. hangup after get negative result (Проверять депозит по текущим сесиям, при достижении 0 сбрасывать с
#линии)
$conf{periodic_check}='yes';Загружаем структуру таблиц в базу:
mysql -D abills < abills.sql
Для того, чтобы можно было осуществлять hangup подключенного пользователя необходимо добавить в файл /etc/sudoers.
sudo при установке выдал ошибку зависимостей. поэтому скачиваем и устанавливаем sudo из исходников
apache ALL = NOPASSWD: /usr/abills/misc/pppd_kill
Вносим в cron периодическую проверку. Редактируем /etc/crontab
\*/1 * * * * root /usr/abills/libexec/billd -all 1 0 * * * root /usr/abills/libexec/periodic daily 1 0 1 * * root /usr/abills/libexec/periodic monthly #ежедневное автоматическое резервное копирование базы данных 1 3 * * * root /usr/abills/libexec/periodic backup
Создаем недостающие каталоги:
mkdir /usr/abills/backup chown www-data /usr/abills/backup
Устанавливаем права на чтение и запись WEB-cервером для файлов WEB-интерфейса
chown -Rf www-data /usr/abills/cgi-bin
Устанавливаем snmpwalk. И проверяем, на мести ли он.
aptitude install snmp which snmpwalk > /usr/bin/snmpwalk
Проверяем где находиться gzip:
which gzip > /bin/gzip
Проверяем где находиться mysqldump:
which mysqldump /usr/bin/mysqldump
Правим пути в ~/usr/abills/Abills/defs.conf
$SNMPWALK = '/usr/bin/snmpwalk'; $GZIP = '/bin/gzip'; $MYSQLDUMP = '/usr/bin/mysqldump';
Еще: freeradius будет ругаться, что у вас нет логов abills, поэтому мы это исправляем. touch /usr/abills/var/log/abills.log chmod 777 /usr/abills/var/log/abills.log - здесь вы можете меня поправить какие права дать файлу abills.log
Проверка: Открываем веб интерфейс - http://your.host/abills/admin/ Логин администратора по умолчанию - abills , пароль - abills. От имени этого администратора будут выполняться различные операции в автоматическом режиме, например снятие абонплаты в начале месяца, по этому удалять его не нужно, нужно только изменить пароль на более безопасный. Для реальных администраторов необходимо завести свои аккаунты и назначить им необходимые права: Система > Администраторы
А теперь поздравления от axl: "Тот кто выполнил все предыдущие пункты и увидел вебинтерфейс заслужил первую бутылку пива. Дальнейшее описание специфично именно для GNU/Linux-систем с pppd."
Pppd и pptpd
Проверяем, если у нас модули ppp. Модуль мелкософтого шифрования и сжатия (ppp_mppe_mppc) мне не нужен да и в системе его нет
# modprobe ppp_async # modprobe ppp_generic # modprobe ppp_mppe_mppc FATAL: Module ppp_mppe_mppc not found. # modprobe ppp_synctty # modprobe pppoe
Утанавливаем pptpd:
aptitude install pptpd
Редактируем /etc/ppp/options
+chap
Редактируем /etc/ppp/pptpd-options
#require-mppe-128
#require-mschap-v2
plugin radius.so
plugin radattr.so
debug
ms-dns ***.***.***.*** # Здесь укажите IP адрес DNS сервера, который
# будет сообщаться подключившемуся клиентуРедактируем /etc/pptpd.conf
ppp /usr/sbin/pppd option /etc/ppp/pptpd-options debug bcrelay eth0 localip ***.***.***.*** # Здесь IP адрес вашего сервера в локальной сети
Radiusclient
Устанавливаем radiusclient:
aptitude install radiusclient1
Редактируем /etc/radiusclient/radiusclient.conf
authserver 127.0.0.1 acctserver 127.0.0.1
В файл /etc/radiusclient/servers вносим IP адрес радиус-сервера и соответствующий ему пароль
127.0.0.1 radsecret
Конфигурирование NAS
Теперь необходимо сконфигурировать NAS. Заходим в web-интерфейс администратора http://your.host/abills/admin/ Логин - abills, пароль - abills. Идем: Система → Сервер доступа Создаем новый NAS с необходимыми параметрами. В нашем случае:
IP ***.***.***.*** (Указываем ip сервера, смотрящего в локалку) Название (произвольно, напр. - vpn1) Radius NAS-Identifier Идентификатор сервера (можно не вписывать) Опис Описание сервера (Произв) Type pppd:pppd + Radius plugin (linux) Authorization SQL Alive 60 Disable IP:PORT User Password RADIUS Parameters Acct-Interim-Interval=60
Значение Alive и значение параметра Acct-Interim-Interval нужно выбирать одинаковым. Осталось создать тарифные планы и завести юзеров.
P.S.: У меня и не получилось чтоб abills прерывал сессии при балансе 0 и считал трафик в онлайн режиме. Если кто-нибуть знает это сделеать чтоб работало, то отпишитесь пожалуста.
источник: http://omsk.lug.ru/cgi-bin/moin.py/Abills
Неактивен
Страниц: 1