Asterisk

Skip to end of metadata
Go to start of metadata

Настройка биллинга

Добавьте оборудование в биллинг и запустите Radius по инструкциям раздела Настройка VoIP оборудования в биллинге

Описание

При установке использовались следующие реквизиты

IP Carbon Billing:10.1.1.1
IP Asterisk:10.1.1.2
Secret:servicem
Порты Radius сервера:2812 и 2813

При тестировании по указанной инструкции, серверы должны находиться в одной подсети и иметь статичные уникальные адреса.
Тем не менее, в коммерческой эксплуатации это не обязательно. Важно только чтобы сервера имели связь протоколу IPv4

Предполагается что Asterisk установлен на CentOS 6.4. Скачать дистрибутив CentOS 6.4 вы всегда можете с одного из зеркал на официальном сайте или с нашего зеркала.

Настройка CentOS

Настройка сети

Предположим что после установки CetOS, сетевой интерфейс получил имя eth0 (можно посмотреть в выводе команды ip a).

  1. Отредактируйте настройки интерфейса
    /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    IPADDR=10.1.1.2
    NETMASK=255.255.0.0
    GATEWAY=10.1.0.1
    DEFROUTE=yes
    DNS1=8.8.8.8
    DNS2=8.8.4.4
    ONBOOT=yes
    TYPE=Ethernet
    NM_CONTROLLED=no
    BOOTPROTO=static
    
  2. Примените их
    /etc/init.d/network restart
  3. Проверьте наличие доступа к сети:
    ping -c 4 8.8.8.8

    Если всё в порядке - значит теперь сеть настроена.

Установка необходимого ПО

Далее потребуется установка дополнительных компонентов для сборки Астериска. Добавьте репозиторий EPEL и установите необходимые пакеты.

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
rpm -i epel-release-latest-6.noarch.rpm
yum install wget make gcc perl-ExtUtils-Embed perl-CPAN perl-Authen-Radius perl-Time-HiRes perl-YAML

Установка Asterisk

Установка Radius

Для отправки CDR записей на биллиг используется Radius, установите его до сборки Asterisk чтобы он собрался с поддержкой нужного модуля:

wget http://docs.carbonsoft.ru/download/attachments/52428850/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 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 config
chkconfig asterisk on

Если Вы новичок установите сразу стандартные конфигурационные файлы.

make samples

Установка Perl AGI интерфейса к AGI.

wget http://search.cpan.org/CPAN/authors/id/J/JA/JAMESGOL/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 и логин абонента в биллинге с паролем.

В зависимости от дистрибутива и окружения, некоторые пакеты могут не устанавливаться из-за зависимостей. Проверяйте вывод каждой команды на предмет ошибок.

Запустите CPAN (при первом запуске отвечаем дефолтно на все вопросы) и настройте автоматическую установку зависимостей. Не выходя из шела установите необходимые пакеты. После выйдите командой "q".

perl -MCPAN -e shell
o conf build_requires_install_policy yes
o conf prerequisites_policy follow
o conf commit
install Config::IniFiles
install Crypt::CBC
install Crypt::DES
install Authen::Radius
install Asterisk::AGI
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 root@10.1.1.2:/var/lib/asterisk/agi-bin/

После этого надо дать права на запуск этого файла Asterisk

На сервере 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 двигается дальше по цепочке.

Настройка Asterisk

В файл /etc/asterisk/modules.conf необходимо включить модуль поддержки AGI

load => res_agi.so

Настройте SIP-аккаунты

/etc/asterisk/sip.conf
[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 это тот логин который проверяет биллинг, и который надо указывать при подключении услуги.

Настройте диалплан

/etc/asterisk/extensions.conf
[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 тот же что и указали в биллинге

/usr/local/etc/radiusclient-ng/servers
10.1.1.1 servicem

Меняем адреса Radius сервера

/usr/local/etc/radiusclient-ng/radiusclient.conf
authserver 10.1.1.1:2812
acctserver 10.1.1.1:2813

Добавляем

/etc/asterisk/cdr.conf
[radius]
usegmtime=no ; Время по GMT
loguniqueid=yes
loguserfield=yes
radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf

Добавьте загрузку специального словаря который можно взять из asterisk-1.8.17.0/contrib/

/usr/local/etc/radiusclient-ng/dictionary
$INCLUDE /usr/local/etc/radiusclient-ng/dictionary.digium
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.
  1. май 23, 2013

    Клинских Антон говорит:

    asterisk -cvvvvv Удобно использовать при отладке

    asterisk -cvvvvv

    Удобно использовать при отладке