Artigo

    

Como configurar seu servidor de VoIP com Asterisk

Se você deseja recursos avançados sem os custos associados, experimente um sistema VoIP. Veja como configurar seu próprio servidor de chamadas telefônicas com o Asterisk.


Por Jon Masters


Quantas chamadas telefônicas já fizemos até hoje, ou somente nesta semana. Se pararmos para pensar no quanto usamos o telefone para manter contato com amigos, geograficamente próximos ou distantes, essa estimativa ainda se complica. Na verdade, até 1956, para ligar para meus pais do outro lado do oceano envolveria indiretamente uma transmissão de rádio de longa distância nada confiável, e ainda à taxa de seis dólares por minuto.


Temos muita sorte por possuirmos as atuais tecnologias de telecomunicações, belos iPhones e dispositivos semelhantes na ponta de nossos dedos. Tanto que tomamos como certo que, ao pegarmos o telefone, conseguiremos ligar para centenas de países ao redor do mundo. Todo o mundo moderno é incrivelmente dependente dessa tecnologia para evitar sua parada. Apesar disso, ainda estamos muitas vezes sujeitos ao humor das operadoras de telecomunicações, que nos dizem quanto temos que pagar e nos forçam caros contratos.


As operadoras de telefonia costumavam exercer um controle bastante semelhante a um monopólio, exatamente porque detinham as redes pelas quais as chamadas deviam passar. Agora, a tecnologia de voz sobre IP (VoIP) vem soprando nova vida a uma indústria estagnada. Novas operadoras de serviços VoIP oferecem todos os tipos de chamadas baratas (ou até gratuitas) por pequenas taxas mensais, usando sua conexão à Internet como meio de transmissão para as chamadas. Elas se encarregam de conectar as chamadas entre os usuários de VoIP e os do velho serviço tradicional de telefonia.


Muitas dessas operadoras oferecem serviços atraentes que valem a pena ser considerados, principalmente se quisermos apenas começar a usar VoIP rapidamente. Mas é possível ir um passo adiante: pode-se realizar toda a operação do telefone sozinho, de forma barata e relativamente fácil, graças ao poder do software de Código Aberto Asterisk[1].


O que é o Asterisk?


O Asterisk é um servidor PBX completo de Código Aberto. Ele foi desenvolvido pela Digium[2] — fabricantes de hardwares para soluções de VoIP. Pense nas caras caixas beges que ficam numa sala em algum lugar de seu escritório, emitindo seus zumbidos e gerenciando todos os telefones sobre as mesas. O Asterisk pode fazer a mesma coisa usando PCs comuns e uma rede TCP/IP, e muitas vezes a solução com Asterisk custa muito menos que a instalação de um complexo sistema de telefonia para o escritório. O Asterisk é utilizado por muitas empresas conhecidas, como uma ferramenta de telefonia de nível corporativo, e muitos usuários domésticos também a usam como um gateway de chamadas de baixo custo para ligar para seus amigos. O servidor Asterisk é suficientemente flexível para uma ampla variedade de usos.


Neste artigo, descreveremos como configurar um serviço de VoIP barato com o Asterisk para um escritório doméstico ou uma pequena empresa. Neste ambiente, uma variedade de extensões do Asterisk (tais como handsets físicos ou softphones VoIP rodando em computadores e PDAs) conectam-se a um servidor Asterisk que se responsabiliza por fazer a ponte das ligações para outras extensões, além de oferecer uma caixa postal de voz e repassar chamadas em caso de telefones ou funcionários não disponíveis. Usaremos um serviço comercial de gateway VoIP para mantermos um número normal de telefone e recebermos ligações de telefones comuns, mas também é possível instalar seu próprio hardware para lidar com a mesma tarefa. Veja os sites do Asterisk[1] e da Digium[2] para mais informações a respeito de hardware para VoIP.


Instalação do Asterisk


Fundamentalmente, o Asterisk é apenas um pacote de software, como qualquer outro aplicativo de um sistema Linux. Então, é possível instalá-lo em qualquer sistema Linux (e também em outros sistemas operacionais) através de um pacote ou compilando seu código-fonte.


A compilação do Asterisk não é trivial, mas talvez seja necessário utilizá-la no caso de se decidir usar alguns dos recursos mais avançados. Um aspecto desejável é um computador com suficientes recursos de hardware: algo com quantidades satisfatórias de memória para não se gastar o dia inteiro fazendo swap para o disco e estragando a qualidade da ligação com ruídos e cliques.


O sistema de exemplo descrito neste artigo inclui:



  • Duas máquinas virtuais (Xen) oferecidas por empresas especializadas em máquinas virtuais, cada uma com 128 MB de memória, rodando Ubuntu Linux.

  • Asterisk versão 1.2 ou mais recente (a 1.4 é a mais recente na escrita deste artigo).

  • Duas operadoras de gateways telefônicos — uma no Reino Unido e outra nos EUA — interligando chamadas feitas para telefones comuns nos dois países.

  • Vários telefones físicos, conectados a ATAs (Adaptadores de Telefones Analógicos).

  • Vários softphones rodando no Linux em laptops, desktops, PDAs etc.


Para evitar a obrigação de hospedar qualquer equipamento envolvido na execução do serviço, pode-se usar máquinas virtuais Xen — elas simplesmente existem numa máquina em algum local e são gerenciadas remotamente — mas também é possível pular essa etapa e instalar o Asterisk num servidor Linux doméstico.


A instalação do Asterisk costuma ser uma simples questão de digitar um comando como apt-get install asterisk ou outro, dependendo da distribuição usada no servidor. Se for interessante instalar também vozes e mensagens diferentes para reproduzir, pode-se instalar também alguns dos pacotes de sons do Asterisk.



Figura 1 Operadoras de gateways SIP como a Sipgate oferecem acesso à rede de telefonia convencional.


Configuração


Assim como qualquer outro software servidor no Linux, o Asterisk guarda seus arquivos de configuração num diretório sob /etc/, normalmente em /etc/asterisk/. Uma instalação típica inclui vários arquivos de configuração padrão, sendo os seguintes os mais importantes para se começar:



  • asterisk.conf

  • extensions.conf

  • sip.conf

  • voicemail.conf


O arquivo asterisk.conf simplesmente define uma gama de outros arquivos de configuração, e geralmente pode ser deixado com as entradas que vêm por padrão. Provavelmente será necessário personalizar o arquivo sip.conf primeiro, para definir os telefones físicos e softphones disponíveis em sua rede. O arquivo é dividido em duas partes: a primeira é uma seção de configurações gerais, que pode ser deixada com quase todas as entradas nos valores padrão, e a segunda é composta por entradas de telefones individuais para cada aparelho. O exemplo 1 mostra uma seção de definição de telefone.


As entradas do exemplo 1 definem dois telefones, chamados fulano e sicrano, que usam a senha SENHA (obviamente seria melhor usar uma senha de verdade no lugar dessa) para se conectar ao servidor Asterisk. A entrada host informa ao Asterisk que o telefone pode estar se conectando a partir de vários endereços diferentes em vez de um único endereço IP específico. A entrada context informa que esse telefone é interno (internal) — um contexto padrão definido no arquivo extensions.conf. Marcar o telefone como amigo permite que ele origine e receba ligações, o que geralmente significa que o Asterisk tentará acreditar que ele não enlouquecerá.


Antes de se fazer ligações para algum dos dois telefones, é necessário acrescentar extensões no arquivo extensions.conf. Dentro da seção internal do arquivo, pode-se acrescentar linhas como:


[internal] ... exten => 1001,1,Dial(SIP/fulano) exten => 1002,1,Dial(SIP/sicrano) ...


Essas regras dizem ao Asterisk que a primeira ação a tomar ao se discar 1001 ou 1002 é chamar o aparelho apropriado, definido no arquivo sip.conf. É possível especificar conjuntos de regras muito mais complexos, mas agora o que queremos é configurar dois softphones, telefones IP, ATAs ou outros dispositivos SIP distingos para conectá-los ao servidor Asterisk e conseguir ligar para cada telefone a partir da outra extensão.


Uso de um gateway SIP


Depois de se criar uma configuração básica do Asterisk, será interessante configurar um gateway para falar com usuários das velhas redes telefônicas de antigamente. Para isso, pode-se instalar outras linhas de telefone e acrescentar placas adaptadoras especializadas a sua máquina. Porém, nesse ponto, provavelmente será mais fácil assinar alguma das várias operadoras de gateways SIP de baixo custo já disponíveis no Brasil.


A operadora fornecerá um número de telefone que as ligações de fora usarão para chegar até seu servidor. Esse serviço também permite que se faça ligações para o sistema de telefonia convencional.


Para utilizar um gateway SIP externo, é necessário registrar nele quando seu servidor Asterisk for iniciado. Algumas operadoras já informam as melhores configurações para se usar especificamente com servidores Asterisk — já que ele está se tornando muito mais difundido — mas a configuração da seção [general] do arquivo sip.conf será parecida com:


[general] register =>meuusuario: minhasenha@sip.operadora.com.br/ 551140821300


Isso informa o Asterisk que ele deve tentar se registrar com a operadora SIP com a extensão 551140821300, que será o número de recebimento e o telefone mostrado como ID para quem receber ligações do seu servidor. Além de registrar com a operadora, também é necessário acrescentar uma entrada normal para a operadora SIP no arquivo sip.conf:


[operadora1] type=friend username=meuusuario secret=minhasenha host=sip.operadora1.com.br fromdomain=operadora1.com.br nat=yes context=recebidas1 insecure=very


Note que o contexto (context) desse "dispositivo" está configurado para recebidas1. Essa configuração corresponde a uma seção especial no arquivo extensions.conf que lida com chamadas recebidas, como mostra o exemplo 2.


Note também que esse conjunto de regras é um pouco mais complexo, com mais comandos para primeiro tentar discar para uma extensão, depois cair em VoiceMail() se isso não funcionar.


Correio de voz


O correio de voz é uma funcionalidade bem fácil de configurar no Asterisk. É necessário apenas adicionar uma entrada ao arquivo voicemail.conf, como mostram as linhas a seguir:


1001 => 1234,Pinguim Tux,tux@linuxmagazine.com.br


Isso configura o correio de voz para a extensão 1001 (lembre-se de que isso foi passado nas regras anteriores com o comando VoiceMail() no exemplo 2), com senha 1234, pertencendo ao usuário Pinguim Tux no email fornecido. Por padrão, quando um endereço de email é informado, o Asterisk automaticamente converte a mensagem de voz e a envia para esse email — junto com uma mensagem que informa quem originou a chamada, a duração da mesma e várias outras informaçõees configuráveis.


Para permitir o acesso fácil ao correio de voz, pode-se acrescentar uma extensão que permite que se ligue para ele. No arquivo extensions.conf, basta acrescentar as seguintes informações à seção [internal]:


[internal]


exten => 121,1,VoiceMailMain(1001) exten => 121,2,HangUP()


Agora, quem ligar de um dos telefones configurados no Asterisk para a extensão 121 será levado ao menu pessoal do correio de voz, assim que a senha for informada — caso tenha sido especificada uma senha para essa caixa de correio de voz específica.


Se o servidor Asterisk for compartilhado com outros usuários, pode-se eliminar o número da extensão da entrada VoiceMailMain(), e então o Asterisk pedirá o número da extensão no momento da verificação do correio de voz.


Conclusão


Neste artigo foram descritas algumas etapas simples e rápidas para se familiarizar com a configuração e o uso do servidor de chamadas telefônicas Asterisk. Como um PBX completo, o Asterisk possui vários recursos e é capaz de oferecer várias funções muito mais avançadas, não cobertas neste artigo. Felizmente há diversos bons livros disponíveis sobre o assunto, assim como tutoriais de Asterisk e comunidades online dispostas a auxiliar novos usuários a ir além do básico.


Mais informações


[1] Asterisk: http://www.asterisk.org/
[2] Digium: http://www.digium.com/




Quadro 1: VoIP e SIP


VoIP é uma família de diferentes padrões de telecomunicações para codificação e roteamento de chamadas de voz através da Internet, em vez de roteá-las por uma rede de telefonia convencional. Vários esforços históricos de padronização hoje foram substituídos pelo Protocolo de Início de Sessão (SIP). o SIP não é um padrão de condificação para converter a voz humana para datagramas IP. Em vez disso, ele é um protocolo de sessão que lida com o roteamento, conexão, transferência e encaminhamento de chamadas. O SIP, que é usado por softwares como o Asterisk, assim como por várias outras operadoras e gateways de VoIP, está se tornando rapidamente um padrão de facto para a comunicação por VoIP.





Quadro 2: ATAs, softphones e uma nova nomenclatura


Um aspecto que se descobre rapidamente a respeito de serviços de VoIP é que ele vem com uma nova nomenclatura a ser aprendida. Há termos que, assim como outros que encontramos na vida, parecem feitos para os não-iniciados parecerem idiotas até que aprendam a usá-los em conversas cotidianas. O termo ATA, por exemplo, é muito usado. Um adaptador de telefone analógico geralmente é uma pequena caixa com um par de conectores atrás. O ATA se conecta à sua rede e permite que qualquer telefone convencional seja ligado ao servidor Asterisk.


Obter um ATA de baixo custo (até R$250), como o PAP-2NA da Linksys, por exemplo, é altamente recomendado. Note que várias dessas unidades são vendidas pré-configuradas para usar serviços comerciais, e é por isso mesmo que se deve comprar as unidades não configuradas — que talvez custem um pouco mais —, como a versão NA do Linksys PAP-2.


Também se pode usar um softphone, como o Linux Sparkle, o Linphone ou o proprietário, porém gratuito, X-Lite. Este último possui alguns recursos ainda não implementados nos clientes Linux livres — por exemplo, chamadas em conferência e múltiplas "linhas", permitindo diversas chamadas simultâneas.


A preferência por usar um softphone ou investir em um ATA geralmente depende da freqüência de uso do serviço. Se o objetivo for substituir seu telefone principal por uma extensão do Asterisk, fique com o ATA.



Exemplo 1: Definições de telefone em sip.conf


01 [fulano]
02 type=friend
03 secret=SENHA
04 host=dynamic
05 context=internal
06 auth=md5
07 nat=yes
08 reinvite=no
09 canreinvite=no
10 ;qualify=yes
11
12 [sicrano]
13 type=friend
14 secret=SENHA
15 host=dynamic
16 context=internal
17 auth=md5
18 nat=yes
19 reinvite=no
20 canreinvite=no
21 ;qualify=yes
 


Exemplo 2: Recebimento de chamadas


01 [operadora1]
02
03 exten => _551140821300,1,Answer()
04 exten => _551140821300,2,Dial(fulano)
05 exten => _551140821300,3,VoiceMail(u1001)
06 exten => _551140821300,4,HangUp()

Jon Masters é desenvolvedor Linux para dispositivos embarcados, escritor e consultor. Ele se envolve ativamente com a comunidade Linux desde os 13 anos de idade.

Notícias

4Linux abre vagas para Líder Técnico em São Paulo e Brasília

Publicado em: 25/07/2017 às 14:12 | leituras |

A 4Linux — uma empresa líder em soluções Open Source e em práticas DevOps — está procurando profissionais para trabalhar como gerente técnico, que tenha bons conhecimentos em Linux e Softwares Livres. São duas vagas: uma para trabalhar em Brasília e outra para São Paulo.

Seminário sobre gestão de privilégios do Linux dá direito a certificado CPE

Publicado em: 23/05/2017 às 10:35 | leituras |

O evento irá abordar a forte disseminação de sistemas Linux em toda a estrutura de informação e mostrará a importância de técnicos da área serem capazes de identificar rotas, especificar controles de acesso para usuários Linux e monitorar a atividade privilegiada do usuário ao longo da rede de informação e, especialmente, na complexidade da nuvem. Participantes poderão requerer gratuitamente os créditos de CPE (Continuing Professional Education).

Novas vagas para os minicursos do WikiLab

Publicado em: 16/05/2017 às 11:59 | leituras |

Novas vagas abertas para os minicursos do WikiLab. Todos que já apoiaram ou apoiarem o projeto WikiLab no Catarse (com qualquer valor) podem participar.

Novo evento "Universidade Livre" será realizado em Belém/PA em 06/05/2017

Publicado em: 28/04/2017 às 11:19 | leituras |

Novo evento sobre Software Livre será realizado no Instituto de Estudos Superiores da Amazônia (IESAM).

Soluti Certificação Digital em busca de especialista Linux

Publicado em: 19/04/2017 às 17:18 | leituras |

A Soluti Certificação Digital está em busca de um profissional para atuar como especialista Linux em Goiânia.


Mais notícias

lançamento!

LM 119 | Backup e Restauração




Impressa esgotada
Comprar Digital  R$ 10,90 Digital

  1. Baixe o curso de shell script do Julio Cezar Neves

    Publicado em 07/04/2008 às 19:41 | 433790 leituras

  1. Soluti Certificação Digital em busca de especialista Linux

    Publicado em 19/04/2017 às 17:18 | 309785 leituras

  1. Seminário sobre gestão de privilégios do Linux dá direito a certificado CPE

    Publicado em 23/05/2017 às 10:35 | 225078 leituras

  1. Resultado do concurso "Por que eu mereço ganhar um netbook?"

    Publicado em 30/09/2009 às 3:00 | 184942 leituras

  1. Software público brasileiro na Linux Magazine Especial

    Publicado em 29/07/2011 às 15:07 | 163312 leituras

  1. Bug no Skype para Android abre caminho para invadir dispositivos

    Publicado em 08/07/2013 às 17:02 | 11580 leituras

  1. Twitter armazena dados em formato desenvolvido pela Google

    Publicado em 15/10/2010 às 10:22 | 7203 leituras

  1. Palm cancela parceria de três anos com a Microsoft – em favor do Linux

    Publicado em 20/09/2009 às 20:38 | 9383 leituras

  1. Dropbox enfrenta problemas e apaga arquivos de internautas

    Publicado em 15/10/2014 às 16:35 | 6875 leituras

  1. 15 empregos que terão maior aumento de salário em 2015

    Publicado em 06/01/2015 às 11:13 | 8222 leituras

whitepapers

mais whitepapers