Este documento descreve como instalar e configurar um PBX IP gratuito utilizando o software Asterisk no Debian. Ele explica como instalar os pacotes necessários, configurar ramais SIP e IAX, e criar um plano de discagem básico.
Redes Mesh wifi para disponibilização de acesso à internet
Asterisk
1. Asterisk - Construindo um PBX IP com Software
Livre (Parte 1)
AsteriskDigium
Licenciamento a custo zero - Licenciado sob a GPL (General Public License).FlexibilidadeRedução de
custos - A integração de unidades geograficamente diferentes via internet, aliada as baixas tarifas oferecidas
por provedores VoIP, produzem a redução significativa do custo com telefonia.
Vários são os recursos que podem ser implementados no Asterisk, a seguir apenas alguns dos recursos
disponíveis:
• Correio de voz (integrado ao e-mail)
• Sistema de bilhetagem
• Conferência
• Siga-me
• URA (Unidade de Resposta Audível)
• DAC (Distribuidor Automático de Chamadas)
Este é o primeiro de uma série de tutoriais sobre Asterisk, e a cada tutorial, irei adicionar mais
funcionalidades a nossa central telefônica.
Pré-requisitos
Sistema operacional instalado e atualizado.
Informações gerais
Sistema Operacional: Debian Lenny 5.0
• Tipo de host: Virtual
• Hypervisor: VMware Fusion
• Hd: 10 GB
• Partições:
• /
• 3072 MB (ReiserFS)
• swap - 512 MB (Swap)
• /var - 6416 MB (ReiserFS)
• Memória RAM: 512 MB
• Endereço IP: 192.168.0.10
asterisk-110618153002-phpapp02.odt 1/12
2. • Máscara: 255.255.255.0
Mãos à obra!
1. Instalar dependências
# aptitude -y install apache2 apache2.2-common apache2-mpm-prefork
apache2-utils autoconf automake binutils bison bzip2 doxygen g++ g++-4.1 gcc
graphviz
gsfonts less libapache2-mod-php5 libapache2-mod-perl2 libasound2-dev libc6-dev
libcurl3
libcurl3-dev libdbd-mysql-perl libedit2 libedit-dev libeditline0 libeditline-dev
libgcrypt11
libiksemel3 libiksemel-dev libmcrypt4 libmcrypt-dev libmhash2 libmyodbc
libmysqlclient15-dev libmysqlclient15off libncurses5 libncurses5-dev libnewt0.52
libnewt-dev
libogg-dev libsnmp libsnmp-dev libsnmp-base libsnmp-perl libspandsp1 libspandsp-
dev libspeex1
libspeex-dev libssl0.9.8 libssl-dev libtiff4-dev libtiff-tools libvorbis-dev
libwrap0-dev libxml2
libxml2-dev linux-headers-`uname -r`lrzsz make mc mcrypt mime-construct mysql-
server-5.0 ntp
ntpdate openssh-server openssl patch pciutils php5 php5-cgi php5-cli php5-common
php5-gd
php5-mcrypt php5-mysql php-pear procps sox tofrodos unixodbc-dev unzip vim
zlib1g-dev phpmyadmin
Durante a instalação, será solicitada a senha do usuário root domysql, basta digitar a senha e
confirmar. OphpMyAdmin irá solicitar informações sobre o servidor web, basta marcar a
opçãoapache2.
2. Criar diretório para downloads (opcional)
# mkdir /downloads
# cd /downloads
3. Download dos pacotes
# wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases/dahdi-
tools-2.2.0.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-
linux-2.2.0.2.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4.10.2.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/asterisk/old-
releases/asterisk-addons-1.4.9.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/asterisk/old-
releases/asterisk-1.4.26.2.tar.gz
4. Descompactar
# tar -zxf libpri-1.4.10.2.tar.gz -C /usr/src/
# tar -zxf asterisk-1.4.26.2.tar.gz -C /usr/src/
# tar -zxf asterisk-addons-1.4.9.tar.gz -C /usr/src/
# tar -zxf dahdi-linux-2.2.0.2.tar.gz -C /usr/src/
# tar -zxf dahdi-tools-2.2.0.tar.gz -C /usr/src/
5. Instalar pacotes
asterisk-110618153002-phpapp02.odt 2/12
3. Libpri
# cd /usr/src/libpri-1.4.10.2/
# make
# make install
Asterisk
# cd ../asterisk-1.4.26.2/
# sh configure
# make
# make install
# make samples
# make progdocs
# make config
make samples - Gera arquivos de exemplo do Asterisk.
make progdocs - Gera arquivos de documentação do Asterisk.
make config - Ativa a inicialização automática do Asterisk no boot do sistema.
Asterisk-Addons
# cd ../asterisk-addons-1.4.9/
# sh configure
# make
# make install
# make samples
Dahdi
# cd ../dahdi-linux-2.2.0.2/
Antes de instalar, é necessário fazer uma pequena alteração no arquivo
drivers/dahdi/Kbuild
# vi drivers/dahdi/Kbuild
Comentar a linha 20, que deve ficar como a linha abaixo:
#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_TOR2) += tor2.o
Feito isto, é possível continuar com a instalação do dahdi
# make
# make install
Dahdi-Tools
# cd ../dahdi-tools-2.2.0/
# sh configure
# make
# make install
# make config
6. Reinicializar o sistema
# shutdown -r now
asterisk-110618153002-phpapp02.odt 3/12
4. 7. Verificar se o Asterisk está executando
# ps aux | grep asterisk
Resultado:
root 2767 0.0 2.2 33052 11408 ? Ssl 08:48 0:00
/usr/sbin/asterisk
root 2985 0.0 0.1 3140 760 pts/0 R<+ 09:16 0:00 grep asterisk
8. Verificar se as portas do Asterisk estão abertas
netstat -anp | grep asterisk
Resultado:
tcp 0 0 0.0.0.0:2000 0.0.0.0:* OUÇA
2767/asterisk
tcp 0 0 0.0.0.0:1720 0.0.0.0:* OUÇA
2767/asterisk
udp 0 0 0.0.0.0:2727 0.0.0.0:*
2767/asterisk
udp 0 0 0.0.0.0:4520 0.0.0.0:*
2767/asterisk
udp 0 0 0.0.0.0:5060 0.0.0.0:*
2767/asterisk
udp 0 0 0.0.0.0:4569 0.0.0.0:*
2767/asterisk
unix 2 [ ACC ] STREAM OUVINDO 6134 2767/asterisk /
var/run/asterisk.ctl
Neste ponto do tutorial o Asterisk já está instalado e funcionando perfeitamente.
9. Localização dos arquivos
Arquivos de configuração do Asterisk
/etc/asterisk
Conteúdo do diretório:
# ls /etc/asterisk/
adsi.conf cdr_mysql.conf extensions.conf jabber.conf
osp.conf say.conf
adtranvofr.conf cdr_odbc.conf features.conf logger.conf
oss.conf sip.conf
agents.conf cdr_pgsql.conf festival.conf manager.conf
phone.conf sip_notify.conf
alarmreceiver.conf cdr_tds.conf followme.conf meetme.conf
privacy.conf skinny.conf
alsa.conf chan_dahdi.conf func_odbc.conf mgcp.conf
queues.conf sla.conf
amd.conf codecs.conf gtalk.conf misdn.conf
res_mysql.conf smdi.conf
asterisk.adsi dnsmgr.conf h323.conf modules.conf
res_odbc.conf telcordia-1.adsi
asterisk.conf dundi.conf http.conf musiconhold.conf
res_pgsql.conf udptl.conf
cdr.conf enum.conf iax.conf muted.conf
asterisk-110618153002-phpapp02.odt 4/12
5. res_snmp.conf users.conf
cdr_custom.conf extconfig.conf iaxprov.conf mysql.conf
rpt.conf voicemail.conf
cdr_manager.conf extensions.ael indications.conf ooh323.conf
rtp.conf vpb.conf
Arquivos de sons, licenças, scripts, etc.
/var/lib/asterisk
Arquivos temporários, e arquivos gerados pelo Asterisk
/var/spool/asterisk
Arquivos de log, bilhetes, etc.
/var/log/asterisk
No próximo tutorial irei demonstrar como criar ramais, plano de discagem e configurar o softphone
que será utilizado para efetuar ligações.
Até o próximo!
:wq!?Andrey Smith
Asterisk - Construindo um PBX IP com Software
Livre (Parte 2)
1. Pré-requisitos
2. Informações gerais
Será utilizada a mesma configuração da parte 1 do tutorial.
Mãos à obra!
3. Criar ramais SIP
sip.conf
Renomear sip.conf
# mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf.orig
Criar e editar um novo arquivo sip.conf
# vi /etc/asterisk/sip.conf
[general]
bindport = 5060
bindaddr = 0.0.0.0
asterisk-110618153002-phpapp02.odt 5/12
6. disallow = all
allow = alaw,ulaw,gsm
language = pt_BR
[1001]
type = friend
context = tutorial
secret = 12345
host = dynamic
[1002]
type = friend
context = tutorial
secret = 54321
host = dynamic
[general] Esta seção define os valores default (padrão) para as demais seções e/ou protocolo.
Porta utilizada pelo protocolo. O SIP utiliza as portas 5060 TCP e UDP, e 5061 TCP para TSL
bindport
(Transporte Layer Security).
Endereço IP onde o Asterisk aceitará conexões. Se configurado como 0.0.0.0, aceitará
bindaddr
conexões em qualquer IP.
disallow Desabilita codecs, a opção all desabilita todos codecs.
allow Habilita o (s) codec (s) especificado (s).
Configuração padrão de idioma para users/peers. É possível configurar individualmente em
language
cada peer.
[XXXX] Identificação do ramal.
Define se o ramal pode receber chamadas (peer), efetuar chamadas (user), ou receber e efetuar
type
chamadas (friend).
Define o contexto ao qual o ramal pertence. Este contexto será criado posteriormente no plano
context
de discagem.
secret Senha para registrar o ramal no servidor.
Informa onde o ramal está registrado. Aceita endereço dinâmico, quando configurado como
host
dynamic.
4. Criar ramais IAX
Renomear iax.conf
# mv /etc/asterisk/iax.conf /etc/asterisk/iax.conf.orig
Criar e editar um novo arquivo iax.conf
# vi /etc/asterisk/iax.conf
Conteúdo do arquivo:
[general]
asterisk-110618153002-phpapp02.odt 6/12
7. bindport = 4569
bindaddr = 0.0.0.0
disallow = all
allow = alaw,ulaw,gsm
language = pt_BR
[1003]
type = friend
context = tutorial
secret = 12345
host = dynamic
requirecalltoken = no
[1004]
type = friend
context = tutorial
secret = 54321
host = dynamic
requirecalltoken = no
[general] Esta seção define os valores default (padrão) para as demais seções e/ou protocolo.
bindport Porta utilizada pelo protocolo. O IAX utiliza a porta 4569 UDP.
Endereço IP onde o Asterisk aceitará conexões. Se configurado como 0.0.0.0,
bindaddr
aceitará conexões em qualquer IP.
disallow Desabilita codecs, a opção all desabilita todos codecs.
allow Habilita o (s) codec (s) especificado (s).
Configuração padrão de Idioma para users/peers. É possível configurar
language
individualmente em cada peer.
[XXXX] Identificação do ramal.
Define se o ramal pode receber chamadas (peer), efetuar chamadas (user), ou
type
receber e efetuar chamadas (friend).
Define o contexto ao qual o ramal pertence. Este contexto será criado
context
posteriormente no plano de discagem.
secret Senha para registrar o ramal no servidor.
Informa onde o ramal está registrado. Aceita endereço dinâmico, quando
host
configurado como dynamic.
requirecalltoken =
Informa que não há necesside de validar a chamada por token
no
5. Criar o plano de discagem (Dial Plan)
Renomear extensions.conf
# mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.orig
Criar e editar um novo arquivo extensions.conf
asterisk-110618153002-phpapp02.odt 7/12
8. # vi /etc/asterisk/extensions.conf
Conteúdo do arquivo:
[tutorial]
exten => 1001,1,Dial(SIP/1001)
exten => 1002,1,Dial(SIP/1002)
exten => 1003,1,Dial(IAX/1003)
exten => 1004,1,Dial(IAX/1004)
[tutorial] Contexto contendo regras de discagem.
Por ser um assunto de maior abrangência, o plano de discagem terá um tutorial exclusivo.
6. Ativar as configurações
Acessar a CLI (Command Line Interface) do Asterisk
# rasterisk
ou
# asterisk -r
Resultado:
Asterisk 1.4.26.2, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.4.26.2 currently running on debian (pid = 2800)
debian*CLI>
Recarregar as configurações SIP
sip reload
Mostrar ramais (peers) criados no sip.conf
sip show peers
Resultado:
Name/username Host Dyn Nat ACL Port Status
1002 (Unspecified) D 0 Unmonitored
1001 (Unspecified) D 0 Unmonitored
2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 0 online, 2 offline]
Recarregar as configurações IAX
iax2 reload
Mostrar ramais (peers) criados no iax.conf
asterisk-110618153002-phpapp02.odt 8/12
9. iax2 show peers
Resultado:
Name/Username Host Mask Port Status
1004 (Unspecified) (D) 255.255.255.255 0 Unmonitored
1003 (Unspecified) (D) 255.255.255.255 0 Unmonitored
2 iax2 peers [0 online, 0 offline, 2 unmonitored]
Recarregar as configurações do plano de discagem
dialplan reload
Resultado:
Dialplan reloaded.
Verificar se o plano de discagem foi carregado
dialplan show tutorial
Resultado:
[ Context 'tutorial' created by 'pbx_config' ]
'1001' => 1. Dial(SIP/1001) [pbx_config]
'1002' => 1. Dial(SIP/1002) [pbx_config]
'1003' => 1. Dial(SIP/1003) [pbx_config]
'1004' => 1. Dial(SIP/1004) [pbx_config]
-= 4 extensions (4 priorities) in 1 context. =-
Sair da CLI
exit
7. Configuração do softphone
Softphone é um software utilizado para efetuar chamadas telefônicas, a partir de um computador.
Para efetuar os testes irei utilizar o sofphone Zoiper, que possui versões para Linux, Mac e Windows.
O Zoiper tem suporte aos protocolos SIP e IAX, e permite registrar duas contas simultaneamente. Desta
forma, com apenas um computador consigo testar se os ramais estão efetuando chamadas entre si.
A instalação do Zoiper é bastante simples, por este motivo não será abordada neste tutorial.
Depois de instalado, basta executá-lo.
Se quiser que o Zoiper inicie ao fazer o login, clique em Yes.
Clique no ícone da ferramenta (acima do número 6) para acessar o menu de configurações.
asterisk-110618153002-phpapp02.odt 9/12
10. Clique em Add new SIP account, e informe o nome da conta em Name.
Em SIP account options preencha conforme a figura abaixo e clique em Ok.
Clique em Add new IAX account, e informe o nome da conta em Name.
Em IAX account options preencha conforme a figura abaixo e clique em Ok.
Com as contas criadas, o próximo passo é registrá-las para efetuar chamadas. Na tela principal do Zoiper,
selecione a conta em Account e clique em Register, este procedimento deve ser feito para as duas contas.
Agora basta discar para o outro ramal. No exemplo abaixo, a chamada tem como origem o ramal 1003, e
destino o ramal 1001.
asterisk-110618153002-phpapp02.odt 10/12
11. Traduzindo a imagem abaixo:
Incoming call é ramal que está efetuando a chamada para 1001. É possível aceitar (Accept), rejeitar
(Regect) ou ignorar (Ignore).
O ideal é executar este teste com mais de um computador e com uso de headset. Porém, apenas para efeito
de teste, já é possível comprovar que a comunicação entre ramais está funcionando.
8. Verificar ramais registrados
Os comandos abaixo são executados na CLI do Asterisk.
Verificar ramais SIP.
sip show peers
Resultado:
asterisk-110618153002-phpapp02.odt 11/12
12. Name/username Host Dyn Nat ACL Port Status
1002 (Unspecified) D 0 Unmonitored
1001/1001 189.110.52.67 D 59927 Unmonitored
2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 1 online, 1 offline]
Verificar ramais IAX.
iax2 show peers
Resultado:
Name/Username Host Mask Port Status
1004 (Unspecified) (D) 255.255.255.255 0 Unmonitored
1003 192.168.0.134 (D) 255.255.255.255 4569 Unmonitored
2 iax2 peers [0 online, 0 offline, 2 unmonitored]
Os resultados acima estão informando em que host e portas os ramais estão registrados.
No próximo tutorial irei demonstrar como criar uma Unidade de Resposta Audível (URA).
asterisk-110618153002-phpapp02.odt 12/12