Установка
Установка Asterisk PBX
# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.8.17.0.tar.gz
# tar xzf asterisk-1.8.17.0.tar.gz
# cd asterisk-1.8.17.0
# 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 из пакетов и настраиваем.
# perl -MCPAN -e shell (при первом запуске отвечаем дефолтно на все вопросы) cpan>install Config::IniFiles install Crypt::CBC install Crypt::DES install Authen::Radius install Asterisk::AGI cpan>q
Для отправки CDR записей на биллиг используется Radius
# wget http://prdownload.berlios.de/radiusclient-ng/radiusclient-ng-0.5.6.tar.gz
# tar zxvf radiusclient-ng-0.5.6.tar.gz
# cd radiusclient-ng-0.5.6
# ./configure
# ./make
# ./make install
По умолчанию Asterisk не поддерживает авторизацию через Radius, для этого необходимо использовать специальный AGI скрипт основанный на разработке PortaOne, который находится в биллинге
# ls -l /usr/local/ics/bin/agi-rad-auth.agi
# scp /usr/local/ics/bin/agi-rad-auth.agi <адрес сервера астериск>:/var/lib/asterisk/agi-bin/
Это скрипт вызывается перед набором номера и если биллинг разрешает звонок то Asterisk двигается дальше по цепочке.
Настройка
В файл /etc/asterisk/modules.conf необходимо включить модуль
load => res_agi.so
Примеры настройки:
IP Carbon Billing:10.1.1.1
IP Asterisk:10.1.1.2
Secret:servicem
Порты Radius сервера:2812 и 2813
[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=office 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=office context=sip_auth externalauth=yes callerid=920621 disallow=all allow=ulaw subscribemwi = no mailbox=100@office callgroup=1 pickupgroup=1
[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=yes ; Время по GMT loguniqueid=yes loguserfield=yes radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf