Установка биллинга Abills на Ubuntu 8.04 LTS Server + Mikrotik Router OS в качестве сервера доступа

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/charset

AddDefaultCharset 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 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

Нажимаем «Добавить» и возле нового сервера доступа нажимаем «IP Pools». Дальше просто вводим первый IP из пула и количество IP адресов в пуле.

Осталось добавить тарифы и пользователей. Это хорошо описано в официальной документации, так что повторяться не имеет смысла.

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/sslcerts.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.

Поделиться этой заметкой с друзьями:

Добавь меня:

Вы можете оставить комментарий, или поставить трэкбек со своего сайта.

94 комментариев(я)

  • 11.11.2009 14:27, anteo сказал:

    при настройке по данной доке в части комментирования radiusd.conf,
    мне пришлось оставить mschap потому как была ошибка №778 «невозможно проверить идентичность сервера» при подключении в виндовс
    authorize {
    pre_auth
    preprocess
    mschap
    #eap
    files
    }

    • 09.03.2010 02:01, Vovan сказал:

      так что же это за ip 192.168.10.1 все же ???

      • 10.03.2010 02:11, Ultrapravyj сказал:

        Ну как бы из строчки «/ppp profile set default local-address=192.168.10.1″ можно догадаться, что это локальный адрес PPP и скорее всего отталкиваясь от этого адреса, будут раздаваться адреса клиентам. Ну т.е например 192.168.10.2, 192.168.10.3 и тд 

        • 02.07.2010 17:42, admin4ek сказал:

          вот еслиб кто умный вместо плагиата написал как модуль IPN в нем полностью взвести….

          • 26.07.2010 12:39, ike сказал:

            Здравствуйте. Нашел на форуме abills такой Ваш комментарий «Микротик + комментирование пары строк решает эту проблему на раз…» в теме «pptp, сесси по 2гб». Не могли бы Вы рассписать какие строки нужно комменитровать и как будет считаться траффик после 2 гб?

            • 27.07.2010 15:55, Silver Ghost сказал:

              Ищите на форуме. Тема разжевана 25 раз.

            • 21.08.2010 19:12, www.aboutmikrotik.info сказал:

              При вводе команды – sudo check-radiusd-config -level 345 radiusd on терминал выдает сообщение что check-radiusd-config: comand not found . Все скопипастил из мануала, что сделал не так?

              • 25.08.2010 07:43, shurf сказал:

                radius@ubuntu:~$ sudo check-radiusd-config -level 345 radiusd on
                [sudo] password for radius:
                sudo: check-radiusd-config: command not found
                Что это значит? дайте ссылку на форум.

                • 25.10.2010 13:46, farma сказал:

                  это значит что freeradius у тебя ver. 2.1.0
                  а данный мануал актуален для предыдущей версии

                  • 26.10.2010 07:02, 4arodej сказал:

                    Доброе время суток!

                    Буквально только что справился с настройкой связки Gentoo + FreeRadius2 (именно второй версии) + PPPoE-сервера + Abills. Без микротика. Сейчас донастрою iptables и шейпер и опубликую.

                    Ответ на самый частый вопрос:
                    > sudo check-radiusd-config -level 345 radiusd on

                    Да, этой программы нет. Проверку надо осуществлять при помощи radtest:
                    radtest test 234234 127.0.0.1:1812 0 pass123 0 127.0.0.1

                    • 84 старых комментариев не отображается. Нажмите, чтобы отобразить все.
                    (Обязательно)
                    (Обязательно, не публикуется)

                    Надпись "Выполнено на 99%" радует только первые три часа....