Académique Documents
Professionnel Documents
Culture Documents
www.4linux.com.br
Sumrio
# - Indica o console de terminal do linux, como usurio root. Os comandos desta linha
somente funcionaro em um terminal linux e como usurio root.
Mdulo 1
1. Cenrio do Curso
Ol! Seja bem-vindo (a) ao nosso curso!
O OBJETIVO deste curso preparar voc para lidar com PABX IP com Asterisk de
pequeno e mdio porte! Para ajud-lo a conseguir este objetivo, vamos usar um
cenrio que nos permitir ter uma viso macro da telefonia como um todo.
Vamos orient-lo a fazer a melhor soluco e seguir um modelo mais simples, assim
voc ser capaz, ao final do curso, de implementar PABX IP com Asterisk de
maneira coerente como ocorre atualmente nas pequenas e mdias empresas.
1.1.1. A Dexter
A DEXTER Courier uma empresa que trabalhar o mximo possvel com cdigo
aberto e conta com vrios servicos, como servidor de arquivos, dns, email, proxy,
autenticaco de usurios e agora Asterisk para gerenciar sua telefonia.
A DEXTER atua no segmento de logstica e tem como principal objetivo prestar ser-
vicos de coleta e entregas com qualidade em todos os detalhes e precisa da
telefonia VOIP para poder aumentar sua margem de clientes.
Introduo a
telefonia
4linux.com.br 2. Introduco a telefonia
2. Introduo a telefonia
2.1. O incio
A telefonia, assim como inumeras outras reas da Engenharia Eltrica e cincia
modernas, teve seu incio com a descoberta e desenvolvimento da Eletricidade e do
Magnetismo, cujos estudos foram iniciados em 1830 pelo ingls Michael Faraday.
A primeira invenco foi feita em 1837 por Samuel Morse: o Telgrafo Eltrico, que
permite a comunicaco entre dois pontos ligados por uma fiaco condutora. Da
surgiram duas tecnologias de Telecomunicaces, a que suprimia a fiaco condutora,
usando transmisses de ondas eletromagnticas no ar (Rdio, Televiso) e a que
mantinha a fiaco (Telgrafo, Telefone, Fax).
Ao longo da rua passa um grosso cabo preenchido com 100 ou mais pares de fios
de cobre. Dependendo de onde voc est, este cabo ira diretamente ao interruptor
da companhia telefnica, ou a uma caixa do tamanho de uma geladeira, que age
como um concentrador digital.
voz com dezenas de outras vozes atravs de um MUX (Multiplexador) e emite-as por
um unico fio (geralmente um cabo coaxial ou um cabo de fibra tica) at a
companhia telefnica.
2.2.1. Conceitos
Filas de atendimento;
Correio de voz;
Salas de conferncia;
Estacionamento de chamadas;
Gravaco de chamadas;
Registro detalhado das chamadas de entrada e sada;
E muito mais
Por que utilizar o Asterisk?
Sistema aberto;
Reduco de custos;
Controle total;
Aumento de produtividade;
Melhoria no atendimento;
A Digium
Devido ao fato de que algumas empresas tem objeces ao uso de softwares open
source, a Digium fornece o Asterisk em trs licencas diferentes:
aplicaces.
Voz sobre IP, tambm conhecida como VoIP (Voice over Internet Protocol), telefonia
IP ou telefonia Internet, um conjunto de tecnologias, largamente utilizadas em
redes IP, Internet ou Intranet, com o objetivo de realizar comunicaco de voz. Os
principais benefcios do VoIP so:
VOIP Implementao
O usurio Alice faz uma chamada para Bob, uma requisico INVITE enviada
ao servidor;
O INVITE negado pelo servidor, que envia uma reposta 407 solicitando as
credencias do usurio Alice;
Uma nova requisico INVITE gerado pela Alice, agora esse INVITE
acompanhado de um novo cabecalho contendo um hash MD5 a ser validado
pelo Asterisk;
O Asterisk gera um novo INVITE e envia para o destino, nesse caso o usurio
Bob. Logo aps o telefone de Bob envia uma mensagem 180, indicando que
o mesmo comecou a tocar (ringing);
Quando Bob atende o telefone uma reposta 200 OK enviado ao Asterisk
que por sua vez encaminha para Alice e neste momento em que a sesso
entre os dois canais estabelecida;
O udio da chamada est no fluxo de mdia RTP. Observe que o protocolo de
sesso SIP neste momento no mais necessrio;
Quando o usurio Bob desliga o telefone uma reaquisico do tipo BYE
enviado ao Asterisk informando que a sesso foi encerrada, o fluxo de mdia
interrompido e uma resposta 200 OK confirma o recebimento do BYE;
Este fluxo de mensagens do INVITE at o BYE conhecido como Dilogo
SIP. Desta forma o Asterisk consegue bilhetar a chamada, pois ele sabe
quando a sesso iniciou e quando foi finalizada.
Viso Geral
Dentro de uma viso geral, o Asterisk um PABX hbrido que integra tecnologias
como TDM e telefonia IP agregando funcionalidades extras como correio de voz,
URA, DAC e outras.
100% VoIP
O Asterisk pode operar em uma rede puramente VoIP sem interfaces TDM, essa
soluco pode ser bem econmica quando no existe conexo Digital E1 ou
Analgica com a Operadora. As operadoras j fornecem em alguns pontos um
tronco conhecido por NGN ou SIP Trunk, estes troncos operam puramente em IP
no sendo necessrio a compra de interfaces ISDN ou R2 nem tanto analgicas. O
Asterisk executa todas essas funces de forma simplificada.
Softswitchs
PABX 1x1
Media Gateway
atender;
discar;
desligar;
reconhecer dgitos;
falar;
etc.
Compilando e
Instalando
4linux.com.br 3. Compilando e Instalando
3. Compilando e Instalando
Existem vrias verses que podem ser baixadas, sendo a verso 12 a mais recente.
Ao escolher sua verso do Asterisk, leve em consideraco:
Release Series Release Type Release Date Security Fix Only EOL
1.2.X 2005-11-21 2007-08-07 2010-11-21
1.4.X LTS 2006-12-23 2011-04-21 2012-04-21
1.6.0.X Standard 2008-10-01 2010-05-01 2010-10-01
1.6.1.X Standard 2009-04-27 2010-05-01 2011-04-27
1.6.2.X Standard 2009-12-18 2011-04-21 2012-04-21
1.8.X LTS 2010-10-21 2014-10-21 2015-10-21
10.X Standard 2011-12-15 2012-12-15 2013-12-15
11.x LTS 2012-10-25 2016-10-25 2017-10-25
12.x Standard 2013-10 (tentative) 2014-10 (tentative) 2015-10 (tentative)
13.x LTS 2014-10 (tentative) 2018-10 (tentative) 2019-10 (tentative)
Fonte: https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions
O Asterisk pode ser instalado a partir dos pacotes prontos nas diversas distribuices
GNU/Linux ou atravs da compilaco do cdigo fonte. recomendvel que a
instalaco atravs dos pacotes de software seja voltada apenas para estudos do
Asterisk.
1. LibPRI
2. DAHDI
3. Asterisk
Seguindo esta ordem o Asterisk ter todos os pr-requisitos para a compilaco dos
mdulos gerais.
Diretrios:
Arquivos em /etc/asterisk:
# /usr/sbin/asterisk vvvgc
*CLI>
onde:
Antes de usar o Asterisk, voc deve criar os arquivos de configuraco. Muito embora
a quantidade de configuraces possveis seja muito grande, apenas um pequeno
conjunto necessrio de forma a iniciar o Asterisk com sucesso.
# make config
Por padro o script de inicializaco vem configurado para rodar o asterisk como root,
o que no uma boa opco. Para ajustar isso, altere no script de inicializaco as
variveis AST_USER e AST_GROUP. No esqueca de ajustar as permisses de
dono e grupo dos arquivos e diretrios do Asterisk.
3.7.1. Objetivos
# cd /usr/src
# wget
http://downloads.asterisk.org/pub/telephony/asterisk/asterisk
-1.8-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/dahdi-
linux-complete/dahdi-linux-complete-current.tar.gz
# wget
http://downloads.asterisk.org/pub/telephony/libpri/libpri-
1.4-current.tar.gz
# cd /usr/src/dahdi*
# make all
# make install
# make config
# cd /usr/src/libpri*
# make
# make install
Compilar o Asterisk
# cd /usr/src/asterisk*
# ./configure
# make menuselect :: Selecione SAVE & EXIT
# make :: Compila o Asterisk
# make install :: Instala o Asterisk
# make samples :: Arquivos de exemplo, /etc/asterisk
# make config :: Script de inicializao, /etc/init.d/
# asterisk -vvvr
# asterisk -vvvgc
Se o Asterisk carregar com sucesso voc ter acesso sua CLI, note que
agora voc no consegue sair da CLI
*CLI> exit
*CLI>
Telefonia TDM
4linux.com.br 4. Telefonia TDM
4. Telefonia TDM
Tom de discagem;
Sinal de ocupado;
Tom de retorno (ringback);
Congestionamento (congestion);
Numero invlido;
Tom de confirmaco.
4.1.1. Interfaces FX
dos pacotes ou mensagens trocadas entre entidades de uma mesma camada. Ele
define as opces de servico como a solicitaco do incio da comunicaco, a
confirmaco do pedido, a configuraco da transmisso de dados ou mdia, a
resposta ao envio de informaces e a desconexo definindo tambm sub protocolos
responsveis por controles especficos.
como a KHOMP possuem hardware para soluces com alta disponibilidade e melhor
adequaco. Outros fabricantes mais conhecidos: Sangoma, Aligera, Digivoice,
RedFone, YXWireless, Audiocodes.
Configurando um
PABX
4linux.com.br 5. Configurando um PABX-IP
5. Configurando um PABX-IP
Contexto
9 Extenso
9 Prioridade
9 Aplicaco
5.1.1. Contextos
segundo para declaraco de variveis globais que podem ser utilizadas ao longo da
programaco, abordado com mais detalhes nos mdulos frente. A seguir
apresentamos um exemplo de Dialplan com os contextos [general] e [gobals]
[general] ;Opes gerais do Dialplan
writeprotect=yes ;Modo somente leitura
static=yes ;Modo esttico
5.1.2. Extenses
[interno]
exten => 2000,1,Dial(SIP/2000,60)
exten => 2000,2,voicemail(2000,u)
exten => 2000,3,Hangup()
onde:
exten => - descreve o incio de uma regra;
Neste exemplo, o Asterisk ao receber uma chamada para o numero 2000, far tocar
o Ramal 2000 por 60 segundos, se no atender, ser desviado para a prxima
prioridade que executa o Voicemail (caixa postal) e depois desliga a chamada.
exten => define o incio de regra, seguido por um identificador por uma prioridade e
uma aplicaco.
Numrico
Alfanumrico
exten => ?
ER Funo Exemplo
X Um numero entre 0 e 9 _XX -> qualquer numero de 00 a 99
Z Um numero entre 1 e 9 _ZZ -> qualquer numero de 11 a 99 exceto (20,30,40,...)
N Um numero entre 2 e 9 _NN -> qualquer numero de 22 a 99 exceto (20,21,30,31,...)
_[0-9] -> um numero entre 0 e 9 - equivalente a X
_[15-7] -> um numero da lista: 1 ou 5 at 7.
[e] Lista de opces
_[13457] -> um numero da lista: 1 ou 3 ou 4 ou 5 ou 7.
_[a-zA-Z] -> uma letra maiuscula ou minuscula do alfabeto.
_0800. -> Expresso regular que vale para qualquer numero
Qualquer carcter,
. que inicie com _0800 + qualquer outro carcter, infinitas
infinitas vezes
vezes.
_0800! -> funciona como um ponto, mas trata de forma
! Coringa inclusivo
diferente, testando todas as outras possibilidades primeiro,
Antes
[ramais]
exten => 2000,1,Dial(SIP/2000)
exten => 2001,1,Dial(SIP/2001)
exten => 2002,1,Dial(SIP/2002)
Depois
[ramais]
exten => _200X,1,Dial(SIP/${EXTEN})
5.1.3. Prioridades
Numricas:
Prxima (next):
5.1.4. Aplicaes
tradicional, uma linha PSTN ou ainda um canal IP, como uma chamada SIP via
Internet.
[general]
udpbindaddr=0.0.0.0:5060
context=default
disallow=all
allow=ulaw,alaw,gsm
directmedia=no
;;
[2000]
type=friend
secret=2000
dtmfmode=rfc2833
host=dynamic
;;
[2001]
type=friend
secret=2001
dtmfmode=rfc2833
host=dynamic
Exemplos de Softphones:
Zoiper http://www.zoiper.com,
Bria http://www.counterpath.com
Twinkle http://mfnboer.home.xs4all.nl/twinkle/
Ekiga http://www.ekiga.org/
Jitsi https://jitsi.org/
Linphone http://www.linphone.org/
A ISO (Imagem de CD bootvel) foi criada com o intuito de facilitar todo o processo
de instalaco dos softwares necessrios para o completo funcionamento do SNEP.
As configuraces bsicas de alguns softwares tambm so feitas automaticamente,
o que torna a instalaco do SNEP um processo simples, rpido e eficiente. A ISO do
SNEP instala e configura:
O SO Linux Debian
O servidor WEB Apache
O Asterisk
A Banco de dados MySQL
O PHP
O SNEP
A instalaco tambm pode ser feita manualmente, baixando o arquivo .tgz ou o
pacote .deb do SNEP. Estes arquivos e os respectivos manuais de instalaco podem
ser encontrados no site www.sneplivre.com.br.
5.4.1. Objetivos
# cd /etc/asterisk
# mv sip.conf sip.conf.old
# nano /etc/asterisk/sip.conf
Copie este modelo trocando as letras NN pelo numero do prefixo de sua filial
passado pelo Instrutor.
[general]
udpbindaddr=0.0.0.0
context=interno
disallow=all
allow=ulaw,alaw,gsm
;;
[NN01]
type=friend
secret=NN01
dtmfmode=rfc2833
host=dynamic
language=pt_BR
mailbox=NN01
callerid=<NN01> SeuNome01
[NN02]
type=friend
secret=NN02
host=dynamic
dtmfmode=rfc2833
language=pt_BR
mailbox=NN02
callerid=<NN02> SeuNome02
# asterisk -vvvr
*CLI> sip reload
*CLI> sip show peers
# cd /etc/asterisk
# mv extensions.conf extensions.conf.old
# nano /etc/asterisk/extensions.conf
Copie este modelo trocando as letras NN pelo numero do prefixo de sua filial
passado pelo Instrutor.
[interno]
exten => NN01,1,Dial(SIP/NN01,60,tT)
exten => NN02,1,Dial(SIP/NN02,60,tT)
# asterisk -vvvr
*CLI> dialplan reload
Ao executar o Twinkle pela primeira vez uma tela solicitando a criaco de um perfil
ser apresentada, clique em OK para continuar
Voc pode configurar o Twinkle de vrias formas. Neste laboratrio vamos usar o
guia de configuraco Wizard.
a) Ligue para o ramal 5000 pelo Softphone e pelo telefone IP, uma mensagem ser
tocada para o usurio.
# a2enmod rewrite
# service apache2 restart
# cd /usr/src/
# wget
http://downloads.sourceforge.net/project/snep/snep/unstable/snep-
2.0.1-rc1.tar.gz .
# cd /var/www/
# chown -R www-data.www-data *
# chmod 775 snep-2.0-rc1
# ln -s snep-2.0-rc1 snep
# cd /etc/apache2/sites-enabled/
# cp /var/www/snep/install/snep.apache2 001-snep
# cd /var/log
# mkdir snep
# touch snep/ui.log
# touch snep/agi.log
# chown -R www-data.www-data snep/
# cd /var/lib/asterisk/agi-bin/
# ln -sf /var/www/snep2/agi snep
# chmod 776 /var/www/snep/agi -R
Habilite o php-cgi para receber parmetros. Edite os arquivos listados abaixo usando
seu editor preferido (vi, nano, etc), procure as linhas referente apenas aos valores
citados e efetue apenas estas alteraces:
para: register_argc_argv = On
/etc/php5/cli/php.ini
/etc/php5/cgi/php.ini
/etc/php5/apache2/php.ini
# cp /var/www/snep/install/etc/odbc* /etc/
# cp /var/www/snep/install/etc/asterisk/manager.conf /etc/asterisk
# cp /var/www/snep/install/etc/asterisk/cdr* /etc/asterisk
# cp
/var/www/snep/install/etc/asterisk/res_odbc.conf /etc/asterisk
# mv /var/spool/asterisk/monitor /var/spool/asterisk/monitor.snep
# ln -sf /var/www/snep/arquivos /var/spool/asterisk/monitor
Msicas de espera
# cd /var/lib/asterisk
# cd /usr/src
# wget
http://svn.softwarepublico.gov.br/trac/snep/export/3/trunk/as
terisk-sounds.tgz
# mkdir -p /var/lib/asterisk/sounds/pt_BR/tmp
# mkdir -p /var/lib/asterisk/sounds/tmp
# mkdir -p /var/lib/asterisk/sounds/pt_BR/backup
# mkdir -p /var/lib/asterisk/sounds/backup
# cd /var/www/snep/sounds/
# ln -sf /var/lib/asterisk/moh/ moh
# ln -sf /var/lib/asterisk/sounds/pt_BR/ pt_BR
# cd /var/www/snep/install/
# cd /var/www/snep/modules/default/installer
# cd /var/www/snep/modules/updateModule/install
http://_ip_do_servidor/snep
Login: admin
Senha: admin123
Nome da Empresa
Range de ramais
No menu Cadastros >> Ramais, cadastre novos ramais (diferente dos cadastrados
no Asterisk) e analise o arquivo /etc/asterisk/snep/snep-sip.conf.
#include snep/snep-sip.conf
Obs: Os ramais que voc cadastro no Asterisk tambm podem ser includos na
interface do SNEP. Para isso, na seco tecnologia de canais, altere o tipo para
Manual, e no campo Manual, utilize a combinaco: SIP/numero_ramal.
Anlise de rede
4linux.com.br 6. Anlise de rede
6. Anlise de rede
Precisamos entender que at o comeco da dcada de 1990 haviam dois tipos bem
distintos de rede publica:
6.1.1. VoIP
Voz sobre IP pode agregar, portanto, vrias reas de estudo de redes de telefonia e
de computadores, uma vez que existe um panorama bastante inspito para a
transmisso de voz em tempo real, transmisso esta fragmentada em pacotes.
tecnologias/protocolos de sinalizaco;
tecnologias/protocolos para descrever quais os tipos de mdia suportados em
cada ponta da comunicaco;
tecnologias/protocolos para transmisso das mdias em ambos os sentidos;
tecnologias/protocolos para garantir a qualidade do servico (QoS).
Enquanto que os trs primeiros esto mais ligados s pontas da comunicaco,
geralmente dois usurios finais, no ultimo item, qualidade de servico, que reside
Por isso, toda a tecnologia VoIP foi desenvolvida com base no modelo OSI de forma
que para o seu uso, independam o meio fsico e a tecnologia de enlace utilizada. Os
protocolos e codec's VoIP fazem parte das camadas de Aplicaces, Sesso e
Transporte do modelos OSI conforme tabela abaixo.
Quando o pacote chega ao seu destino, ele aberto e d-se inicio ao processo
inverso, onde o pacote aberto, remove-se seu cabecalho, restando o segmento,
esse aberto, remove-se seu cabecalho restando a aplicaco.
6.3.1. SIP
6.3.2. IAX2
6.3.3. H323
Largamente usado em voz sobre ip. Essencial na conectividade com projetos mais
antigos usando roteadores Cisco ou gateways de voz. H323 ainda padro para
fornecedores de PABX e roteadores, muito em bora eles comecem a adotar o SIP.
Excelente para videoconferncia.
Pontos fortes: larga adoco do mercado, padronizaco pela ITU;
Pontos fracos: complexo, pouco adotado em telefonia IP em detrimento ao
SIP.
6.3.4. RTP/RTCP
MOS - A qualidade de voz medida em MOS (Mean Opinion Score, ou mdia dos resultados das
opinies). Os testes para MOS seguem a norma P.800 da ITU. O MOS varia em uma escala de um
(qualidade ruim) a cinco (qualidade excelente);
Codec's para redes WAN: Em uma rede WAN (Wide Area Network),
normalmente temos uma banda passante pequena (64, 128 ou 256 Kbps)
onde podemos priorizar o trfego de voz. Nesse tipo de redes, normalmente,
pouco comum ocorrerem perdas de pacotes. H trs bons codec's para
esse tipo de rede: o G.729 provavelmente se destaca, pois prov uma
excelente qualidade de voz com uma compresso de 8 para 1; o G.723
permite taxas de compresso ainda maiores, mas com certa perda de
qualidade; por fim temos o GSM que uma alternativa para aqueles que
procuram custo/benefcio. O ponto negativo do GSM fica para o fato de no
ter suporte ao codec na maioria dos telefones IPs e ATAs;
Codec's para Internet: Em uma rede com Internet h dois desafios: banda
passante e falta de controle do meio. Por isso temos uma latncia alta e jitter
(variaco da latncia), que culminam com a perda de pacotes. Alguns codec's
foram desenvolvidos com esses requisitos em mente. O codec mais indicado
para esse tipo de rede o iLBC, que tem uma boa resistncia a perda de
pacotes e usa pouca banda passante. Mais informaces podem ser
encontradas na tabela de codec's deste mdulo.
allow=G729:40
Se esse processo puder ser evitado pode-se poupar recursos de CPU e evitar a
compra de licencas G.729 desnecessrias.
6.7.1. Objetivos
# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Core(TM) i3-2370M CPU @ 2.40GHz
stepping : 7
microcode : 0x28
cpu MHz : 2394.670
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fdiv_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep
mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse
sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfmon pebs
bts xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq
dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid
sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx
lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi
flexpriority ept vpid
bogomips : 4789.34
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
# uname -a
Para 32 Bits
Para 64 bits
# asterisk -vvvr
*CLI> core show version
codec_G729-ast18-icc-glibc-x86_64-pentium4.so
codec_G729-ast18-icc-glibc-x86_64-core2-sse4.so
codec_G729-ast18-icc-glibc-pentium4.so
# cd /usr/lib/asterisk/modules
# wget http://asterisk.hosting.lv/bin/codec_g729-ast18-icc-
glibc-pentium4.so .
# mv codec_g729-ast18-icc-glibc-pentium4.so codec_g729.so
# chmod +x codec_g729.so
# asterisk -vvvr
*CLI> module load codec_g729.so
Loaded codec_G729.so
== Registered translator 'g729tolin' from format G729 to slin, cost
2000
== Registered translator 'lintoG729' from format slin to g729, cost
9000
Loaded codec_G729.so => (g729 Coder/Decoder, based on IPP)
Testando o G729
somente o uso do G729, desta forma quando o telefone fizer uma chamada
para o softphone o Asterisk ira transcodificar o udio de G711 para G729.
# nano /etc/asterisk/sip.conf
[NN00]
type=friend
host=dynamic
disallow=all
allow=g729
Protocolo IAX
4linux.com.br 7. Protocolo IAX
7. Protocolo IAX
O trfego de informaco do protocolo IAX tambm pode ser feito em modo trunk, de
tal maneira que vrias chamadas podem ser agrupadas em um unico conjunto de
pacotes, com um unico cabecalho IP, economizando os recursos de rede e
diminuindo o atraso dos pacotes de voz.
md5 Hash MD5 oferece uma seguranca extra, ele opera de forma
semelhante ao SIP, fazendo um processo conhecido como Three-Way-
handshake;
rsa Par de chaves de criptografia RSA. mtodo mais seguro pois utiliza as
chaves para autenticaco. Necessita de configuraco em ambos servidores.
[curso-out]
type=peer
username=curso_username
secret=curso_secret
host=curso.com
;
;
[iax-gateway]
type=friend
allow=192.168.0.1
context=incoming
host=192.168.0.1
Na seco [general] um numero de parmetros que afetam todo o sistema pode ser
configurado. Especificamente os codec's default, portas, enderecos, comportamento
do jitter, bits de TOS e registros.
Diretiva Descrio
port = <portnum> Define a porta em que o IAX vai se ligar. O padro 4569.
Isto permite ligar o IAX a um endereco IP especifico e no
bindaddr = <ipaddr> a todos os enderecos. O padro : 0.0.0.0 (todos
enderecos)
A seleco de banda passante define a seleco de codec's
com valores apropriados para uma determinada banda.
high habilita todos os codec's e recomendado para
conexes acima de 10Mbps.
mdium elimina os codec's U-law e A-law deixando
bandwidth = [low|medium|high] apenas os codec's com 32Kbps ou menos (Com MP3 como
um caso especial). Isto pode ser usado em conexes de
banda larga se desejado.
low elimina o ADPCM e MP3, deixando apenas o G723,
GSM e LPC10. A configuraco recomendada selecionar
low e depois desabilitar LPC10. O LPC10 tem a voz
robotizada.
allow/disallow=[gsm|lpc10| O "allow" e "disallow" permite fazer uma seleco criteriosa
g723.1|adpcm|ulaw|alaw|mp3|
slinear|all] de codec's.
Diretiva Descrio
O buffer de jitter deve sempre estar habilitado a menos que
jitterbuffer = [yes|no]
voc saiba que todas as suas conexes esto na LAN.
A quantidade de drops o numero mximo de pacotes de
dropcount = <dropamount> voz que voc vai permitir que sejam descartados. Valores
uteis so 3-10.
O maxjitterbuffer a quantidade mxima de buffer de jitter
maxjitterbuffer = <max>
que pode ser usado.
O maxexcessbuffer a quantidade mxima de excesso no
maxexcessbuffer = <max> buffer de jitter que permitido antes que o buffer de jitter
seja lentamente comprimido para eliminar a latncia.
Configura o cdigo de contabilizaco para registros
accountcode = <code> recebidos com o IAX. O cdigo de contabilizaco pode
sobrescrever a base por usurio para chamadas entrantes.
Controla como o registro etiquetado:
omit faz com que nenhum registro seja escrito;
amaflags = [default|omit|
billing|documentation] billing e documentation etiquetam os registros como
registros para cobranca e documentaco respectivamente;
default seleciona o default do sistema.
O IAX pode opcionalmente configurar o bit TOS (Type of
Service) do cabecalho IP. Isto ajuda a performance no
tos=[lowdelay|throughput|
reliability|mincost|none] roteamento. O valor recomendado lowdelay, que muitos
roteadores vo reconhecer e dar prioridade melhorando a
qualidade da voz.
O registro permite notificar um servidor Asterisk remoto
(com um endereco fixo) qual seu endereco atual. Para que
o registro funcione, o Asterisk remoto vai precisar ter uma
entrada com o mesmo nome to tipo dynamic peer (e
senha (secret) se fornecido). O nome um campo
obrigatrio e o nome do peer remoto a quem ns
register=><name>[:<secret>]@<
host>[:port]: desejamos nos identificar. Entretanto se em colchetes ( [ ] )
ento interpretado como o nome de uma chave RSA a ser
usada. Neste caso o Asterisk deve ter a chave privada e o
servidor remoto ter a correspondente chave publica
(/var/lib/asterisk/keys/<name>.key). O campo "host"
obrigatrio e o nome do host ou endereco IP do servidor
Asterisk remoto. A especificaco da porta opcional.
Diretiva Descrio
[identifier] A seco inicia com um identificador em colchetes ( [ ] ). O
identificador deve ser uma string alfanumrica.
type=[user|peer| Esta linha diz ao asterisk como interpretar esta entidade. Usurios
friend] so dispositivos que se conectam a ns, enquanto peers so
pessoas s quais nos conectamos, e friend um atalho para criar
um user e um peer com informaces idnticas.
Diretiva Descrio
Uma ou mais linhas de contexto podem ser especificadas
pelo usurio, deste modo dando ao usurio a possibilidade de
context = <context>
colocar as chamadas em dados contextos. A maioria dos
usurios usa o contexto default.
As regras de permitir e negar podem ser aplicadas a
usurios, permitindo a eles se conectar de determinados
enderecos IP e no de outros. As regras so interpretadas na
seqncia e so todas avaliadas em um dado endereco IP,
permit = <ipaddr>/<netmask> com o resultado final sendo a deciso Por exemplo:
deny = <ipaddr>/<netmask> permit=0.0.0.0/0.0.0.0
deny=192.168.0.0/255.255.255.0
Esta combinaco ira negar qualquer um em 192.168.0.0 com
mascara de 24 bits (classe C).
Voc pode sobrescrever o identificador de chamada passado
pelo usurio para voc (Se ele escolher enviar) de maneira
callerid = <callerid>
que ele sempre esteja correto do ponto de vista do seu
servidor.
Voc pode selecionar que mtodos de autenticaco so
auth = [md5|plaintext|rsa] permitidos. Multiplos mtodos podem ser especificados,
separado por vrgulas.
A linha secret especifica a senha compartilhada para os
secret = <secret>
mtodos md5 ou autenticaco em texto simples.
A linha "inkeys" especifica que chaves ns podemos usar
para autenticar um peer remoto. Os arquivos de chave
inkeys = key1[:key2...]
ficam em /var/lib/asterisk/keys/<name>.pub e so chaves
publicas.
[8035]
type=friend
context=default
auth=md5
secret=senha
notransfer=0
callerid=8035
host=dynamic
allow=gsm
Neste cenrio, feita a conexo a um provedor de telefonia IAX como a Brasil Vox
Telecom (http://www.brasilvox.com.br).
Cenrio onde dois servidores Asterisk esto ligados usando o protocolo IAX2.
Existem diversas maneiras de fazer esta conexo, sendo a mestre-escravo a mais
conhecida.
Porm, se voc est em uma rede confivel, pode abstrair diversas diretivas da
configuraco do arquivo iax.conf. O exemplo a seguir mostra como conectar dois
Asterisk de maneira muito simples, utilizando o protocolo IAX. Note que a unica
diferenca reside no numero IP, um apontando para o outro.
O objetivo de exerccio permitir que cada filial possa ligar para as outras por
intermdio de uma conexo IAX2 Trunk.
# cd /etc/asterisk
# mv iax.conf iax.conf.old
# nano /etc/asterisk/iax.conf
Criando as contas para as outras filiais no seu iax.conf: Crie uma conta
IAX para cada uma das filiais conforme o modelo. No necessrio criar uma
conta para a sua filial. Esta conta utilizada para autenticar a chamada
entrante vinda das outras equipes. Ajuste o modelo abaixo de acordo com as
instruces passadas:
[general]
bindport=4569
bindaddr=0.0.0.0
disallow=all
allow=ulaw,alaw,g729
;
; Primeira filial
;
[filial-NN]
host=IP_Filial-NN
type=user
context=from-filiais
secret=filial-NN
trunk=yes
;
; Segunda Filial
;
[filial-NN]
host=IP_Filial-NN
type=user
context=from-filiais
secret=filial-NN
trunk=yes
Crie uma extenso no plano de discagem para cada ligar para outras
filiais: Edite o arquivo /etc/asterisk/extensions.conf e crie uma extenso
para cada uma das equipes.
[interno]
;Filial-01
exten=>_100X,1,Dial(IAX2/filial-FF:filial-FF@IPdafilial-01/$
{EXTEN},60,tT)
..
;Filial-02
exten=>_110X,1,Dial(IAX2/filial-FF:filial-FF@IPdafilial-02/$
{EXTEN},60,tT)
;
;
[from-filiais]
;regra de entrada das chamadas vindas das outras filiais
exten => _XXXX,1,Goto(interno,${EXTEN},1)
Lembre-se que para a comunicaco entre voc e a filial, ambos devem ter um tronco
entre si.
#include snep/snep-iax2-trunks.conf
#include snep/snep-iax.conf
Verifique no menu Status >> Ramais, Troncos Ip, Filas, na seco Troncos IAX, se
o servidor registrou corretamente.
Protocolo SIP
4linux.com.br 8. Protocolo SIP
8. Protocolo SIP
8.2.1. Arquitetura
Agente de Usurio
Funco: Interagir com o usurio do sistema SIP;
Caractersticas: Envia e recebe requisices SIP;
Papel: Pode atuar como cliente (UAC Agente Utilizador Cliente) ou
servidor (UAS Agente Utilizador Servidor).
Proxy SIP
Funco: Recebe as requisices e as encaminha para servidores mais
prximos do destino;
Papel: Servidor intermedirio. Atua como cliente e servidor;
Tipo: Stateful Proxy Server e Stateless Proxy Server:
O Stateful Proxy Server mantm o estado da chamada e permite dividir
a chamada, criando uma rvore de busca pelo usurio nos multiplos
servidores. Vantagens: maior confiabilidade, capacidade de mensurar o
gasto do cliente, utiliza o protocolo TCP;
O Stateless Proxy Server encaminha para os prximos saltos tanto as
requisices com as respostas e no mantm o estado das conexes.
Vantagem: maior velocidade.
Servidor de Redirecionamento
Funco: Responde uma requisico do Agente do Usurio com o nome e a
localizaco do usurio;
Caractersticas: No reencaminha pedidos.
Servidor de Registro
Funco: Servico de localizaco;
Caractersticas: Armazena registro sobre usurios.
Uma requisico SIP vlida deve conter ao menos os campos To, From, CSeq, Call-
ID e Max-Forwards, os quais so todos obrigatrios em todas as mensagens SIP.
Outros campos podem se juntar a esses.
8.2.3. Comunicao
8.2.4. Autenticao
Na figura acima, podemos observar que a sesso SIP iniciada quando Alice
envia uma mensagem INVITE para Bob, por UDP na porta 5060. A porta 5060
a porta padro do protocolo SIP e este tambm pode receber mensagens
por TCP. Nesta mensagem, esto contidos um identificador para Bob, o
endereco de Alice, o tipo de dado que Alice deseja receber: udio em
codificaco AVP 0 (PCM codificado com lei ), o protocolo de transporte RTP
e a porta que ela receber os pacotes: 25012;
Ao receber esta mensagem de Alice, a campainha de Bob toca;
Ao atender, Bob envia uma resposta com o cdigo 200 OK para Alice na porta
5060. Nesta mensagem de Bob, constam o seu endereco IP, a porta em que
deseja receber os pacotes de udio utilizando o protocolo de transporte RTP:
43569, e a codificaco de udio que deseja receber os dados: AVP 3
(codificaco GSM);
Aps receber a resposta de Bob, Alice envia uma mensagem com a primitiva
ACK, confirmando que a comunicaco foi estabelecida com sucesso.
Observe que, neste exemplo, ambos os usurios utilizaram codificadores de
voz diferentes, pois o SIP no determina o tipo da mdia que ser transmitida
durante a sesso. Alice dever codificar seu udio com GSM e Bob com a lei
do PCM.
Aps o fim da transmisso, Bob aciona o seu aplicativo SIP para terminar a
sesso. Ento o agente de usurio de Bob envia uma mensagem com a
primitiva BYE para Alice.
Outra questo o suporte a protocolos LDAP, Radius e Diameter que no SIP Proxy
j so nativos, e no B2BUA no, mas tambm so possveis.
B2BUA SipProxy
O Asterisk um B2BUA O Openser um SIPProxy
No trabalha to bem com clientes NAT Gerencia melhor clientes que utilizam NAT
Gerencia traduco de CODEC's, protocolos, Arquitetura mais rpida
B2BUA SipProxy
servicos de URA e outros
Possui servicos de mdia, como udio, vdeo, melhor para escalabilidade e balanceamento
correio e reconhecimento de voz de carga
Utilizado para comunicaco com a rede publica Gerencia toda a sinalizaco SIP
8.5.1. Proxy
registrado);
2. O servidor encaminhou o INVITE para o ramal do usurio Carlos que est
registrado no mesmo servidor (ligaco interna), e respondeu ao Lucien 100
Trying informando que est tentando efetuar a ligaco;
3. O ramal do Carlos quando recebe a solicitaco da chamada envia o 180
Ringing para o servidor, informando que recebeu o INVITE e est chamando;
4. O servidor repassa para o ramal do Lucien a mensagem informando que o
telefone est chamando;
5. O Carlos atende o telefone, neste momento o ramal dele envia 200 OK
informando que o telefone foi atendido e j possvel estabelecer o fluxo de
mdia;
6. O servidor repassa o 200 OK para o ramal originador da chamada (Lucien)
que responde com ACK (Acknowledge) confirmando que recebeu o 200
OK;
7. O servidor repassa o ACK para o ramal do Carlos que ao receber a
confirmaco abre a sesso de mdia diretamente entre os dois ramais, dando
inicio a conversaco entre os dois usurios;
8. O usurio Carlos encerra a chamada, nesse momento o ramal envia a
mensagem de BYE, informando o sinal de desligamento;
9. O servidor repassa o BYE para o ramal do Lucien, que responde com 200 Ok,
confirmando o encerramento da chamada.
8.5.2. Redirect
VOIP passo-a-passo.
Um fato importante deste modo de operaco que o servidor SIP s est presente
no incio da chamada VOIP, no momento em que o usurio Carlos faz a primeira
requisico. Logo, neste modo, no possvel estabelecer nenhum controle sobre a
chamada, como tarifaco por exemplo, em contra-partida o consumo de recursos
computacionais do servidor extremamente baixo.
SIP/[exten@]peer[:portno]
onde:
exten Se definido, ento o Asterisk ira requisitar ao peer que se conecte
extenso exten;
peer O nome do peer ao qual se conectar, podendo ser:
Um peer ou friend definido em sip.conf;
Um endereco IP;
Um nome de domnio. Para nomes de domnio o Asterisk ira primeiro olhar
no registro DNS SRV para aquele domnio.
portno A porta UDP a ser usada. Se omitido o Asterisk ira utilizar a 5060.
Exemplos:
exten=>s,1,Dial(SIP/ipphone)
exten=>s,1,Dial(SIP/curso@4linux.com.br)
exten=>s,1,Dial(SIP/192.168.1.8:5060,20)
exten=>s,1,Dial(SIP/8500@sip.com:9876)
Na seco [general] um numero de parmetros que afetam todo o sistema pode ser
configurado. Especificamente os codec's default, portas, enderecos, comportamento
do jitter, bits de TOS e registros. A seco [general] do sip.conf inclui as seguintes
diretivas:
Diretiva Significado
Permite codec's na ordem de preferncia (use DISALLOW=ALL
allow = <codec>
primeiro, antes de permitir outros codec's)
disallow = all Desabilita todos os codec's (configuraco global)
Se configurado, qualquer um estar apto a se logar como um
autocreatepeer = yes|no peer (Sem checagem de credenciais, util para operar com o
SER).
bindaddr = 0.0.0.0 Endereco IP onde o servico est instalado
canreinvite = update|yes|no (configuraco global)
Contexto default para a entradas de chamadas em
context = default
extensions.conf.
defaultexpirey = 120 Tempo padro do registro de entrada e a sada.
Endereco IP que ser colocado em mensagens SIP, se o
externip = 200.180.4.110
Asterisk estiver atrs de um dispositivo NAT.
localnet =
10.10.1.0/255.255.255.0 endereco local e mscara de rede
Diretiva Significado
Habilita a checagem dos cabecalhos identificadores de
pedantic= yes|no chamada, cabecalhos SIP com multiplas linhas e cabecalhos
codificados em URI (uniform resource identifier), to-tag, from-tag.
port=<portno> Porta TCP a qual se ligar
register => <username>@<sip
client/peer_id_in_sip.conf>/<e Registra com um provedor SIP
xtension>
srvlookup = yes|no Habilita DNS SRV lookups em chamadas
tos=<valor> lowdelay|
throughput|reliability mincost
|none Seta o campo tipo de servico nos pacotes SIP.
(valores nmricos tambm so
aceitos, como tos=184)
videosupport=yes|no Liga o suporte para vdeo no SIP
Permite que o cabecalho SIP User-Agent possa ser
useragent
customizado.
trustpid = yes|no Se possvel confiar na identificaco da parte remota
Muda a forma de autenticaco do Asterisk(default) para sua
realm = meu realm
prpria.
Diretiva Significado
[identifier] A seco inicia com um identificador em chaves ([]s). O identificador
deve ser uma string alfanumrica.
type=[user|peer| Esta linha diz ao asterisk como interpretar esta entidade. Usurios
friend] so dispositivos que se conectam a ns, enquanto peers so
pessoas s quais nos conectamos, e friend um atalho para criar
um user e um peer com informaces idnticas.
accountcode Usurios podem estar associados a um cdigo de contabilizaco.
amaflags=default|omit| Categorizaco de registros CDR (CDR Registro detalhado de
billing|documentation chamadas usado na bilhetagem).
callgroup
canreinvite Se o cliente capaz de suportar SIP reinvites
context Contexto no plano de discagem para as chamadas de sada deste
cliente.
defaultip Endereco Ip default deste cliente, se especificado
host=dynamic Usado se o cliente no registrou em qualquer outro endereco IP
dtmfmode Como o cliente gerencia a sinalizaco DTMF
fromuser Especifica o usurio para colocar no from ao invs do callerid
(sobrescreve o callerid) quando colocando chamadas para outro peer
(outro SIP proxy).
Diretiva Significado
fromdomain=<domain> Configura o domnio default from: nas mensagens SIP quando
colocando chamadas para um peer.
host= Como encontrar o cliente: IP ou nome do host. Se voc quiser que o
telefone se registre, use a palavra dynamic ao invs do IP do host.
incominglimit e Limita o numero de chamadas ativas simultneas para um cliente
outgoinglimit SIP.
insecure No verifica o ip do host e a porta para o peer (no usurio).
language O cdigo de linguagem definido em indications.conf Define a
linguagem para os prompts e sinais locais de telefonia.
mailbox Extenso da caixa postal de e-mail (Para indicaces de espera de
mensagens)
md5secret Hash MD5 de <usurio>:asterisk:<secret> (pode ser usado ao invs
de secret).
nat =yes|no Esta varivel muda o comportamento do Asterisk para cliente atrs
de um firewall. Isto no resolve o problema se o Asterisk estiver atrs
de um Firewall e o cliente fora.
permit,deny,mask Endereco IP e restrico de rede
pickupgroup Grupo que pode capturar as chamadas de colegas usando *8 e a
aplicaco pickup() na extenso *8
port Porta SIP do cliente
qualify=yes|no Verifica se o cliente est alcancvel ou no
restrictid=yes|no Para ter o callerid restrito -> Enviando como ANI;use isto para ocultar
o callerid
rtptimeout Termina as chamadas se no houver atividade RTP por x segundos,
quando no estiver em espera (hold)
rtpholdtimeout Termina a chamada se no houver atividade RTP quando em espera
(hold) (deve ser maior que o rtptimeout)
type=peer|user|friend Relacionamento com o cliente (provedor de sada ou full client)
secret Se o Asterisk estiver agindo como um servidor SIP, ento este cliente
SIP deve logar com esta senha.Se o Asterisk estiver agindo como S
IP Client para um servidor SIP remoto que requer autenticaco do
tipo SIP INVITE, ento este campo usado para autenticar os SIP
INVITEs que o Asterisk envia para o servidor remoto
username Nome do usurio usado no SIP INVITE
allow-disallow Permitir ou negar codec's
musiconhold Configura as classes de musica em espera em chamadas de um
telefone SIP.
Por exemplo:
No caso de cone restrito, o par IP/Porta externo s aberto uma vez que o
computador interno envie dados para o endereco de destino IP especfico.
Por exemplo:
No caso onde o cliente envia um pacote para um computador externo, o NAT mapeia
o cliente 10.0.0.1:8000 para o 200.180.4.168:1234. Assim o computador externo
pode enviar pacotes de volta. Entretanto o NAT ira bloquear pacotes vindos de
outros computadores externos.
Um NAT do tipo port restricted quase idntico ao Restricted Cone, mas neste
caso o NAT ira bloquear todos os pacotes a menos que o cliente tenha previamente
enviado um pacote para o IP e porta que est enviando para o NAT.
Desta forma, se o cliente enviar para um computador externo para a porta 1010, o
NAT apenas ira permitir pacotes de volta se eles vierem de 200.180.4.168 na porta
1010.
8.7.4. Simtrico
Por exemplo:
Para simplificar, vamos usar duas situaces que so as mais tpicas. O Asterisk est
atrs de um Firewall sob domnio da rea tcnica da empresa. Os clientes so
externos e no temos domnio sobre a configuraco dos firewalls destes clientes.
[general]
externip = 200.84.7.1
localnet = 192.168.1.0/255.255.255.0
Alm disso, preciso redirecionar as portas UDP 5060 e RTP de 10000 20000 no
Firewall. Se voc quiser reduzir esta faixa pode editar o arquivo rtp.conf.
/etc/asterisk/sip.conf
nat=yes
directmedia=no
qualify=yes
onde:
nat=yes ignora o cabecalho VIA e usa o endereco de onde chega o pacote.
directmedia=no forca o fluxo de mdia pelo Asterisk.
qualify=yes forca que um pacote exploratrio mantenha o NAT aberto.
8.8. DTMF
DTMF a sigla em ingls de "Dual-Tone Multi-Frequency", ou seja, so os tons
resultantes do cruzamento de duas frequncias. As frequncias destes tons e suas
combinaces so mostradas na tabela a seguir.
auto O Asterisk tenta enviar os dgitos via rfc2833, em caso de falha envia
inband.
[general]
register => filial-FF:senha-FF@EnderecoIPdoProvedorVoIP
[op-voip]
type=peer
defaultuser=filial-FF
secret=senha-FF
context=interno
host=IPdoServidor
dtmfmode=rfc2833
directmedia=no
insecure=port,invite
qualify=yes
fromuser=filial-FF
fromdomain=IPdoServidor
[interno]
...
...
include=>to-pstn
[to-pstn]
exten => _0XXXX,1,Dial(SIP/op-voip/${EXTEN:1},30,tT)
[from-pstn]
exten => _FFXX,1,Dial(SIP/${EXTEN},60,t)
No menu Cadastros >> Troncos, crie um tronco do tipo SNEP SIP com outra filial.
Lembre-se que para a comunicaco entre voc e a filial, ambos devem ter um tronco
entre si.
No menu Cadastro >> Troncos, crie um tronco com uma operadora VoIP (os dados
sero fornecidos pelo instrutor).
#include snep/snep-sip-trunks.conf
#include snep/snep-sip.conf
Verifique no menu Status >> Ramais, Troncos Ip, Filas, na seco Troncos SP, se o
servidor registrou corretamente.
Plano de discagem
4linux.com.br 9. Plano de discagem
9. Plano de discagem
O plano de discagem o coraco do Asterisk. Ele quem define como o Asterisk ira
gerenciar as chamadas. Consiste basicamente de uma lista de instruces ou passos
que o Asterisk deve seguir. Essas instruces so disparadas a partir dos dgitos
recebidos de um canal ou aplicaco. Para configurar o Asterisk fundamental que
se entenda o plano de discagem dele.
O arquivo extensions.conf
[ general ]
Define algumas configuraces gerais, como por exemplo:
Diretiva Significado
static Esta opco afeta apenas a operaco do comando save dialplan. O valor
default no, mas o arquivo exemplo do extensions.conf instalado com o
Asterisk explicitamente seta static=yes.
writeprotect Se writeprotect=no e static=yes, ento voc pode salvar o plano de discagem
atual com o comando save dialplan.
Definices nas variveis globais na categoria [globals] permanecem sem
modificaco. O valor default no.
clearglobalvars Apaga as variveis globais quado o plano de discagem for recarregado
(*CLI>dialplan reload).
[ globals ]
Na seco [globals], voc pode definir as variveis globais (ou constantes) e seus
valores iniciais. Elas so usadas para simplificar mudancas futuras na configuraco
do PABX. O valor atual das variveis globais pode ser mudado usando a funco
GLOBAL. O valor da varivel global pode ser referenciado, usando a sintaxe: $
{NOMEDAVARIAVEL}. As variveis globais no so sensveis a
maiuscula/minuscula, mas por convenco so declaradas em maiusculo.
Exemplos:
RINGTIME=3
VMANNOUNCE=mysounds/my-vm-annouce
Determina qual arquivo de udio deve ser tocado como anuncio do voicemail.
[ramais]
[fixo]
;fixo-local
exten => _[2-5]XXXXXXX,1,Dial(DAHDI/g0/${EXTEN},60,T)
;fixo-DDD
exten => _0ZZZZ[2-5]XXXXXXX,1,Dial(DAHDI/g0/${EXTEN},60,T)
[celular]
;Celular Local
exten => _[6-9]XXXXXXX,1,Dial(DAHDI/g0/${EXTEN},60,T)
9.2. Variveis
O conceito de varivel no Asterisk comum a qualquer linguagem de programaco.
Podemos criar nossas prprias variveis ou fazer uso das variveis j existentes, ou
criadas em tempo de execuco do prprio Asterisk.
So configuradas usando o comando Set. Cada canal recebe seu prprio espaco de
variveis, de forma que no h chance de colises entre diferentes chamadas, e a
varivel automaticamente destruda quando o canal desligado. Existem algumas
variveis de canal configuradas pelo Asterisk que voc pode se referir como
definices do plano de discagem. Variveis definidas pelo Asterisk diferenciam
caixas alta e baixa.
Varivel Significado
${ENV(nomedavariavel)}
${ENV(ASTERISK_PROMPT)} O prompt atual da linha de comando CLI
O nome do arquivo gravado pela ultima vez com o comando
${ENV(RECORDED_FILE)}
Record
Varivel Significado
${ARG1} O primeiro argumento passado pela macro.
${ARG2} O segundo argumento passado pela macro e assim por diante.
${MACRO_CONTEXT} O Contexto da extenso que disparou a macro.
${MACRO_EXTEN} A extenso que disparou a macro.
Configurado por uma macro para influenciar a prioridade de execuco
${MACRO_OFFSET}
ao sair da macro.
${MACRO_PRIORITY} A prioridade na extenso onde esta macro foi disparada.
http://www.voip-info.org/wiki/view/Asterisk+variables
9.3. Expresses
O uso de expresses no plano de discagem do Asterisk permite programar
determinadas operaces em uma linha de cdigo, mantendo assim o plano de
discagem mais claro e elegante. As expresses podem ser divididas em:
Operador Ao
+ Somar
- Subtrair
* Multiplicar
/ Dividir
% Mdulo
Operador Ao
& E
| Ou
! Negaco
Operador Ao
> Maior
< Menor
>= Maior ou igual
<= Menor ou igual
= Igual
!= Diferente
Caso 4 seja maior que 3: vai para o contexto ura, extension s e prioridade 1;
Caso seja falso vai para contexto ura, extenso i (invalid) e prioridade 1.
Executa algo caso a hora seja a hora especificada. Voc pode usa-la no horrio de
almoco por exemplo, tocando um arquivo de audio que diz que a empresa est em
seu horrio de almoco.
9.4. Funes
As funces possuem um tratamento avancado no plano de discagem, assim como
em qualquer linguagem de programaco o Asterisk possui uma srie de funces que
podem ser utilizadas para criar funcionalidades avancadas no plano de discagem,
para saber mais sobre as funces verifique na CLI com o seguinte comando:
Exemplo:
exten=>100,1,Set(Fruta=pera)
exten=>100,2,NoOp(${LEN(Fruta)}) ;; # 1
exten=>100,3,NoOp(${LEN(${Fruta})}) ;; # 2
Exemplo:
exten => s,1,set(CallTime=${STRFTIME(${EPOCH},GMT-3,%C%y%m%d
%H%M)})
IFTIME(<timespecs?[<true>][:<false>])
onde:
Exemplo:
exten => s,1,Set(foo=${IFTIME(*|mon|8-15|nov?
Bom:Ruim)})
onde:
* Em qualquer horrio
mon De uma segunda-feira
8-15 Que seja entre os dias 8 e 15
nov Do ms de novembro
?Bom Caso a condico seja vlida, responde: Bom
:Ruim Seno, responde: Ruim
GotoIfTime(<timespecs>?[labeliftrue][:labeliffalse])
Desvia o fluxo da chamada para labeliftrue se as condices de tempo de
onde:
* Em qualquer horrio
* Em qualquer dia da semana
26-30 Que seja entre os dias 26 a 30
May Do ms de maio
?telefonista - Desvia chamada para o contexto telefonista.
Substrings
${string:offset:length}
Exemplos:
exten=>_NXX.,1,Set(DDD=${EXTEN:0:3}) ;; #1
exten=>_516XXXXXXX,1,Dial(${EXTEN:3}) ;; #2
Concatenao
Exemplos:
${foo}${bar}
555${Onumero}
${DDD}555${ONumero)
Onde temos:
A macro dever ser criada antes do uso nos contextos, por exemplo:
[macro-exemplo]
exten => s,1,Dial(${ARG1}/${ARG2},${ARG3})
;
; Definicao do contexto interno
;
[interno]
exten => _4XXX,1,Macro(exemplo,SIP,${EXTEN},30)
Na macro acima, estamos usando a aplicaco Dial. Desta forma, temos uma macro
chamada exemplo, que chama a aplicaco Dial, com os argumentos padro,
Tecnologia (SIP,AIX,DGV, etc), identificaco da extenso, timeout (opcional no Dial).
Podemos facilmente ter digitado:
Dial(SIP/${EXTEN},30)
No existe uma diferenca muito grande, em digitar daquela forma e essa, pois
usamos uma linha somente, agora imagine, vrias linhas em vez de uma. Vejamos
outro exemplo:
[macro-hello]
exten => s,1,Answer
exten => s,n,Playback(${ARG1})
;
; Definicao do contexto ramais
;
[ramais]
exten => 1234,1,Macro(ola)
Desta forma fica um pouco mais claro o uso. Criamos a macro hello, que atender a
chamada atravs da aplicaco Answer, e depois tocar uma musica que ser
passada como argumento na chamada da macro, atravs da aplicaco Playback.
O Asterisk na verso 1.8 ou superior tem suporte uma nova aplicaco chamada
Gosub() que tem a mesma funco da aplicaco Macro, porm com uma pequena
diferenca na sintaxe do comando. Em verses futuras a aplicaco Macro ser
depreciada sendo substituda pela nova Gosub.
onde:
context = nome do contexto
times / weekdays / mdays / months veja a especificaco <timespec>
descrita no item Funes >> Condicionais.
Exemplo:
Supondo que uma empresa trabalhe somente nos dia uteis, e das 8 as 18 hs, as
chamadas entrantes vo para a URA dentro do horrio de expediente. Caso
contrrio, toca uma mensagem e encerra a chamada.
9.8.1. Famlias
Uma Rota executa aces no SNEP e para que isso aconteca, algumas condices
devem ser satisfeitas, como:
Ao acessar o menu Regras de Negcio >> Rotas, ser exibida uma tela com a lista
de rotas j cadastradas (veja prxima figura).
/etc/asterisk/extensions.conf
[interno]
exten => 9200,1,Set(NAME="ASTERISK")
exten => 9200,n,Set(I=4)
exten => 9200,n,NoOP(${NAME})
exten => 9200,n,NoOP(${I})
exten => 9200,n,Answer()
exten => 9200,n,SayDigits(${I})
exten => 9200,n,Wait(1)
exten => 9200,n,NoOP($[${I}+${I}])
exten => 9200,n,SayDigits($[${I} + ${I}])
exten => 9200,n,NoOP($[${I}=4])
exten => 9200,n,NoOP($[${I}=4 & ${NAME}=ASTERISK])
exten => 9200,n,NoOP($[${I}=4?"MATCH"::"DO NOT MATCH"])
exten => 9200,n,Hangup
Crie uma extenso de sada para celular interurbano dentro do contexto to-
pstn.
exten => _0ZZZZ[6-9]XXXXXXX,1,Dial(SIP/op-voip/055$
{EXTEN:3},20)
Faca com que as chamadas vidas do provedor SNEP sejam encaminhadas para os
ramais 01 e 02 respectivamente utilizando uma varvel global.
/etc/asterisk/extensions.conf
[globals]
HUNTGROUP=SIP/FF01&SIP/FF02 ;Troque FF pelo seu prefixo
[from-pstn]
; exten => _FFXX,1,Dial(SIP/${EXTEN},60,t) ; Comente esta linha
[expediente]
exten => _FFXX,1,Dial(${HUNTGROUP},20,t) ;Troque FF pelo seu
prefixo
[foraexpediente]
exten => _X.,1,Answer()
exten => _X.,n,Playback(queue-thankyou)
Crie uma Macro abaixo dos contextos criados anteriormente, depois utilize a
aplicaco Macro para executar uma chamada atravs da mesma.
[interno]
[macro-discaramal]
exten => s,1,Dial(${ARG1},10,tT)
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s,n,Hangup()
exten => s-BUSY,1,Voicemail(${ARG1},b)
exten => s-BUSY,n,Hangup()
# cd /etc/asterisk
# cp
/var/www/snep2/install/etc/asterisk/extensions.conf .
/extensions-snep.conf
# include extensions-snep.conf
# cd /etc/asterisk
# cp /var/www/snep2/install/etc/asterisk/res_odbc.conf ./
# cp /var/www/snep2/install/etc/asterisk/manager.conf ./
# cp /var/www/snep2/install/etc/asterisk/agents.conf ./
# cp /var/www/snep2/install/etc/asterisk/cdr_odbc.conf ./
# cp /var/www/snep2/install/etc/asterisk/extconfig.conf ./
Crie uma rota para fazer chamadas para uma filial qualquer, utilizando os
seguintes parmetros:
Origem: Grupo todas
Destino: Expresso Regular NNXX (onde NN = Numero da Filial)
Aces:
Definir Centro de Custos 9-Internas
Discar para tronco Tronco da Filial NN
Crie uma rota para receber chamadas de uma filial qualquer, utilizando os
seguintes parmetros:
Origem: Expresso Regular NNXX (onde NN = Numero da Filial)
Destino: Grupo todas
Aces:
Definir Centro de Custos 9-Internas
Discar para ramal
Crie uma rota para fazer chamadas para telefones Fixos Locais, utilizando os
seguintes parmetros:
Origem: Grupo Todas
Destino: Alias de Expresso Fixo Local
Aces:
Definir Centro de Custos 2-Saidas
Discar para Tronco (Escolha um tronco de sada)
9.11.4. Desafio
Recursos da classe V
4linux.com.br 10. Recursos da classe V
Answer()
Bakground(<arquivoDeAudio>)
WaitExten(<seg>)
Caso o prompt da URA seja tocada at o fim o usurio ainda pode digitar
uma opco em mais x segundos passado como argumento.
Goto(<contexto>,<extenso>,<prioridade>)
Read(<var>) - Opcional
Record(<arquivo>) - Opcional
Exemplo de URA
[entrada]
exten => _X.,1,Goto(URA,s,1) ;Toda a chamada entrante
;desviada para a URA
[URA]
exten => s,1,Answer() ;Atende o canal
exten => s,n,Background(menuDaUra) ;Toca o audio do menu da URA
exten => s,n,WaitExten(2) ;Aguarda mais 2 segundos
[suporte]
exten => s,1,Dial(SIP/2000,40) ;Chama o ramal do suporte
[comercial]
exten => s,1,Dial(SIP/2001,40) ;Chama o ramal do comercial
[financeiro]
exten => s,1,Dial(SIP/2002,40) ;Chama o ramal do financeiro
10.2. Estacionamento
Pode ser usado para estacionar uma chamada. Isto auxilia quando voc est
atendendo em um telefone fora da sua sala. Estaciona a chamada em uma
determinada extenso e quando se move de volta a sua sala digita a extenso onde
a chamada est estacionada.
Como funciona:
Onde configurar:
include=>parkedcalls
[general]
parkext=>700
parkpos = >701-720
context=>parkedcalls
parkingtime=>45
onde:
10.3. Captura
A captura permite que voc puxe um chamado de um colega no mesmo grupo de
chamadas. Isto evita que voc tenha de levantar para atender um telefone do seu
vizinho que no para de tocar. Discando *8 voc pode capturar uma chamada no
seu grupo de chamadas. Este recurso pode ser alterado via arquivo features.conf No
arquivo sip.conf vamos adicionar duas linhas em cada ramal.
callgroup=xx
pickupgroup=xx
pickupexten=>*8
Sua sintaxe :
Pickup(extenso[@contexto])
Onde:
extenso - Extenso que deseja capturar;
contexto - Contexto no qual est a extenso que deseja capturar.
10.4. Transferncia
Existem duas possibilidades de transferncia de chamadas. Transferncia direta e
Transferncia assistida. A configuraco desses dois tipos de transferncia tambm
pode ser feita diretamente no Asterisk, sendo util para telefones convencionais que
no possuem as teclas de HOLD e TRANSFER. Esta configuraco est no
arquivo /etc/asterisk/features.conf.
/etc/asterisk/features.conf
atxfer => *2
/etc/asterisk/featues.conf
blindxfer => #
Exemplo:
10.5. Conferncia
A conferncia no Asterisk feita usando o aplicativo MeetMe(). O MeetMe() uma
funcionalidade muito simples de usar com a vantagem de funcionar com qualquer
tipo de canal. Alguns telefones padro SIP, por exemplo, tm seus prprios
mecanismos de conferncia que tambm podem ser usados, mas o mtodo padro
para conferncia o MeetMe().
10.5.1. Formato:
MeetMe(Confno[|options][|password])
onde:
v modo vdeo;
password Especifica uma senha a aser solicitada para cada usurio que
entrar na sala de confer6encia.
10.5.2. Configurao
Vamos configurar a nossa sala de conferncia. Para isso vamos apagar o conteudo
do arquivo meetme.conf em /etc/asterisk e editar o seu novo conteudo:
[general]
audiobuffers =32
[rooms]
conf => 5001
conf => 5002 ,123456
onde:
10.5.3. Aplicao
exten=>5001,1,MeetMe(5001)
/etc/asterisk/musiconhold.conf
[default]
mode=files
directory=/var/lib/asterisk/moh
random=yes
onde:
/etc/asterisk/sip.conf
[general]
musicclass=default
10.7. Siga-me
Para implementar esta funcionalidade necessrio criar um contexto especfico para
ativar e desativar a funcionalidade. Este contexto pode ser criado dentro do
arquivo /etc/asterisk/extensions.conf. Veja o exemplo:
/etc/asterisk/extensions.conf
[interna]
exten => _1XXX,1,Noop(CF/${EXTEN})
exten => _1XXX,2,Set(siga=${DB(CF/${EXTEN})})
exten => _1XXX,3,Dial(SIP/${siga},30,Ttw)
Neste caso, todas as ligaces que forem feitas para qualquer o numero 1XXX, ele
vai verificar na base de dados do asterisk se existe algum registro CF referente ao
ramal de destino e se existe um valor para esse registro, caso haja, ele efetua o
siga-me, caso no faz a ligaco normal.
[default]
include = > sigame-on
include = > sigame-off
include = > internas
10.8. VoiceMail
O VoiceMail, ou correio de voz o servico de "secretria eletrnica"do Asterisk, isto
, ao identificar que o destino de uma chamada no est disponvel, possibilita ao
originador da chamada deixar uma mensagem de voz, a qual gravada em um
arquivo de udio na caixa postal do ramal chamado.
3. Configure uma extenso para que o usurio possa o uvir seu correio de voz e
administr-lo.
[general]
format=wav49|gsm|wav
attach=yes
delete=no
maxmsg=100
maxsecs=180
minsecs=10
maxsilence=3
serveremail=asterisk
emailsubject=[Voip 4Linux]: Nova Mensagem ${VM_MSGNUM} na caixa
postal ${VM_MAILBOX}
emailbody=Caro(a) ${VM_NAME}:\n\nvoce tem nova mensagem de
voz.\nDuracao:${VM_DUR}.\nEnviado por: ${VM_CALLERID}, em $
{VM_DATE}.\n Para ouvir sua caixa postal disque para
9900.\n\nObrigado!\n\n\tDexter\n\twww.dexter.com.br\n\t\n\n
emaildateformat=%A, %B %d, %Y at %r
[zonemessages]
brazil=America/Sao_Paulo|vm-received QR 16
[default]
SIP/9001 => 1234,Dexter Clem,root@localhost, delete=yes
SIP/9002 => 1234,Administrativo,root@localhost , delete=yes
SIP/9003 => 1234,Comercial,root@localhost, delete=yes
[macro-ramal]
exten => s,1,Dial(${ARG1}/${ARG2},20,tT) ;ARG1=SIP ; ARG2=90XX
exten => s,n,Goto(${DIALSTATUS},1)
exten => BUSY,1,VoiceMail(${ARG2},b)
exten => NOANSWER ,1,VoiceMail(${ARG2},u)
exten => CHANUNAVAIL ,1,VoiceMail(${ARG2},u)
[ramais]
exten => _90XX,1,Macro(ramal,SIP,${EXTEN})
Para criar as regras de discagem para que os usurios possam verificar suas caixas
postais, edite novamente o arquivo: /etc/asterisk/extensions.conf. Adicione as linhas
a seguir ao final do contexto treinamento para permitir aos seus usurios a consulta
as suas caixas postais
/etc/asterisk/snep/snep-features.conf
Estacionamento 700
Captura direta *55 + No. Ramal
Captura por grupo *8
Siga-me Ativar *20
Siga-me Desativar *21
No perturbe ativar *22
No perturbe Desativar *23
Espionar Canais *99 + No. Ramal
Espionar Canais Sussurro *98 + No. Ramal
Espionar Canais por grupo *97 + No. Ramal
Espionar Canais por grupo Sussurro *96 + No. Ramal
Saber o numero do ramal *503
Gravar audio *100
Ouvir ultima gravaco do *100 *101
Agenda (Cadastros >> Contatos) *12 + Cd (P/telefone fixo)
*13 + Cd (P/ telefone celular)
/etc/asterisk/snep/snep-authconferences.conf
/etc/asterisk/snep/snep-conferences.conf
Salas de conferncia 901 a 915
/etc/asterisk/snep/snep-musiconhold.conf
Vamos criar uma extenso para gerar as gravaces a serem utilizadas nas
URAs que sero construdas mais adiante. Edite o arquivo
/etc/asterisk/extensions.conf e, dentro do contexto [interno], adicione as
seguintes linhas:
[interno]
...
exten => _777.,1,Record(${EXTEN:3}:ulaw)
exten => _777.,n,wait(1)
exten => _777.,n,Playback(${EXTEN:3})
exten => _777.,n,Hangup()
Gravando as mensagens
[expediente]
;exten => _FFXX,1,Dial(${HUNTGROUP},20,t)
exten => _X.,1,goto(ura,s,1)
[ura]
exten => s,1,Answer()
exten => s,2,BackGround(111)
exten => s,3,WaitExten(2)
exten => t,1,Dial(${TELEFONISTA})
exten=> 1,1,Playback(222)
exten=> 1,n,Dial(SIP/FF01)
exten=> 1,n,Hangup()
exten=> 2,1,Playback(333)
exten=> 2,n,Dial(SIP/FF02)
exten=> 2,n,Hangup()
exten=> 3,1,Playback(444)
exten=> 3,n,Dial(SIP/FF03)
exten=> 3,n,Hangup()
*CLI>dialplan reload
Msica em Espera
[interno]
...
exten => 9100,1,Answer()
exten => 9100,n,MusicOnHold(default,30)
Aps atender, transfira a ligaco para o numero 700. O sistema vai lhe
informar o numero da sala onde a ligaco foi estacionada. Desligue.
Agora disque para o numero da sala informado no item anterior e veja o que
acontece.
callgroup=1
pickupgroup=1
directmedia=no
Peca para algum de outra filial para discar para um dos seus ramais.
conf=>9500
conf=>9501,1234
exten=>9500,1,MeetMe(9500)
exten=>9501,1,Meetme(9501)
Peca para algum dos outros grupos para discar para algum dos seus ramais
e transfira a ligaco para uma das salas de conferncia.
#include snep/snep-musiconhold.conf
DAC
4linux.com.br 11. DAC
11. DAC
O DAC (Distribuico de Chamadas Automaticamente) composto por Filas e
Agentes. As filas so configuradas no arquivo queues.conf e os agentes no arquivo
agents.conf. As filas so grupos de agentes/ramais que iro receber as chamadas
entrantes na fila. Os agentes so os dispositivos que iro receber as chamadas. O
principio de funcionamento das filas de atendimento pode ser resumido nos
seguintes passos:
Recursos adicionais como pausas podem ser atribudas aos agentes, fazendo com
que os mesmos fiquem sem receber chamadas temporariamente. Os agentes foram
criados com o propsito principal de estarem logados em filas de atendimento.
11.3. Configurao
[general]
persistentmembers = yes
autofill = yes
monitor-type = MixMonitor
;
[Comercial] ;; Nome da fila
musicclass = default
strategy = ringall
timeout = 15
retry = 5
maxlen = 0
onde:
11.3.2. Os agentes
/etc/asterisk/agents.conf
[general]
persistentagents=yes
multiplelogin=yes
;
[agents] ; aqui se inicia as configuraes dos
agentes
maxlogintries=3
autologoff=15
autologoffunavail=yes
endcall=yes
musiconhold => default
group=1
; ======= Definicao dos agentes =======
; Essa parte dedicada a configurao do agente seguindo a
sintaxe:
; agent => agentid,agentpassword,name
[agents]
agent => X00,X00,Agente X00
agent => X01,X01,Agente X01
onde:
AddQueueMember(fila, agente)
; Login do Agente
exten => _550,1,Answer
exten => _550,2,AddQueueMember(Comercial,Agent/${CALLERID(num)})
exten => _550,3,Hangup
RemoveQueueMember(fila, agente)
; Logout do Agente
exten => _551,1,Answer
exten => _551,2,RemoveQueueMember(Comercial,Agent/$
{CALLERID(num)})
exten => _551,3,Hangup
/etc/asterisk/queues.conf
[general]
;Habilita a gravao de chamadas endereadas aos agentes.
;
monitor-type=MixMonitor
;
;Formato usado para gravar as chamadas (wav, gsm, wav49)
;O mais indicado o wav49 pois ocupa pouco espao e compatvel
;com a maioria dos Sistemas Operacionais.
;
monitor-format=gsm|wav|wav49;
;
;O diretrio padro para salvar as gravaes
;
/var/spool/asterisk/monitor
Nome da fila : nome que identifica a fila. Observar para no usar espacos ou
caracteres acentuados/especiais como: c@#%...;
Classe das msicas de espera: conjunto de arquivos de som a serem
usados como musicas de espera. (Veja mais em: Configuraces >> Musicas
em Espera);
Arquivo de anncio da fila: define o arquivo de som que contm a
mensagem informando o nome da fila que o chamador est;
Intervalo de repetio das mensagens: tempo em segundos que as
mensagens de aviso sero repetidas durante uma espera;
Estratgia de distribuio: Estratgias de distribuico de chamadas
[vendas]
strategy=rrmemory
music = default
timeout = 15
retry = 2
maxlen = 0
[interno]
;Executa Login do agente
exten => 550,1,Set(FILA=vendas)
exten => 550,n,Goto(memberAdd,s,1)
[from-pstn]
; Recebendo as ligaes do seu provedor e entregando no DAC
exten=>0800FF,1,Answer ; FF = Nmero da sua filial
[to-pstn]
;Discando para DAC das outras filiais
exten => _0800XX,1,Dial(SIP/${EXTEN}@op-voip,20,tT)
[memberAdd]
exten => s,1,AddQueueMember(${FILA},SIP/${CALLERID(NUM)})
exten => s,n,ExecIf($["${AQMSTATUS}" = "ADDED"]?Background(agent-
loginok))
exten => s,n,hangup()
[memberRemove]
exten => s,1,RemoveQueueMember(${FILA},SIP/${CALLERID(NUM)})
exten => s,n,ExecIf($["${RQMSTATUS}" = "REMOVED"]?
Background(agent-loggedoff))
exten => s,n,hangup()
Teste
Disque para o numero 550 do seu ramal SIP para se logar como um agente.
Digite o comando
Peca para outro aluno ligar para a sua filial 0800NFF, onde FF o numero da
sua filial.
Ajustando as rotas: Altere a rota que recebe chamadas das filiais e, troque a
ao:
por
Teste: Peca para um colega de outra filial discar para seu ramal. Note que:
Segurana
4linux.com.br 12. Seguranca
12. Segurana
Pare o Asterisk.
# /etc/init.d/asterisk stop
# groupadd asterisk
AST_USER=asterisk
AST_GROUP=asterisk
Allowguest=no
Autocreatepeer=no
alwaysauthreject = yes
call-limit=1 deny =0.0.0.0/0.0.0.0
permit =192.168.0.0/255.255.255.0 a
lwaysauthreject=yes
realm=sip.4linux.com.br
domain=sip.4linux.com.br
onde:
seu ser;
Alwaysauthreject = yes Esta opco foi por um tempo (desde 1.2?), mas o
padro "no", que permite o vazamento de informaces de extenso. Definir
esta opco como "sim" ir rejeitar os pedidos de autenticaco de usurios
vlidos ruim com as informaces rejeico mesmo que com nomes de usurio
invlido, negando atacantes remotos a capacidade de detectar extenses
existentes com ataques de forca bruta adivinhar;
Realm=sip.4linux.com.br Define qual nome de domnio real para facilitar a
traduco de endereco para o usurio;
domain=sip.4linux.com.br FQDN de domnio do Asterisk.
12.4.1. Download
# apt-get update
# apt-get install bzip2
Aps descompactar o pacote, o ideal que o arquivo README seja lido com
atenco, adiantando o processo, um requisito do produto (contido no leia-me, seria a
verso do Python >= ao 2.3). Instale-o:
# apt-get update
# apt-get install python (ou python2.4)
12.4.2. Instalao
# cd fail2ban-0.8.4
# python setup.py install
# fail2ban-server -V
# fail2ban-client -V
# fail2ban-regex -V
# mkdir -p /etc/fail2ban
# chown root.root /etc/fail2ban -R
Apenas alguns ajustes sero necessrios neste script, vamos precisar organizar o
PATH (caso necessrio. No meu caso, os executveis esto em /usr/local/bin), edite
no arquivo /etc/init.d/fail2ban as seguintes linhas:
(Linha 25 EDIT)DAEMON=/usr/local/bin/$NAME-client
# cd /etc/init.d/
# chmod +x fail2ban
# /etc/init.d/fail2ban start
Olhando os logs:
# tail -f /var/log/fail2ban.log
Agora que o servico est ativo em execuco, vamos definir sua inicializaco
automtica no Sistema Operacional:
# cd /etc/init.d/
# update-rc.d -f fail2ban defaults
12.4.4. Configurao
#
# Asterisk
#
[asterisk]
enabled = true
filter = asterisk
action = iptables-allports[name=asterisk, protocol=all]
sendmail-whois[name=Asterisk, dest= TI@EMPRESA.com.br, sender=
security@CLIENTE.com.br]
logpath = /var/log/asterisk/full
maxretry = 5
bantime = 172800
/etc/fail2ban/filter.d/asterisk.conf
NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is
ignored.
# Values: TEXT
#
ignoreregex =
Asterisk Realtime
4linux.com.br 13. Asterisk Realtime
Alm dos dados ficarem em tabelas do MySQL, tambm a recarga das alteraces
so feitas automaticamente pelo Asterisk dispensando o comando reload, isto
porque quando chega uma requisico no Asterisk ele procura a informaco no banco
caso no seja encontrada na memria.
13.2.1. Dependncias
[asterisk]
Driver = MySQL
Description = MySQL ODBC 3.51 Driver DSN
Server = localhost
Port = 3306
Database = asterisk
Option = 3
Socket =
[MySQL]
Description = MySQL driver
Driver = /usr/lib/odbc/libmyodbc.so
Setup = /usr/lib/odbc/libodbcmyS.so
CPTimeout =
CPReuse =
[asterisk]
enabled => yes
dsn => asterisk
; Altere abaixo o usuario de conexao com o banco
username => myuser
; Altere abaixo a senha de conexao com o banco
password => mypass
pre-connect => yes
[settings]
sippeers => odbc,asterisk,sipfriends
Criar um arquivo sipfriends.sql com o conteudo sql da tabela que pode ser
encontrado em:
http://www.voip-info.org/wiki/view/Asterisk+RealTime+Sip.
Nao havendo erro nenhum voc pode configurar o usurio 1000 com a senh
senha$456 no telefone ou softphone.
Para poder verificar o status, voc pode usar o comando abaixo no cli do asterisk
Laboratrio Asterisk
# cd /etc/asterisk
# gedit res_mysql.conf
res_mysql.conf
[general]
dbhost = 127.0.0.1
dbname = asteriskdb
dbuser = asterisk
dbpass = asterisk
dbport = 3306
;dbsock = /tmp/mysql.sock
# mysql -u root -p
Enter password:
wget http://endereoipdoinstrutor/realtime/realtime.sql
mysql p u asterisk <realtime.sql
/etc/asterisk/extconfig.conf
[settings]
iaxusers => mysql,asteriskdb,iax_buddies
iaxpeers => mysql,asteriskdb,iax_buddies
sipusers => mysql,asteriskdb,sip_buddies
sippeers => mysql,asteriskdb,sip_buddies
voicemail => mysql,asteriskdb,voicemail
extensions => mysql,asteriskdb,extensions_table
# mysql -u asterisk -p
Enter password:
# mysql -u asterisk -p
Enter password:
mysql> use asteriskdb;
mysql> insert into extensions_table(id, context, exten, priority,
app, appdata) VALUES ('1','teste', 'FF10','1','Dial','SIP/FF10');
mysql> insert into extensions_table(id, context, exten, priority,
app, appdata) VALUES ('2','teste', 'FF11','1','Dial','SIP/FF11');
*CLI>dialplan reload
14. Os Autores
Felipe Ribeiro Pasa, profissional de redes Asterisk certificado dCAP e LPI possui 8
anos de experincia com projetos e implantaco de redes VoIP e 10 anos de
experincia com Linux. J desempenhou vrias funces como suporte, analista de
redes, desenvolvimento e pr-venda de equipamentos para redes VoIP. Atua como
instrutor Asterisk e Linux desde 2007, j ministrou treinamentos em 10 capitais
brasileiras totalizando mais de 3.000 horas/aula. Hoje atua como instrutor e
consultor auxiliando as empresas que trabalham no desenvolvimento de sistemas
integrados a tecnologias VoIP como Asterisk, FreeSwitch e OpenSIPS.
15. Bibliografia
http://ead.opens.com.br/course/view.php?id=5
http://www.sneplivre.com.br
http://wiki.sj.ifsc.edu.br/wiki
http://ensinar.wordpress.com/2008/12/21/a-importancia-dos-codec's/
https://wiki.asterisk.org/wiki
http://www.voipexperts.com.br/
http://www.asteriskdocs.com.br/blog/
http://www.voip-info.org/wiki