DevSecOps

17 abr, 2012

Criando um Asterisk+FreePBX com Vono na Amazon

Publicidade

Asterisk é incontestavelmente a plataforma de IP-PBX open source mais conhecida atualmente e é a mais usada por qualquer um que queira ter seu próprio PABX IP. Além de ser possível configurá-lo na maioria das distros Linux disponíveis, atualmente há a opção de baixar distros específicas para configuração de appliances Asterisk, como o FreePBX, o AsteriskNow, o Elastix, o MeucciBE, o Trixbox, entre outras – são conhecidas como distros Linux Embedded.

O “padrão” é configurar o Asterisk numa  máquina x86 ou x64 – para aplicações mais robustas, é comum escolher processadores mais fortes com quatro ou mais núcleos e placas DSP com um avançado processamento de áudio para a interface com a rede de telefonia pública (PSTN), e o custo do hardware é influenciado pela quantidade de usuários que se quer atender e – uma placa E1 de boa qualidade custa cerca de U$1.200,00!

 E se você não tiver dinheiro para montar um servidor desses?

Amazon tem AMIs (instâncias de máquinas virtuais) prontas para serem instaladas com o que você quiser – até mesmo Asterisk! E não é necessário um link E1 quando operadoras VoIP, como a Vono, oferecem linhas IP totalmente compatíveis com SIP pra integrar no seu novo PABX IP. Um PABX IP na Amazon significa menor TCO, maior disponibilidade, escalabilidade a poucos cliques de mouse (integrando várias instâncias de Asterisk para o PABX IP crescer com a sua operação) e uma capacidade de manobra sem paralelos (o transbordo das ligações pode ser facilmente remanejado para outras localidades, no caso de um call center virtual, por exemplo).

Para fazer isso, são necessárias duas coisas: uma conta na Vono (para ter seu número de telefone VoIP) e uma conta na Amazon. Uma vez feito isso – e os seus dados de cobrança forem confirmados -, vamos ao que interessa…

Lançando uma AMI com Asterisk+FreePBX

Na sua console de administração da Amazon, lance uma instância EC2 usando a imagem ami-e8c22581 da Voxilla (é um CentOS com Asterisk 1.6.0.5 e GUI FreePBX prontos para uso). Não recomendo o uso de um Linux padrão (Ubuntu, Debian ou mesmo o próprio CentOS), porque, sendo ela uma máquina virtual, não existe o hardware DSP necessário para o processamento de áudio de ligações. Isso faz com que o Asterisk emule um dispositivo virtual (dahdi) e aumente o load da CPU, causando perda de qualidade de áudio (e isso não é desejável). Para contornar esse problema, o kernel dessa instância foi recompilado especificamente para o Asterisk e evitar essas perdas.

Nota: se preferir uma versão do Asterisk 1.6.0.5 sem GUI – “puro”, sem o FreePBX – use a imagem ami-0bfa1d62.

Você pode escolher dois tamanhos para essa instância: micro (para um escritório, por exemplo) ou large (mais cara, mas com CPU elástica e capacidade para mais usuários). Dê um nome para a instância e crie um Key pair (para acesso via SSH) exclusivo para o Asterisk (isso minimiza problemas de segurança no ambiente). Em seguida, crie o Security Group para o Asterisk (por exemplo, chamado “voip” – isso isola as portas usadas somente pelo Asterisk, e mantém os outros servidores em um Security Group apartado, evitando brechas de segurança).

A configuração do Security Group para que o Asterisk funcione com o Vono é:

ICMP - ALL - 0.0.0.0/0
TCP 22 - 0.0.0.0/0
TCP 80 - 0.0.0.0/0
TCP 443 - 0.0.0.0/0
TCP 2543 - 0.0.0.0/0
TCP 5038 - 0.0.0.0/0
TCP 5060 - 0.0.0.0/0
TCP 8088 - 0.0.0.0/0
TCP 10000 - 0.0.0.0/0
UDP 5 - 0.0.0.0/0
UDP 53 - 0.0.0.0/0
UDP 1234 - 0.0.0.0/0
UDP 1571 - 0.0.0.0/0
UDP 5060 - 0.0.0.0/0
UDP 8000-64000 - 0.0.0.0/0

Depois de criar a instância e lançá-la, crie um Elastic IP (endereço IP público) para o servidor de PABX IP – assim, será possível acessá-lo via browser, para configurar o FreePBX). Atribua o Elastic IP à instância e em seguida vamos configurar o Asterisk.

Recomendo que crie um volume extra na console da Amazon, e aponte o diretório do Asterisk para lá (configurando via SSH). Assim, as gravações ficam salvas numa storage separada do resto e o retrieval negrito das ligações gravadas pode ser feito com agilidade.

Configurando o Vono

Agora acesse o FreePBX pelo IP que foi configurado – use este endereço e clique no link da console de administração do FreePBX. Agora, podemos configurar o Vono, e o primeiro passo é configurar um Trunk, no qual o número Vono será usado para receber e fazer ligações através do Asterisk. Clique em Trunks e em seguida Add SIP trunk. Os parâmetros são:

  • Outbound Caller ID: em branco;
  • Never Override Caller ID: desmarcado;
  • Maximum Channels: você define quantas ligações ativas quer aqui – se deixar em branco, não terá limite de ligações ativas simultaneamente, e se colocar um, só terá uma ligação de cada vez;
  • Disable Trunk: desmarcado;
  • Monitor Trunk Failures: em branco;
  • Dial Rules: digite apenas um ponto final (“.” sem aspas);
  • Dial Rules Wizard: manter “(pick one)”;
  • Outbound Dial Prefix: é o prefixo usado para autorizar ligações externas, deixe em branco se preferir (ou então “0” sem as aspas se desejar que, para fazer uma ligação externa, seja necessário digitar o zero);
  • Trunk Name: o nome do trunk – por exemplo “Vono” sem aspas);
  • PEER Details: são as configurações para que o Vono funcione:
username=seu-usuario-vono
type=peer
secret=sua-senha-vono
qualify=no
port=5060
nat=no
insecure=very
host=vono.net.br
fromuser= seu-usuario-vono
fromdomain=vono.net.br
dtmfmode=rfc2833
domain=vono.net.br
disallow=all
allow=ilbc&gsm&alaw&ulaw
context=from-vono
canreinvite=no
  •  User Context: em branco;
  • User Details: em branco;
  • Register String: é onde o Asterisk vai se autenticar na Vono (como um soft-phone):seu-usuario-vono:sua-senha-vono@vono.net.br:5060/seu-usuario-vono

Salve as configurações. Em seguida, entre via SSH no Asterisk e edite o arquivo /etc/asterisk/extensions_custom.conf colando o código a seguir:

[from-vono] 
exten => _.,1,Set(NUMENTRADA=${SIP_HEADER(X-Vono-DDR)})
exten => _.,n,GotoIf($["${NUMENTRADA}" = ""]?nop)
exten => _.,n,Goto(from-trunk,${NUMENTRADA},1)
exten => _.,n(nop),Goto(from-trunk,${EXTEN},1)

Salve as configurações e, de volta ao FreePBX, crie uma Inbound Route para o Vono e receba, assim, ligações externas. Faça essa rota de acordo com sua preferência – um Ring Group, um DDR, ou uma fila (previamente criados). E está pronto seu PABX IP com Vono na Amazon!

Conclusão

O investimento em uma central de PABX – e até mesmo em um servidor Asterisk – pode estar com os dias contados. Uma solução de PABX IP “na nuvem” permite uma série de possibilidades, como a portabilidade de ramais em dispositivos móveis (laptops, tablets e smartphones) e viabiliza uma plataforma de Home Office. E sem quebrar a cabeça.