В этой записке будет описан процесс установки биллинг системы IBSng (next generation billing). На официальном сайте написано что биллинг (система учета) рекомендован провайдерам которые хотят получить поддержку предоплаты за услуги VoIP/DialUp и сетевых услуг по сети LAN.
Также он поддерживает детальный учет VoIP вызовов по средством использования Radius'a, что тоже хорошо.
Все возможности биллинга можно узнать на официальном сайте http://ibs.sourceforge.net/
Я буду ставить бесплатную версию этого биллинга, который урезан по функционалу. Разочаровало меня отсутствие русского интерфейса, что затрудняет использование.
Устанавливаем зависимости:
# yum install postgresql postgresql-server postgresql-devel postgresql-python php php-gd php-mbstring php-pdo python python-devel -y
Устанавливаем PyGreSQL:
# wget http://pkgs.fedoraproject.org/repo/pkgs/PyGreSQL/PyGreSQL-4.0.tgz/1aca50e59ff4cc56abe9452a9a49c5ff/PyGreSQL-4.0.tgz
# mv PyGreSQL-4.0.tgz /usr/src/
# cd /usr/src/
# tar -zxvf PyGreSQL-4.0.tgz
# cd PyGreSQL-4.0/
# python setup.py build
# python setup.py install
# service postgresql start
# nano /var/lib/pgsql/data/pg_hba.conf
local IBSng ibs trust
или
local all all trust
# service postgresql restart
Создаем базу:
# service postgresql start
# su postgres
> createuser ibs
> createdb IBSng
> createlang plpgsql IBSng
> exit
Качаем сам биллинг:
# wget http://sourceforge.net/projects/ibs/files/IBSng/IBSng-A1.24/IBSng-A1.24.tar.bz2/download
Распаковываем его в папку /usr/local/
# tar -xvjf IBSng-A1.24.tar.bz2 -C /usr/local
Получится так: /usr/local/IBSng
# echo "/usr/local/pgsql/lib/" >> /etc/ld.so.conf
# ldconfig
# ln -sn /usr/local/IBSng/interface/IBSng/ /var/www/html
Запускаем установочный скрипт:
# cd /usr/local/IBSng/scripts/
# ./setup.py
И отвечаем на вопросы:
Выберите 1(Install)
Выберите 2(Test DB Connection And Continue)
Выберите 2(Compile configuration and continue)
Выберите 1(Import tables and continue)
Please Enter System Password:
Выберите 1(Copy ibs.conf o '/etc/httpd/conf.d'
Выберите 2(chown apache directories to 'apache')
Выберите 3(Change apache config directory)
/etc/httpd
Выберите 5(Continue)
Выберите 1(Copy Logrotate Conf to /etc/logrotate.d)
Выберите 3(Continue)
Выберите 1(Copy Redhat init file to /etc/init.d)
Выберите 3(Continue)
Выберите b (Back to main menu)
Выберите x (Exit)
Запускаем все сервисы и добавляем их в автозагрузку
# service postgresql restart
# service httpd start
# service IBSng start
# chkconfig --level 35 postgresql on
# chkconfig --level 35 httpd on
# chkconfig --level 35 IBSng on
# reboot
Заходим на страничку http://localhost/IBSng/admin/
и видим веб интерфейс :)
Логин - system
Пароль - без пароля (при условии что вы его не задали при установке)
Также вы можете задать пароль в начале.
Теперь осталось настроить PPTP (или PPoE)и Radius =)
Займемся настройкой биллинга, в бесплатной версии он ведет учет VPN трафика.
Порядок настройки следующий:
- Устанавливаем и настраиваем Radius Client
- Устанавливаем и настраиваем PPTP
- Настраиваем IBSng:
* Создаем группу
* Создаем тариф, привязываем его к группе. Также добавляем правило.
* Создаем NAS с типом PPTP
* Создаем пользователя
1. Устанавливаем и настраиваем Radius Client
# wget http://pkgs.repoforge.org/radiusclient/radiusclient-0.3.2-0.2.el5.rf.i386.rpm
# rpm -ivh radiusclient-0.3.2-0.2.el5.rf.i386.rpm
Редактируем /etc/radiusclient/dictionary:
#
# Updated 97/06/13 to livingston-radius-2.01 miquels@cistron.nl
#
# This file contains dictionary translations for parsing
# requests and generating responses. All transactions are
# composed of Attribute/Value Pairs. The value of each attribute
# is specified as one of 4 data types. Valid data types are:
#
# string - 0-253 octets
# ipaddr - 4 octets in network byte order
# integer - 32 bit value in big endian order (high byte first)
# date - 32 bit value in big endian order - seconds since
# 00:00:00 GMT, Jan. 1, 1970
#
# Enumerated values are stored in the user file with dictionary
# VALUE translations for easy administration.
#
# Example:
#
# ATTRIBUTE VALUE
# --------------- -----
# Framed-Protocol = PPP
# 7 = 1 (integer encoding)
## The dictionary format now supports vendor-specific attributes.
# Vendors are introduced like this:
#
# VENDOR vendor_name vendor_number
#
# For example:
#
# VENDOR RoaringPenguin 10055
#
# Vendor-specific attributes have a fifth field with the name of the
# vendor. For example:
#
# ATTRIBUTE RP-Upstream-Speed-Limit 1 integer RoaringPenguin
#
# introduces a Roaring Penguin vendor-specific attribbute with name
# RP-Upstream-Speed-Limit, number 1, type integer and vendor RoaringPenguin.#
# Following are the proper new names. Use these.
#
ATTRIBUTE User-Name 1 string
ATTRIBUTE Password 2 string
ATTRIBUTE CHAP-Password 3 string
ATTRIBUTE NAS-IP-Address 4 ipaddr
ATTRIBUTE NAS-Port-Id 5 integer
ATTRIBUTE Service-Type 6 integer
ATTRIBUTE Framed-Protocol 7 integer
ATTRIBUTE Framed-IP-Address 8 ipaddr
ATTRIBUTE Framed-IP-Netmask 9 ipaddr
ATTRIBUTE Framed-Routing 10 integer
ATTRIBUTE Filter-Id 11 string
ATTRIBUTE Framed-MTU 12 integer
ATTRIBUTE Framed-Compression 13 integer
ATTRIBUTE Login-IP-Host 14 ipaddr
ATTRIBUTE Login-Service 15 integer
ATTRIBUTE Login-TCP-Port 16 integer
ATTRIBUTE Reply-Message 18 string
ATTRIBUTE Callback-Number 19 string
ATTRIBUTE Callback-Id 20 string
ATTRIBUTE Framed-Route 22 string
ATTRIBUTE Framed-IPX-Network 23 ipaddr
ATTRIBUTE State 24 string
ATTRIBUTE Class 25 string
ATTRIBUTE Session-Timeout 27 integer
ATTRIBUTE Idle-Timeout 28 integer
ATTRIBUTE Termination-Action 29 integer
ATTRIBUTE Called-Station-Id 30 string
ATTRIBUTE Calling-Station-Id 31 string
ATTRIBUTE NAS-Identifier 32 string
ATTRIBUTE Acct-Status-Type 40 integer
ATTRIBUTE Acct-Delay-Time 41 integer
ATTRIBUTE Acct-Input-Octets 42 integer
ATTRIBUTE Acct-Output-Octets 43 integer
ATTRIBUTE Acct-Session-Id 44 string
ATTRIBUTE Acct-Authentic 45 integer
ATTRIBUTE Acct-Session-Time 46 integer
ATTRIBUTE Acct-Input-Packets 47 integer
ATTRIBUTE Acct-Output-Packets 48 integer
ATTRIBUTE Acct-Terminate-Cause 49 integer
ATTRIBUTE Chap-Challenge 60 string
ATTRIBUTE NAS-Port-Type 61 integer
ATTRIBUTE Port-Limit 62 integer
ATTRIBUTE Connect-Info 77 string# RFC 2869
ATTRIBUTE Acct-Interim-Interval 85 integer#
# Experimental Non Protocol Attributes used by Cistron-Radiusd
#
ATTRIBUTE Huntgroup-Name 221 string
ATTRIBUTE User-Category 1029 string
ATTRIBUTE Group-Name 1030 string
ATTRIBUTE Simultaneous-Use 1034 integer
ATTRIBUTE Strip-User-Name 1035 integer
ATTRIBUTE Fall-Through 1036 integer
ATTRIBUTE Add-Port-To-IP-Address 1037 integer
ATTRIBUTE Exec-Program 1038 string
ATTRIBUTE Exec-Program-Wait 1039 string
ATTRIBUTE Hint 1040 string#
# Non-Protocol Attributes
# These attributes are used internally by the server
#
ATTRIBUTE Expiration 21 date
ATTRIBUTE Auth-Type 1000 integer
ATTRIBUTE Menu 1001 string
ATTRIBUTE Termination-Menu 1002 string
ATTRIBUTE Prefix 1003 string
ATTRIBUTE Suffix 1004 string
ATTRIBUTE Group 1005 string
ATTRIBUTE Crypt-Password 1006 string
ATTRIBUTE Connect-Rate 1007 integer#
# Experimental, implementation specific attributes
#
# Limit session traffic
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#
# Integer Translations
## User Types
VALUE Service-Type Login-User 1
VALUE Service-Type Framed-User 2
VALUE Service-Type Callback-Login-User 3
VALUE Service-Type Callback-Framed-User 4
VALUE Service-Type Outbound-User 5
VALUE Service-Type Administrative-User 6
VALUE Service-Type NAS-Prompt-User 7# Framed Protocols
VALUE Framed-Protocol PPP 1
VALUE Framed-Protocol SLIP 2# Framed Routing Values
VALUE Framed-Routing None 0
VALUE Framed-Routing Broadcast 1
VALUE Framed-Routing Listen 2
VALUE Framed-Routing Broadcast-Listen 3# Framed Compression Types
VALUE Framed-Compression None 0
VALUE Framed-Compression Van-Jacobson-TCP-IP 1# Login Services
VALUE Login-Service Telnet 0
VALUE Login-Service Rlogin 1
VALUE Login-Service TCP-Clear 2
VALUE Login-Service PortMaster 3# Status Types
VALUE Acct-Status-Type Start 1
VALUE Acct-Status-Type Stop 2
VALUE Acct-Status-Type Accounting-On 7
VALUE Acct-Status-Type Accounting-Off 8# Authentication Types
VALUE Acct-Authentic RADIUS 1
VALUE Acct-Authentic Local 2
VALUE Acct-Authentic PowerLink128 100# Termination Options
VALUE Termination-Action Default 0
VALUE Termination-Action RADIUS-Request 1# NAS Port Types, available in 3.3.1 and later
VALUE NAS-Port-Type Async 0
VALUE NAS-Port-Type Sync 1
VALUE NAS-Port-Type ISDN 2
VALUE NAS-Port-Type ISDN-V120 3
VALUE NAS-Port-Type ISDN-V110 4# Acct Terminate Causes, available in 3.3.2 and later
VALUE Acct-Terminate-Cause User-Request 1
VALUE Acct-Terminate-Cause Lost-Carrier 2
VALUE Acct-Terminate-Cause Lost-Service 3
VALUE Acct-Terminate-Cause Idle-Timeout 4
VALUE Acct-Terminate-Cause Session-Timeout 5
VALUE Acct-Terminate-Cause Admin-Reset 6
VALUE Acct-Terminate-Cause Admin-Reboot 7
VALUE Acct-Terminate-Cause Port-Error 8
VALUE Acct-Terminate-Cause NAS-Error 9
VALUE Acct-Terminate-Cause NAS-Request 10
VALUE Acct-Terminate-Cause NAS-Reboot 11
VALUE Acct-Terminate-Cause Port-Unneeded 12
VALUE Acct-Terminate-Cause Port-Preempted 13
VALUE Acct-Terminate-Cause Port-Suspended 14
VALUE Acct-Terminate-Cause Service-Unavailable 15
VALUE Acct-Terminate-Cause Callback 16
VALUE Acct-Terminate-Cause User-Error 17
VALUE Acct-Terminate-Cause Host-Request 18#
# Non-Protocol Integer Translations
#VALUE Auth-Type Local 0
VALUE Auth-Type System 1
VALUE Auth-Type SecurID 2
VALUE Auth-Type Crypt-Local 3
VALUE Auth-Type Reject 4#
# Cistron extensions
#
VALUE Auth-Type Pam 253
VALUE Auth-Type None 254#
# Experimental Non-Protocol Integer Translations for Cistron-Radiusd
#
VALUE Fall-Through No 0
VALUE Fall-Through Yes 1
VALUE Add-Port-To-IP-Address No 0
VALUE Add-Port-To-IP-Address Yes 1#
# Configuration Values
# uncomment these two lines to turn account expiration on
##VALUE Server-Config Password-Expiration 30
#VALUE Server-Config Password-Warning 5# Octets-Direction
VALUE Octets-Direction Sum 0
VALUE Octets-Direction Input 1
VALUE Octets-Direction Output 2
VALUE Octets-Direction MaxOveral 3
VALUE Octets-Direction MaxSession 4INCLUDE /etc/radiusclient/dictionary.microsoft
INCLUDE /etc/radiusclient/dictionary.merit
# Limit session traffic
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
# Connection Speed Limit
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 integerATTRIBUTE Acct-Interim-Interval 85 integer
Скачиваем dictionary.microsoft словарь по этой ссылке:
http://cakebilling.googlecode.com/files/etc.tar.bz2
Копируем его в папку /etc/radiusclient
# cp dictionary.microsoft /etc/radiusclient
Редактируем /etc/radiusclient/servers
# gedit /etc/radiusclient/serversВ конец добавляем строчку:
127.0.0.1 radsecret
Устанавливаем PPP/PPTP:
# yum remove ppp -y
# wget http://poptop.sourceforge.net/yum/stable/packages/ppp-2.4.4-14.1.rhel5.i386.rpm
# rpm -ivh ppp-2.4.4-14.1.rhel5.i386.rpm
# wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
# rpm -ivh pptpd-1.3.4-2.rhel5.i386.rpm
# gedit /etc/pptpd.conf
option /etc/ppp/options.pptpd
localip 192.168.0.1
remoteip 192.168.0.2-254
# gedit /etc/ppp/options.pptpd
lock
#debug
name pptpd
nodeflate
nobsdcomp
auth
+chap
+mschap-v2
+mschap
nomppe
ms-dns 10.168.50.1
plugin /usr/lib/pppd/2.4.4/radius.so
Настраиваем IBSng:
* Создаем группу
* Создаем тариф, привязываем его к группе. Также добавляем правило.
* Создаем NAS с типом PPTP
* Создаем пользователя
Сперва создадим группу, выделим вкладку GROUP, далле выберем Add New Group:
Дадим имя создаваемой группе MyGroup -> OK
В открывшемся окне поставим галочку возле надписи INTERNET CHARGE, нажмем EDIT.
В маленьком окошке поставим галочку HAS INTERNET CHARGE.
* Создаем тариф, привязываем его к группе. Также добавляем правило.
Шелкаем по меню SETTING
Выбераем CHARGE
Заполняем:
Шелкаем Add Internet Charge Rule в правой стороне
Заполняем:
Добавлем NAS Меню RAS -> Add New RAS:
Добавляем юзера Меню Users -> Add New User
Когда все настроено, можно проверять работу.
Чтобы протестировать соединение с нашим сервером, возьмите клиентский компьютер в локальной сети.
Создайте на нем новое подключение "Подключение к виртуальной частной сети" со следующими параметрами:
- Введите IP адрес VPN сервера с установленным IBSng
- Шифрование: Не обязательное (Подключится даже если нет шифрования)
- Обычне (рекомендуемые параметры)
- Логин и пароль: Tanya/123
Все!!!
Чтобы не настраивать PPTP и RadiusClient сушествует уже готовый дистрибутив на основе Debian в котором все уже установлено и настроенно. По этой ссылке вы можете скачать его: http://sourceforge.net/projects/ibs/files/IBSng/IBSng-A1.24-LinuxDistro-cd-v1.iso/IBSng-A1.24-LinuxDistro-cd-v1.iso/download
После как запустите и установите Debian с уже настроенным IBSng, надо поставить пароль на админску учтеную запись с помощью скрипта:
# /usr/local/IBSng/scripts/setup.py
Поменяйте пароль системного пользователя system и перезапустите демон IBSng:
# service ibs restart
После можете войти веб интерфейс http://127.0.0.1
______
Config файлы: http://rghost.ru/37383282