Установка
При установке использовались следующие реквизиты:
IP Carbon Billing:10.1.1.1
IP Asterisk:10.1.1.2
Secret:servicem
Порты Radius сервера:2812 и 2813
Внимание! Серверы должны находиться в одной подсети и иметь статичные уникальные адреса.
Предполагается что Asterisk установлен на CentOS 6.4. Скачать дистрибутив CentOS 6.4 вы всегда можете с одного из зеркал на официальном сайте или с нашего зеркала.
Настройка CentOS 6.4
После установки CentOS 6.4 необходимо настроить сеть.
Установка вручную, в CentOS 6.4 minimal версии
Для того чтобы настроить доступ к сети, необходимо поправить конфигурационный файл:
/etc/sysconfig/network-scripts/ifcfg-eth0
или другой, в зависимости от того, через какую сетевую карту вы планируете ходить в интернет.
Сделать это можно с помощью текстового редактора vi:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Для редактирования используем клавишу i - после нажатия в открытом файле появится возможность редактирования.
В файле необходимо изменить и добавить следующие поля:
DEVICE=eth0
IPADDR=здесь.ваш.ip.адрес
NETMASK=здесь.ваша.сетевая.маска
GATEWAY=здесь.укажите.ip.шлюза
DEFROUTE=yes
DNS1=здесь.укажите.ip.dns-сервера
DNS2=здесь.укажите.ip.dns-сервера2
ONBOOT=yes
TYPE=Ethernet
NM_CONTROLLED=no
BOOTPROTO=static
Например:
DEVICE=eth0
IPADDR=192.168.0.105
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DEFROUTE=yes
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes
TYPE=Ethernet
NM_CONTROLLED=no
BOOTPROTO=static
После редактирования нажимаем последовательно: Esc, символ двоеточия (на английской раскладке. При этом символ ":" появится в левом нижнем углу.
wq! - команда сохраняет изменения и выходит.
После этого, выполните
/etc/init.d/network restart
и проверьте наличие доступа к сети:
ping -c 4 8.8.8.8
Если всё в порядке - значит теперь сеть настроена.
Далее потребуется установка дополнительных компонентов:
установка wget
yum install wget
установка make
yum install make
установка gcc
yum install gcc
установка perl ExtUtils
yum install perl-ExtUtils-Embed
установка perl CPAN
yum install perl-CPAN
установка Radius
yum install perl-Authen-Radius
Установка Radius
Для отправки CDR записей на биллиг используется Radius. Устанавливаем до сборки Asterisk чтобы он собрался с поддержкой этого модуля. Скачать дистрибутив можно тут [^radiusclient-ng-0.5.6.tar.gz] или командами ниже.
wget http://docs.carbonsoft.ru/download/attachments/52428850/radiusclient-ng-0.5.6.tar.gz?version=1&modificationDate=1468421837105
tar zxvf radiusclient-ng-0.5.6.tar.gz
cd radiusclient-ng-0.5.6
./configure
make
make install
Установка Asterisk PBX
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.8.17.0.tar.gz
tar xzvf asterisk-1.8.17.0.tar.gz
cd asterisk-1.8.17.0
cp contrib/dictionary.digium /usr/local/etc/radiusclient-ng/
contrib/scripts/install_prereq install
./configure
make
make install
Если Вы новичок установите сразу дефолтные конфигурационные файлы.
make samples
Установка Perl AGI интерфейса к AGI.
wget http://asterisk.gnuinter.net/files/asterisk-perl-1.03.tar.gz
tar zxvf asterisk-perl-1.03.tar.gz
cd asterisk-perl-1.03
perl Makefile.PL
make
make test
make install
Устанавливаем perl из пакетов и настраиваем. При устовке отдельного пакета он может попросить для тестирования ввести ip и порт Radius сервера биллинга 10.1.1.1:2812 и логин абонента в биллинге с паролем.
ВНИМАНИЕ! В зависимости от дистрибутива и окружения, некоторые пакеты могут не устанавливаться из-за зависимостей. Проверяйте вывод каждой команды на предмет ошибок.
perl -MCPAN -e shell (при первом запуске отвечаем дефолтно на все вопросы) cpan>install Config::IniFiles cpan>install Crypt::CBC cpan>install Crypt::DES cpan>install Authen::Radius cpan>install Asterisk::AGI cpan>q
По умолчанию Asterisk не поддерживает авторизацию через Radius, для этого необходимо использовать специальный AGI скрипт основанный на разработке PortaOne, который находится в биллинге
ls -l /app/asr_billing/usr/local/bin/agi-rad-auth.agi
scp /app/asr_billing/usr/local/bin/agi-rad-auth.agi <адрес сервера астериск>:/var/lib/asterisk/agi-bin/
После этого надо дать права на запуск этого файла Asterisk
chown asterisk:asterisk /var/lib/asterisk/agi-bin/agi-rad-auth.agi chmod o+x /var/lib/asterisk/agi-bin/agi-rad-auth.agi
Это скрипт вызывается перед набором номера и если биллинг разрешает звонок то Asterisk двигается дальше по цепочке.
Настройка
В файл /etc/asterisk/modules.conf необходимо включить модуль
load => res_agi.so
[general] context=office ; Default context for incoming calls allowguest=no ; Allow or reject guest calls (default is yes) allowoverlap=no ; Disable overlap dialing support. (Default is yes) udpbindport=5060 udpbindaddr=0.0.0.0 srvlookup=yes disallow=all allow=alaw,ulaw,gsm canreinvite=no dtmfmode=rfc2833 [200] type=friend host=dynamic username=200 secret=123 nat=no canreinvite=no context=sip_auth externalauth=yes callerid=920620 disallow=all allow=ulaw subscribemwi = no mailbox=200@office callgroup=1 pickupgroup=1 [201] type=friend host=dynamic username=201 secret=123 nat=no canreinvite=no context=sip_auth externalauth=yes callerid=920621 disallow=all allow=ulaw subscribemwi = no mailbox=100@office callgroup=1 pickupgroup=1
Внимание! Поле callerid это тот логин который проверяет биллинг, и который надо указывать при подключении услуги.
[general]
static=yes
writeprotect=no
;clearglobalvars=no
[globals]
RADIUS_Server=10.1.1.1
RADIUS_Secret=servicem
RADIUS_Auth_Port=2812
RAIUS_Acct_Port=2813
Acct_Update_Timeout=60
NAS_IP_Address=10.1.1.2
;Маршруты для входящих звонков
[office]
exten => _X.,1,AGI(agi-rad-auth.agi,Routing=EXT)
exten => _X.,n,Dial(SIP/${EXTEN},60,tT)
exten => _X.,n,Hangup
exten => h,1,Hangup
;Маршруты для исходящих звонков
[sip_auth]
exten => _X.,1,Set(SIP_Authorization=${SIP_HEADER(Authorization)})
exten => _X.,n,AGI(agi-rad-auth.agi,Routing=SIP&AuthorizeBy=SIP)
exten => _X.,n,Dial(SIP/VOIP/${EXTEN},60,tT)
exten => _X.,n,Hangup
exten => h,1,Hangup
Добавляем Radius сервер в разрешенные и указываем secret тот же что и указали в биллинге
10.1.1.1 servicem
Меняем адреса Radius сервера
authserver 10.1.1.1:2812 acctserver 10.1.1.1:2813
Добавляем
[radius] usegmtime=no ; Время по GMT loguniqueid=yes loguserfield=yes radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf
Добавляем загрузку специального словаря который можно взять из asterisk-1.8.17.0/contrib/
$INCLUDE /usr/local/etc/radiusclient-ng/dictionary.digium