Como configurar seu servidor
de VoIP com Asterisk
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 a taxa de US$ 6 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.
O que é o Asterisk?
O Asterisk é um servidor PBX completo de código aberto.
Ele foi desenvolvido pela Digium — fabricante 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. Nesse 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.
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:
o Duas máquinas virtuais ( Xen) oferecidas por
empresas especializadas em máquinas virtuais, cada uma
com 128 MB de memória, rodando Ubuntu Linux.
o Asterisk versão 1.2 ou mais recente (a 1.4 é a
mais recente na escrita deste artigo).
o Duas operadoras de gateways telefônicos —
uma no Reino Unido e outra nos EUA —, interligando
chamadas feitas para telefones comuns nos dois países.
o Vários telefones físicos, conectados
a ATAs (Adaptadores de Telefones Analógicos).
o 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
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:
o asterisk.conf
o extensions.conf
o sip.conf
o 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 distintos 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 à 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:
[email protected]/ 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, é 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,[email protected]
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 e-
mail fornecido. Por padrão, quando um endereço de e-mail
é informado, o Asterisk automaticamente converte a
mensagem de voz e a envia para esse e-mail — 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.
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 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 eles vêm 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 frequê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()