Установка биллинга 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.
Вы можете оставить комментарий, или поставить трэкбек со своего сайта.

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

  • 11.11.2008 15:36, Ultrapravyj сказал:

    Ребята!!! Скажите в 2 х словах, как сдесь осуществляется авторизация пользователей? Я из прочитанного не понял! И вообще эта конфигурация работает? Много конфигураций неработоспособных попадается! А ещё, здесь имеется функция ограничения скорости?

    • 11.11.2008 20:54, Silver Ghost сказал:

      @Ultrapravyj: работает на 100%, т.к. статью сам писал и использую эту конфигурацию на двух предприятиях.

      Авторизация проходит через Radius.

      • 12.11.2008 15:37, Ultrapravyj сказал:

        Спасибо! Проверю неприменно!!! И отпишусь!!! Мой вопрос такой, я знаю, что авторизация осуществляется через радиус, а именно посредством чего? Т.е. по IP по MAC иль как ещё, конечно лучше было бы посредством VPN! И так, здесь можно ограничевать скорость клиентам?

        • 27.11.2008 13:20, Flezz сказал:

          Здравствуйте, пытаюсь настроить эту систему, но на стадии настройкий Радиуса столкнулся с проблемой:
          Когда ввожу sudo check-radiusd-config -level 345 radiusd on
          Обратно мне выдаюется, что такой команды нету, как исправить положение дел ?:)

          Заранее спасибо!

          • 27.11.2008 13:22, Flezz сказал:

            Здравствуйте, пытаюсь настроить этут систему, но на стадии настройки Радиуса у меня возникла следующая проблема:

            При вводе: sudo check-radiusd-config -level 345 radiusd on, мне выдается, что такой комманды нету. Скажите пожалуйста, как исправить такое положение дел.

            Заранее спасибо.

            • 27.11.2008 13:24, Silver Ghost сказал:

              @Flezz: Видимо Вы что-то не так сделали. Вот у меня:

              $ sudo check-radiusd-config -level 345 radiusd on
              Radius server configuration looks OK.

              • 28.11.2008 14:53, G@vROSh сказал:

                Можно ли каким либо образом привезать это всё к Microsoft AD, по крайней пере сделать ручное партирование юзеров?

                • 28.11.2008 15:13, Silver Ghost сказал:

                  @G@vROSh: Честно говоря, не в курсе, т.к. не было такой задачи. Думаю этот вопрос было бы уместнее задать на форуме ABills’a.

                  • 08.01.2009 01:03, gMaX сказал:

                    у меня выдаёт 2.1.0 (
                    т.к. с линуксом пока мало сталкивался, а с убунтой вообще впервые, посему вопрос… можно как нить также просто поставить радиус 1.1.7? :)

                    • 28.02.2009 18:40, Ultrapravyj сказал:

                      Должна помочь с freeradius следующая вешь:
                      cd /usr/src
                      wget ftp://ftp.freeradius.org/pub/radius/freeradius-1.1.7.tar.gz
                      tar zxvf freeradius-1.1.0.tar.gz
                      freeradius-1.1.0
                      ./configure —prefix=/usr
                      make
                      make install

                      И не будет проблем с конфигами! =)

                      (Обязательно)
                      (Обязательно, не публикуется)

                      Скажи мне кто такой Билл Гейтс, и я скажу кто ты
                      Яндекс.Метрика beget