Sie sind auf Seite 1von 8

Monte um sistema VoIP domstico com o Asterisk VoIP | Ronne Scher...

http://ronneudi.wordpress.com/2012/02/12/monte-um-sistema-voip-d...

Monte um sistema VoIP domstico com o Asterisk VoIP


Basta um computador antigo e o Asterisk para montar um servidor telefnico VoIP em uma rede caseira. Por Martin Loschwi

Sistemas VoIP possibilitam estabelecer ligaes de udio bastante rpidas pela Internet, alm de outras vantagens. Por exemplo, a qualidade da voz costuma ser melhor que a de linhas convencionais (apesar de boatos que armam o contrrio) e ligaes internacionais no tm custo adicional. S esses motivos j seriam sucientes para justicar pelo menos uma olhada nessa tecnologia. Obviamente, para usar a Internet como uma plataforma telefnica, no basta simplesmente puxar o gancho e comear a falar. preciso primeiro se registrar em um provedor de servios VoIP. Uma lista de provedores pode ser encontrada em [1] . Ao assinar um plano VoIP, possvel usar o login fornecido para usar a conexo com a Internet para se logar no respectivo servidor SIP (Session Initiation Protocol). SIP hoje um dos principais protocolos VoIP, junto com o H.323. Aps completar essa etapa, voc tambm vai precisar de um aparelho de telefone VoIP ou de um softphone (telefone via software) instalado em um computador com placa de som e microfone (ou um headset). Atualmente, um dos sistemas VoIP mais conhecidos e usados por prossionais da rea est disponvel gratuitamente na Internet. Trata-se do Asterisk [2] , hoje um sinnimo de software de telefonia. O Asterisk tem muitas opes teis, incluindo a habilidade de funcionar como um sistema telefnico domstico completo. Neste tutorial, vamos imaginar um sistema que tenha de lidar com muitas ligaes por dia. A linha telefnica e tambm a conexo ADSL com a Internet baseada no antigo sistema analgico POTS (Plain Old Telephone Service ou o bom e velho sistema de telefonia xa). Por motivos diversos, um upgrade para o sistema mais moderno RDSI (Rede Digital de Servios Integrados ou ISDN, na sigla em ingls), estaria fora de questo. Nesse caso, a tecnologia VoIP uma boa opo, j que ela pode trabalhar numa boa com o sistema POTS e, dependendo do plano no provedor VoIP, permite mais de uma ligao simultnea com uma nica conta, alm da opo de se obter um nmero de telefone como se fosse uma linha convencional.

Mo na massa
A diculdade para se congurar esse sistema varia. Quanto mais complicada for a aplicao, obviamente mais difcil ser a tarefa. O Asterisk no uma exceo a essa regra. Alm de instalar, congurar e adicionar alguns extras ao aplicativo, o programa tambm deve funcionar como uma secretria eletrnica virtual. Esse artigo no vai mostrar como usar o Asterisk como um servidor VoIP comercial. Ento, no espere poder competir com servios do tipo ao m da leitura.

1 of 8

20/12/2012 17:40

Monte um sistema VoIP domstico com o Asterisk VoIP | Ronne Scher...

http://ronneudi.wordpress.com/2012/02/12/monte-um-sistema-voip-d...

congurar e adicionar alguns extras ao aplicativo, o programa tambm deve funcionar como uma secretria eletrnica virtual. Esse artigo no vai mostrar como usar o Asterisk como um servidor VoIP comercial. Ento, no espere poder competir com servios do tipo ao m da leitura. Para congurar o Asterisk como um servidor domstico, voc vai precisar de uma conta VoIP em um provedor do tipo. A vantagem dessa soluo que qualquer PC (ou telefone IP) nessa rede poder ter acesso VoIP atravs do servidor Asterisk. Essa congurao do Asterisk til para uma rede local. Nesse tipo de cenrio, o acesso Internet geralmente passa por um router com rewall e NAT (Network Address Translation). Aqui comea o problema. O protocolo SIP no conversa muito bem com o NAT, ento ser preciso fazer alguns buracos no rewall para habilitar o SIP na rede. Qual porta precisa ser aberta uma questo que depende de seu provedor. Vamos assumir que essa porta a 5060/tcp, j que ela o padro do SIP. Com essa porta liberada, o Asterisk vai cuidar das questes envolvendo NAT.

Instalao
Instalar o Asterisk no complicado, j que a congurao s ser feita depois. A maioria das distribuies incluem um pacote do programa. Como o Asterisk se integra bem ao Debian, usaremos essa distribuio como exemplo desse artigo. Mas os arquivos de congurao e seus parmetros so os mesmos, independente da distribuio Linux usada. Para o caso da compilao do Asterisk a partir do cdigo fonte, leia o quadro 1 (Compilando o Asterisk). Aps a instalao do Asterisk no Debian, haver alguns arquivos .conf em /etc/asterisk. O Asterisk um aplicativo minimalista: contm apenas uma dzia de pequenos mdulos, que so carregados on the y quando necessrios. O compacto kernel do Asterisk contm as funes centrais que controlam esses mdulos. H um arquivo de congurao para cada um deles. Isso evita a necessidade de um arquivo de congurao global e gigantesco, embora isso embole um pouco o diretrio /etc/asterisk. A maioria desses arquivos no nos interessa pelo menos para este tutorial. Eles se referem a partes do Asterisk que no se costuma usar. Mas h duas excees: o sip.conf e o extensions.conf.

sip.conf
A maioria dos provedores VoIP usam o protocolo SIP. Mas existem outros, como o IAX2 e SCCP. Nosso artigo ter como foco o SIP. Para isso, o mdulo necessrio o chan.sic. O arquivo de congurao correspondente o sip.conf. Os parmetros em sip.conf permitem que o Asterisk se logue no servidor VoIP como se fosse um telefone. De modo semelhante, os usurios da rede local vo se logar no servidor Asterisk como se fossem telefones. O Asterisk funciona como um servidor proxy. Ele redireciona conexes locais para a Internet e conexes exteriores para o respectivo telefone. Ao congurar o arquivo sip.conf, tenha os dados do seu provedor VoIP.

2 of 8

Seo geral

20/12/2012 17:40

Monte um sistema VoIP domstico com o Asterisk VoIP | Ronne Scher...

http://ronneudi.wordpress.com/2012/02/12/monte-um-sistema-voip-d...

Seo geral
Os arquivos de congurao so organizados em sees. A primeira seo do sip.conf chamada [general], como nos outros arquivos dos outros mdulos. Por padro, ela j vem preenchida. Mas teremos que fazer algumas mudanas. Em seu editor preferido, abra o sip.conf e localize a linha contendo a expresso disallow=all. Remova o ponto-e-vrgula (;) no incio dessa linha (ele serve para comentar a linha, para que ela no seja lida pelo sistema). Repita isso para as prximas duas linhas, que comeam com language e adicione uma linha com a expresso allow=alaw. Se o servidor Asterisk usa um router NAT para acessar a Internet, ser preciso descomentar (tirar o ponto-e-vrgula) a linha nat=no e mudar no para yes. Isso especica que o Asterisk deve manipular conexes para dentro e para fora da rede.

Identifique-se
O Asterisk se loga no servidor SIP do provedor VoIP como se fosse um telefone. A congurao referente a esse login tambm ca no sip.conf. Cada linha referente a um provedor VoIP comea com register e segue a sintaxe: register => nome:senha@servidor SIP/U extension Se voc tem contas em vrios provedores, ser preciso uma linha para cada um. Por enquanto vamos deixar de lado a parte extension. Mais tarde, isso o que vai informar ao Asterisk quais telefones/ PCs vo se conectar a determinados servidores SIP (dos provedores VoIP). Por enquanto, digite apenas o seu nome de usurio no lugar de extension.

Acesso para o provedor


O prximo passo modicar o sip.conf para permitir que o provedor VoIP envie comandos ao Asterisk. Ele tambm possibilita entradas do tipo peer (ponto/ramal) para organizar chamadas. Uma entrada desse tipo se parece com a seguinte: [Provedor VoIP] type=peer secret=Senha username=nome host=servidor VoIP fromuser=nome fromdomain=Servidor VoIP insecure=very preciso uma entrada como essa, mas com nomes diferentes para cada linha do tipo register em sip.conf, no nal desse arquivo. Certique-se de que os valores batem com os das linhas register no sip.conf.
3 of 8

20/12/2012 17:40

Monte um sistema VoIP domstico com o Asterisk VoIP | Ronne Scher...

http://ronneudi.wordpress.com/2012/02/12/monte-um-sistema-voip-d...

sip.conf, no nal desse arquivo. Certique-se de que os valores batem com os das linhas register no sip.conf. Quadro1: Compilando o Asterisk

Para compilar a partir do cdigo fonte, use o seguinte procedimento (independente da distribuio utilizada). Baixe o cdigo fonte e descompacte o pacote com o comando tar cvfz nomedoarquivo. Use o comando cd para entrar no diretrio com o cdigo e inicie o processo com o comando make. Finalmente, digite make install (como root) para finalmente instalar o Asterisk no lugar adequado do seu sistema de arquivos. Cuidado: os arquivos no ficam no diretrio /usr; em vez disso, so colocados na raiz (/). Para mudar esse (mal) comportamento, abra o arquivo Makefile em um editor e modifique a linha que comea com INSTALL_PREFIX=, digitando /usr/local logo aps o sinal de igual. Isso evita que arquivos do sistema sejam prejudicados sem aviso e permite uma remoo mais fcil do Asterisk. www.linuxmagazine.com.br maro 2006 edio 18 25

Acrescentando telefones
A prxima e ltima etapa acrescentar linhas para permitir que telefones SIP da rede local possam se registrar no servidor. Eles podem ser tanto aparelhos VoIP (gura 1) quanto softphones (gura 2). No nal do arquivo, escreva primeiro um nome para o PC/aparelho da rede local: [Nome]. Voc pode escolher qualquer nome, com letras e nmeros. Uma entrada completa ca mais ou menos assim (2000 o nome do PC/aparelho): [2000] type=friend secret=senha mailbox=100 canreinvite=yes context=default insecure=very host=dynamic A maneira para se congurar pontos adicionais similar. Voc s precisa especicar um nome de usurio e senha para cada entrada e mudar o nmero no campo mailbox. Uma maneira fcil usar nomes numricos e apenas ir aumentando progressivamente. O mesmo vale para o nmero da mailbox (por exemplo: 2001, 2002 e 101, 102). Aps congurar a seo [general] e criar contas para o servidor VoIP e, pelo menos, um cliente local, salve o arquivo sip.conf. A listagem 1 mostra um exemplo didtico desse arquivo.

4 of 8

Criando um dialplan

20/12/2012 17:40

Monte um sistema VoIP domstico com o Asterisk VoIP | Ronne Scher...

http://ronneudi.wordpress.com/2012/02/12/monte-um-sistema-voip-d...

Criando um dialplan
O dialplan (plano de discagem) seu painel de conexes para ligaes via Asterisk. Ele especica como direcionar chamadas externas e locais. Um plano de discagem complexo por natureza, mas nada que a maioria dos usurios no consiga administrar. O plano ca em /etc/asterisk/extensions. conf. O arquivo padro no Debian possui muitos exemplos inteis. Talvez seja melhor renomear o arquivo para extensions.conf.old e criar um do zero. Esse arquivo comea, novamente, com uma seo [general], que sempre inicia assim: [general] static=yes writeprotect=no O comando padro no extensions. conf exten. Ele chamado tanto para ligaes externas, quanto locais; e direciona a ligao para a rede local ou para a Internet. A sintaxe : exten => numero_chamado,prioridade,ao A opo prioridade no usada para determinar a importncia da ligao, mas para denir a ordem em que os comandos em ao sero executados, quando houver diferentes opes em vrias linhas do tipo exten.

Default
A primeira coisa que temos a fazer criar uma seo [default]. Ela ser usada para manipular ligaes no denidas. Teoricamente, voc pode dividir o extensions.conf em quantas sees quiser, mas limitaremos isso para manter o arquivo simples. A primeira parte da seo [default] genrica e obrigatria. Ela contm o chamado echo test, necessrio para se checar a conexo entre o Asterisk e o telefone: [default] exten => 600,1,Playback(demo-echotest) exten => 600,2,Echo exten => 600,3,Playback(demo-echodone) exten => 600,4,Goto(s,6) A seo [default] tambm onde se especica o que fazer com ligaes para fora. Uma opo til exigir que um nmero seja discado para obter a linha externa. Isso permite que voc use o Asterisk para ligaes entre os ramais internos. A linha a seguir determina que o Asterisk direcione chamadas para fora que comeam com 0 para o provedor ProvedorVoIP: exten => _0.,1,Dial(SIP/${EXTEN:1}@ProvedorVoIP) Esse comando menos complicado do que parece. _0. signica que isso ser feito com todas as ligaes que comeam com 0. 1 indica a prioridade (1 nesse caso, j que h pouco o que se fazer com uma ligao para fora, a no ser direcion-la para fora).
5 of 8

Dial(SIP/${EXTEN:1}@ProvedorVoIP) especica que o comando de discagem interno do Asterisk deve

20/12/2012 17:40

Monte um sistema VoIP domstico com o Asterisk VoIP | Ronne Scher...

http://ronneudi.wordpress.com/2012/02/12/monte-um-sistema-voip-d...

com uma ligao para fora, a no ser direcion-la para fora). Dial(SIP/${EXTEN:1}@ProvedorVoIP) especica que o comando de discagem interno do Asterisk deve ser usado. SIP informa que o protocolo SIP deve ser utilizado para fazer a chamada. A barra (/) separa o protocolo do nmero a ser discado. Nesse caso, ele est na varivel ${EXTEN}. O :1 remove o primeiro dgito do conjunto de nmeros a ser discado, j que o 0 foi usado para se obter linha. A expresso @ProvedorVoIP especica o provedor VoIP para onde a chamada ser direcionada. Voc pode repetir isso para quantos provedores desejar. Mas use nmeros diferentes para se obter linha externa, de acordo com cada provedor. E insira o nome do provedor, de acordo com o nome especicado para ele em sip.conf.

Telefonemas de fora
Se voc iniciar o Asterisk agora, vai poder fazer ligaes, mas no receber. Esse o obstculo nal. Nas linhas do tipo register em sip.conf, o ltimo valor de cada linha o nome que o Asterisk usa para gerenciar chamadas de fora para esse servidor. Naquele exemplo, esse valor o seu nome de usurio no provedor VoIP. sip.conf (provedor Exemplo) 01 nonumber 02 [general] 03 port = 5060 04 bindaddr = 0.0.0.0 05 disallow=all 06 allow=ulaw 07 allow=alaw 08 maxexpirey=3600 09 defaultexpirey=120 10 context=default 11 language=pt (br) 12 13 register => 5552XXX:senha@provedorexemplo.com.br/5552XXX 14 15 [provedorexemplo] 16 type=peer 17 secret=SENHA 18 username=5552XXX 19 host=provedorexemplo.com.br 20 fromuser=5552XXX 21 fromdomain=provedorexemplo.com.br 22 insecure=very 23 24 [2000] 25 type=friend 26 secret=Senha 27 mailbox=100 28 canreinvite=yes 29 context=default 30 insecure=very 31 host=dynamic
6 of 8

20/12/2012 17:40

Monte um sistema VoIP domstico com o Asterisk VoIP | Ronne Scher...

http://ronneudi.wordpress.com/2012/02/12/monte-um-sistema-voip-d...

30 insecure=very 31 host=dynamic Se voc usou 2000 como nome de usurio do primeiro telefone (como em nosso exemplo), voc pode usar as linhas a seguir. Apenas substitua Nome pelo nome de usurio no provedor VoIP (o ltimo valor da linha register): exten => Nome,1,Dial(SIP/2000,15,tTr) exten => Nome,2,VoiceMail,u2000 exten => Nome,102,VoiceMail,b2000 exten => Nome,103,Hangup A primeira linha direciona chamadas de fora para o usurio/telefone de nome 2000. As linhas 2 e 3 iniciam a secretria eletrnica virtual do Asterisk, caso o telefone 2000 esteja ocupado ou no disponvel. A linha 4 desliga o telefonema ao m das trs etapas anteriores. Repita essa ltima etapa para todas as linhas do tipo register em seu sip. conf. Se precisar direcionar ligaes para outros telefones alm do 2000, apenas mude os nmeros aps SIP/. A listagem 2 exemplica um arquivo extensions.conf. extensions.conf 01 nonumber 02 [general] 03 static=yes 04 writeprotect=no 05 06 [default] 07 exten => 600,1,Playback(demo-echotest) 08 exten => 600,2,Echo 09 exten => 600,3,Playback(demo-echodone) 10 exten => 600,4,Goto(s,6) 11 12 exten => 2999,1,Ringing 13 exten => 2999,2,VoicemailMain,s2000 14 15 exten => _0.,1,Dial(SIP/${EXTEN:1}<\@>provedorexemplo) 16 17 exten => 5552XXX,1,Dial(SIP/2000,15,tTr) 18 exten => 5552XXX,2,VoiceMail,u2000 19 exten => 5552XXX,102,VoiceMail,b2000 20 exten => 5552XXX,103,Hangup

Iniciando o Asterisk
Como estamos nos baseando na distribuio Debian, ainda h uma etapa aqui. O pacote .deb do Asterisk no permite que voc rode o programa logo aps a instalao. Para mudar esse comportamento, preciso abrir o arquivo /etc/default/asterisk e mudar o valor no de RUNASTERISK= para yes. A sim ser possvel iniciar o Asterisk com o comando /etc/init.d/asterisk start.

7 of 8

Convenincia

20/12/2012 17:40

Monte um sistema VoIP domstico com o Asterisk VoIP | Ronne Scher...

http://ronneudi.wordpress.com/2012/02/12/monte-um-sistema-voip-d...

Convenincia
O Asterisk tem uma secretria eletrnica virtual 100% funcional, que precisa ser habilitada para cada telefone/usurio. O programa adicional addmailbox ajuda muito nessa tarefa. Apenas guarde o nome de usurio para quem voc quer adicionar a secretria (em nosso exemplo, 2000). Em nosso sip.conf, associamos a caixa de mensagens (mailbox) 100 para o usurio 2000. Como root, digite addmailbox no terminal. Se o programa perguntar sobre o contexto (context), digite default. Quando for solicitado o nmero da mailbox, digite 100. Esse script se encarrega do resto, congurando todos os arquivos necessrios. Esto disponveis mensagens da secretria eletrnica em algumas lnguas. No Debian, possvel usar apt-get install para instalar um pacote do tipo asterisk-prompt-xx (xx o cdigo do idioma) para mensagens prontas em outras lnguas. Por enquanto, no h um em portugus brasileiro. Mas possvel gravar respostas personalizadas no formato .wav e convert-las para .gsm com o aplicativo SoX [3] . O formato .gsm um arquivo de udio bem compactado, ideal para udio que ser transmitido por telefone.

Caixa postal
Finalmente, preciso fazer com que o Asterisk toque as mensagens gravadas. Para isso, preciso novamente modicar o arquivo extensions.conf. Acrescente as seguintes linhas: exten => 2999,1,Ringing exten => 2999,2,VoicemailMain,s2000 Agora, quando voc discar 2999 de um telefone interno, ser automaticamente conectado caixa postal do usurio 2000. Na primeira vez que voc se logar, ser preciso especicar uma senha de acesso. Mais tarde isso no ser necessrio. Se a rede estiver congurada como VPN (Virtual Private Network), possvel usar um softphone em conjunto com o OpenVPN para acesso remoto ao servidor Asterisk. Um site que pode ser bastante til para quem estiver iniciando o Asterisk Brasil [4] .

8 of 8

20/12/2012 17:40

Das könnte Ihnen auch gefallen