Redes - VoIP Asterisk

17.090 visualizações

Publicada em

0 comentários
5 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
17.090
No SlideShare
0
A partir de incorporações
0
Número de incorporações
46
Ações
Compartilhamentos
0
Downloads
642
Comentários
0
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Redes - VoIP Asterisk

  1. 1. 1 VoIP - Asterisk Luiz Arthur fim    
  2. 2. 2 VoIP - Asterisk Luiz Arthur Asterisk é um software VoIP (Voz sobre Internet Protocol) opensource de licença GPL que pode transformar um simples computador em um poderoso e completo PBX (Private Branch eXchange) criado pela Digium Inc. O Asterisk pode ser executado em plataformas UNIX-Like tal como Linux e sistemas BSD, o Asterisk também foi projetado para facilitar a adição de qualquer componente de telefonia, seja hardware ou software, permitindo que os usuários da rede modele seus sistemas telefônicos da forma que preferir. O Asterisk está no meio de uma grande revolução, pois ele esta tratando de uma área da tecnologia que esteve parada no tempo que é a industria de Sistemas de Ramais Privados (PBX). Os principais fabricantes de telecomunicação ainda montam sistemas de PBX caros e incompatíveis entre si, com operações complicadas, códigos obsoletos sobre hardware e engenharia ultrapassados. Como exemplo, o Gerenciador de Telecomunicação Empresarial da Nortel mistura um servidor Windows NT 4.0, um Telefone Chaveado de teclas baseado em VXWorks de 15 anos atrás e um PC de 700 Mhz e tudo isto pode ser adquirido por algo em torno de 5 a 15 mil dólares, não incluindo   telefones.  
  3. 3. 3 VoIP - Asterisk Luiz Arthur Todos os principais fabricantes de telecomunicações oferecem produtos similares e eles geralmente não querem que você tenha flexibilidade ou opção; eles querem que você fique restrito a seus ciclos de produtos. Mas o Asterisk tenta mudar tudo isto, o Asterisk tenta proporcionar liberdade ao sistema telefônico, permitindo que você configure o sistemas ao seu gosto. Naturalmente que esta flexibilidade tem um preço: o Asterisk pode tornar-se difícil de configurar devido as tantas possibilidades de configuração, é claro que isto pode ser visto como um ponto negativo ou positivo. Mas uma coisa é certa o Asterisk coloca em cheque os altos custos das centrais telefônicas convencionais, além de proporcionar conectividade com das redes VoIP com as tradicionais PSTN (Public Switched Telephone Network). As principais vantagens do Asterisk são a redução de custos, já que possibilita o uso de VoIP que normalmente se mostra mais em conta do que chamadas DDD e DDI das redes PSTN. Deve ser considerada também a economia indireta quando falamos do agregado de funções que o Asterisk proporciona, tais funções se fossem incorporadas a um PBX tradicionais representariam custos exorbitantes.    
  4. 4. 4 VoIP - Asterisk Luiz Arthur A autonomia para controle do sistema de telefonia também deve ter grande destaque como vantagem pois agora não existe mais a dependência de um técnico de uma central telefônica proprietária, e as novas funcionalidades, mudanças e novos desenvolvimentos podem ser implementados por qualquer conhecedor da arquitetura VoIP. O plano de discagem flexível poderoso também é um destaque pois possibilitam por exemplo controle de rota das chamadas. Por fim, o Asterisk pode ser utilizado em diversas aplicações, citando apenas algumas funcionalidades, podemos ver: ● Conectar empregados trabalhando em casa ao PABX da empresa (HomeOffice); ● Conectar escritórios em localidades, até mesmos estados diferentes via Internet; ● Correio de voz integrado ao e-mail/webmail; ● Construir aplicações de resposta automática por voz, que podem conectar o usuário a um sistema de pedidos por exemplo, ou outras aplicações internas; ● Das acesso ao PABX da empresa para usuários em viagem, conectando por exemplo, a partir de um hotel ou aeroporto; ● Registro de chamadas para integração com sistema de tarifação;   ● Integração com reconhecimento de voz;   ● Música em espera para clientes aguardando na fila com suporte a MP3;
  5. 5. 5 VoIP - Asterisk Luiz Arthur Arquitetura do Asterisk O Asterisk foi desenvolvido para ter o máximo de flexibilidade, assim o Asterisk fica transparente a protocolos, CODECs e hardwares, podendo ser compatível com qualquer tecnologia existente ou que venha a ser lançada, sem que sejam necessárias mudança no núcleo do Asterisk. Desta forma o Asterisk trabalha de forma modular, e carregar os módulos separadamente permite maior flexibilidade ao administrador, permitindo que ele escolha a melhor e mais enxuta configuração que o atenda. A arquitetura do Asterisk é baseada em 4 pontos principais: ● Canais – Um canal pode ser interpretado como uma conexão que “traz” uma chamada ao Asterisk PABX. Um canal pode ser uma conexão a um telefone analógico tradicional, ou a uma linha PSTN, ou uma chamada lógica, como uma chamada via Internet. Toda chamada é originada ou recebida em um canal distinto. Alguns tipos de canais suportados pelo Asterisk são SIP, H.323, IAX, PSTN, ISDN, etc. Então um canal é equivalente à linha telefônica do sistema telefônico tradicional;    
  6. 6. 6 VoIP - Asterisk Luiz Arthur ● Codecs – São responsáveis por converter a voz em sinais digitais por exemplo. Os codecs influenciam na quantidade de chamadas que podem ser colocadas em um mesmo link, isso pode ser feito codificando- se a voz em uma forma que ocupe menor banda. O tráfego de voz em redes PSTN ocupa uma banda de 64 Kbps. Aplicando-se codecs como o G.711 para o tráfego da voz em redes IP alcançamos a mesma banda (64Kbps). Porém, codecs como o GSM conseguem reduzir essa banda para aproximadamente 13 Kbps e o G.729 consegue compressão de 8Kbps, então o Asterisk suporta vários tipos de codificação de voz. ● Protocolos – São responsáveis por definir a forma/linguagem como os pontos de comunicação (terminais, gateways, etc) vão negociar entre si. São responsáveis por tarefas como sinalização para estabelecer conexão, determinar ponto de destino, roteamento entre pontos, e também questões de sinalização de telefonia como campainha, identificados de chamada, desconexão, etc. Os protocolos mais utilizados são o H.323 e o SIP, mas no âmbito do Asterisk seu protocolo IAX também tem tido grande difusão. ● Aplicações – São as funcionalidades encontradas no Asterisk, como voicemail, distribuidor automático de chamadas e fila de atendimento (Call-Centers), servidor de música de espera, discador automático   (telemarketing), sala de conferência, Media Gateway (VoIP/PSTN),   unidade de resposta automática, etc.
  7. 7. 7 VoIP - Asterisk Luiz Arthur Plano de Discagem Outro ponto importante do Asterisk é o Plano de discagem, este é considerado o coração ou melhor o cérebro que define como o Asterisk irá gerenciar as chamadas. Consiste de uma lista de instruções ou passos que o Asterisk deve seguir. Essas instruções são disparadas a partir dos dígitos recebidos de um canal ou aplicação. É fundamental para configurar o Asterisk, que se entenda o plano de discagem. Nós iremos no aprofundar neste assunto mais para frente no texto. Hardware de Telefonia Bem o Asterisk só exige hardware específico se você quiser interligar sua rede VoIP com outro tipo de rede (PSTN, ISDN, etc). O Asterisk suporta inúmeros tipos de hardware de telefonia, de inúmeros fabricantes, mas principalmente o hardware fabricado pela Digium. Alguns hardwares suportados são: Wildcard TE411P, Wildcard TE410P, Wildcard TE406P, Wildcard TE405P, Wildcard TDM400P S100I (IAXy), , Generic X100P, OpenLine4, OpenSwitch6/12, etc.    
  8. 8. 8 VoIP - Asterisk Luiz Arthur Vamos ver agora apenas dois exemplos de hardware Asterisk: ● Placa XP100P - Esta placa é uma das mais simples com uma porta FXO – Foreign eXchange Office, que pode ser ligada à rede pública ou a uma interface de ramal de PBX. Uma placa faz/modem com chipset Intel 537 ou MD3200 pode ser usada como uma XP100P .    
  9. 9. 9 VoIP - Asterisk Luiz Arthur ● Placa TDM400P – Esta placa analógica pode conter até quatro canais. Os canais podem ser FXO (pode ser ligado à rede pública ou ramal de um PBX) ou FXS – Foreign eXchange Station (pode ser ligado a um assinante, como um telefone analógico) dependendo da configuração escolhida. Então nós utilizamos linhas FXS para ligar os terminais (aparelhos telefônicos comuns) e os FXO para ligar as linhas telefônicas que possibilitará o acesso a redes PSTN.    
  10. 10. 10 VoIP - Asterisk Luiz Arthur Instalação do Asterisk O Asterisk faz uso intensivo de CPU, tal como qualquer aplicação em tempo real, isso se deve em grande parte, à sua necessidade de acesso prioritário aos barramentos do processador e do sistema. Em sistemas menores o hardware normalmente não é um problema, entretanto em sistemas de grande capacidade, o hardware deve ser muito bem estudado para não causar falhas de desempenho, manifestadas por problemas na qualidade de áudio para os usuários, muitas vezes na forma de ecos e coisas do tipo. A seguir é mostrado uma lista com orientações básicas que devem ser observadas na construção do PBX Asterisk quanto ao hardware: ● Sistemas com não mais do que 5 canais é recomendado no mínimo um computador de 400Mhz x86 com 256 MB de memória RAM; ● Para sistemas com até 10 canais é recomendado no mínimo um computador de 1GHz x86 com 512 MB de memória RAM; ● Ambientes com até 15 canais, neste tipo de ambiente o mínimo recomendável é um computador com 3GHz x86 e 1 GB de memória RAM;   ● Já para ambientes grandes com mais   de 15 canais é altamente recomendável o uso de CPUs duplas e possivelmente múltiplos servidores em arquitetura distribuída.
  11. 11. 11 VoIP - Asterisk Luiz Arthur Quando ao uso de disco rígido o Asterisk não utiliza muito espaço em memórias secundárias, requerendo em média 100 MB para o programa compilado, mas a inserção de código fonte, voicemail, etc, requer mais espaço de acordo com a quantidade de usuários. Quanto ao uso de placas específicas, estas só são necessárias caso haja necessidade de intercomunicação com outros tipos de redes que não as redes IP. O processo de instalação do software Asterisk, esta se dá em qualquer sistema Linux, mas pode ser feita também em sistemas BSD e MAC OS X. O Asterisk utiliza três pacotes principais: o programa principal Asterisk (asterisk), os drivers de telefonia Zapata (zaptel) e as bibliotecas PRI (libpri). Se você planeja uma rede VoIP pura, o único requisito real é o pacote asterik. Os drivers zaptel são necessários se você estiver utilizando hardware digital ou analógico, ou se você estiver usando o driver ztdummy como interface de temporização.    
  12. 12. 12 VoIP - Asterisk Luiz Arthur A biblioteca libpri é tecnicamente opcional, a não ser que você esteja utilizando interfaces ISDN PRI. Você poderá economizar uma pequena quantidade de RAM se não a carregar, mas é recomendado que a libpri seja instalada juntamente com o pacote zaptel para completá-la. Outro pacote que você pode querer instalar é o asterik-sounds. Embora o Asterisk venha com muitos sons gravados na distribuição fonte principal, o pacote asterisk-sounds irá dar a você um pouco mais. O código fonte do Asterisk pode ser obtido no servidor Digium FTP, localizado em ftp://ftp.digium.com. Entre no FTP e baixe as ultimas versões do asterisk, zaptel e libpri. Exemplo: asterisk-1.4.9.tar.gz libpri-1.4.1.tar.gz zaptel-1.4.4.tar.gz Nós iremos fazer uso do diretório /usr/src para extrair e compilar o fonte do Asterisk.    
  13. 13. 13 VoIP - Asterisk Luiz Arthur Os comandos a seguir irão extrair os pacotes Asterisk no diretório /usr/src: # tar vzxf asterisk-1.4.9.tar.gz -C /usr/src/ # tar vzxf libpri-1.4.1.tar.gz -C /usr/src/ # tar vzxf zaptel-1.4.4.tar.gz -C /usr/src/ Compilação da libpri A libpri é utilizada por vários fabricantes do hardware Multiplexação por Divisão de Tempo (TDM), mas mesmo que você não tenha esse hardware instalado, é seguro compilar e instalar esta biblioteca. Você deve compilar e instalar a libpri antes do Asterisk, já que ela vai ser detectada e usada quando o Asterisk for compilado. Segue os passos para compilar o libpri: # cd /usr/src/libpri-1.4.1/ # make # make install    
  14. 14. 14 VoIP - Asterisk Luiz Arthur Compilação do zaptel A interface zaptel é um módulo de núcleo carregável que apresenta uma camada de abstração enter os drivers de hardware e o módulo Zapata no Asterisk. É esse conceito que permite que os drivers do dispositivo sejam modificados sem que sejam feitas alterações à própria fonte do Asterisk. Os drivers de dispositivo são utilizados para comunicar com o hardware diretamente e para passar informações entre o Zaptel e o hardware. Várias opções podem ser passadas na compilação do zaptel, mas aqui iremos fazer uma compilação simples, como segue: # cd /usr/src/zaptel-1.4.4/ # ./configure # make # make install    
  15. 15. 15 VoIP - Asterisk Luiz Arthur Compilação do Asterisk Assim que você tiver compilado os pacotes zaptel e libpri (se você precisar deles) e alguns pacotes adicionais (caso você queira), pode se voltar para o Asterisk. Existem também no pacotes Asterisk inúmeras alterações que podem ser feitas já na compilação, mas aqui ficaremos apenas com a instalação padrão que se da como a seguir: # cd /usr/src/asterisk-1.4.9/ # ./configure # make # make install # make sample O comando make sample é executado para instalar os arquivos de configuração originais. Instalar esses arquivos (em vez de configurar cada arquivo manualmente) permitirá a você ter seu sistema Asterik pronto e rodando muito mais rápido. Mas tome cuidado se você estiver apenas atualizando o seu sistema Asterisk, pois este comando pode substituir os seus arquivos.    
  16. 16. 16 VoIP - Asterisk Luiz Arthur Se você quiser que o Asterisk inicie automaticamente com boot do sistema, você deve criar um script no Slackware em /etc/rc.d/. Existe um script pronto e pode ser copiado para o diretório /etc/rc.d da seguinte forma: # cp /usr/src/asterisk-1.4.9/contrib/init.d/rc.slackware.asterisk /etc/rc.d/rc.asterisk Após isto dê permissão de execução ao script com o comand chmod a +x /etc/rc.d/rc.asterik e coloque a linha /etc/rc.d/rc.asterisk start no arquivo /etc/rc.d/rc.local. Para sistemas onde os scripts de inicialização ficam em /etc/rc.d/init.d ou /etc/init.d/ o comando make config pode ser utilizado para fazer o script de forma automática. Carregando módulo Zaptel O módulo zaptel não necessita de nenhuma configuração, então basta apenas carregar o seguinte comando: # modprobe zaptel   Lembre-se isto só vai ser necessário caso o sistema tenha hardware Zapata.   Em alguns casos também é necessário carregar o módulo ztdummy.
  17. 17. 17 VoIP - Asterisk Luiz Arthur As bibliotecas libpri não precisam ser carregadas como os módulos. O Asterisk olha para as libpri na hora de compilar e se configura para utilizar as bibliotecas se elas forem encontradas. Carregando o Asterisk O Asterisk pode ser carregado de várias formas. A mais fácil delas é iniciar o Asterik executando o arquivo diretamente da interface de linha de comando do Linux. Se você criou os script você pode iniciar no Slackware o Asterik com o comando: # /etc/rc.d/rc.asterisk start Entretanto, a maneira preferida de iniciar o Asterisk é por meio do script: # safe_asterisk Uma configuração básica para testar o Asterisk A configuração do Asterisk é feita através de arquivos de configuração localizados no diretório /etc/asterisk. O formato dos arquivos é ASCII   dividido em seções com o nome da seção entre colchetes ([]). Os caracteres   de comentário são: o ponto-e-virgula e sustenido.
  18. 18. 18 VoIP - Asterisk Luiz Arthur Iremos primeiramente criar um ramal, então é necessário decidir qual tipo de protocolo que será utilizado: H.323, SIP IAX, etc. Bem iremos tomar como protocolos , de configuração o SIP e o IAX. Pois o SIP é bem simples e exige poucos recursos sendo então altamente recomendado em redes locais. Já o IAX apresenta grandes vantagens quando o ambiente VoIP é implementado dentro ambientes que utilizam NAT, ou seja, ele é altamente recomendável quando é necessário passar por várias redes, mas o IAX foi criado por uma empresa e não por uma entidade o que pode geral problemas futuros, além de não apresentar tantas funcionalidades quanto o H.323 e o SIP. Vamos então neste primeiro exemplo criar apenas ramais SIP, e depois criar alguns ramais AIX. Bem para criar ramais SIP devemos editar o arquivo /etc/asterisk/sip.conf, vá até a última linha e inclua a seguinte configuração: [200] callerid=usuario1 secret=123mudar host=dynamic type=friend context=interno [201] callerid=usuario2 secret=123mudar   host=dynamic   type=friend context=interno
  19. 19. 19 VoIP - Asterisk Luiz Arthur Bem as configurações que fizemos no arquivo sip.conf se iniciam com o número do ramal entre colchetes ([200]) neste caso primeiro ramal é o duzentos e o segundo é o duzentos e um. A opção callrid faz referencia ao nome do usuário, no ramal 200 o usuário chama-se usuario1 e para o ramal 201 o nome do usuário é usuario2. A opção secret diz respeito a senha para os respectivos usuários. O parâmetro host referencia onde o IP de determinado ramal se encontra, a opção dynamic diz que este ramal pode assumir qualquer IP de forma dinâmica. Já a opção type diz que tipo de ligações o ramal esta autorizado a fazer, sendo que a friend permite ao ramal efetuar e receber ligações. Por fim, a opção context identifica a qual classe de ramal este ramal pertence, em nosso caso usamos o contexto “interno” que será criado posteriormente no plano de discagem.    
  20. 20. 20 VoIP - Asterisk Luiz Arthur Então agora iremos criar um plano de discagem para poder chamar os ramais, isto é necessário para podermos efetuar ligações através do Asterisk. Para criarmos o plano de discagem que chamamos anteriormente de “interno”, vamos editar o arquivo /etc/asterisk/extensions.conf, indo até a última linha e adicionando o seguinte plano: [interno] exten => _2XX,1,Dial(SIP/${EXTEN}) exten => _2XX,2,Hangup() Assim como no sip.conf entre parenteses criamos um contexto chamado interno. Na linha exten => _2XX,1,Dial(SIP/${EXTEN}), estamos passando ao Asterisk para aceitar chamadas iniciadas pelo dígito 2 e que contenham mais dois dígitos (200, 201, 202, etc), e executar através da função “Dial” uma chamada para o protocolo SIP com o ramal digitado no telefone VoIP que vem contido na variável “${EXTEN}”. Após o termino da chamada, o Asterisk termina a ligação, e isto é feito através da linha exten => _2XX, 2,Hangup(). Realizados estes passos basta reiniciar o servidor Asterisk para que as novas configurações passem a valer. Isto pode ser feito através do comando:     # asterisk -rx reload
  21. 21. 21 VoIP - Asterisk Luiz Arthur Configurando um telefone VoIP Vamos agora configurar um ponto final que se comunique com o Asterisk. Bem como é impossível mostrar como configurar todos os tipos de pontos finais, nós utilizaremos um que sirva de exemplo sobre qual é a configuração básica de um ponto final. Nós utilizaremos o cliente da X-ten, o X-lite, que pode ser encontrado em www.xten.com e tem versões para Linux e Windows. A instalação no Windows é bem fácil e não será abordada aqui, já a instalação no Linux segue basicamente os seguintes passos: # tar vzxf X-Lite_Install.tar.gz -C /tmp # mv /tmp/xten-xlite/xtensoftphone /bin/ Para usar o software VoIP tenha certeza que a placa de som esteja ativa e configurada corretamente, no caso do Linux para configurar a placa de som você pode usar os comandos alsaconf e alsamixer. A configuração do cliente é geralmente direta. As partes mais importantes são o nome do usuário e senha para registro, além do endereço do servidor     Asterisk com o qual você com o qual você quer se registrar.
  22. 22. 22 VoIP - Asterisk Luiz Arthur Para iniciar o X­Lite execute com o usuário da interface gráfica o comando: #xtensoftphone Para inciar a configuração clique em 1 e depois em System Settings: 1    
  23. 23. 23 VoIP - Asterisk Luiz Arthur Clique em Netwok e tão logo seja apresentada a próxima tela  clique em 2 para  configurar o servidor Asterisk: 1 2    
  24. 24. 24 VoIP - Asterisk Luiz Arthur A figura a seguir mostra a tela de configuração do X-Lite: O nome no mostrador (Display Name) é a seqüência que será utilizada como Caller ID. O nome do usuário (Username) é a autorização do usuário são utilizados para autenticação, juntamente com a senha.   O domínio/reinado (Domain/Realm) deve ser o endereço IP de FQDN do seu   servidor Asterisk.
  25. 25. 25 VoIP - Asterisk Luiz Arthur O proxy do SIP é o mesmo que aquele inserido para o domínio/reinado, mas com o acréscimo de :5060 (isso especifica o número de portas a se usar para sinalização SIP). Depois de inserir toda essa informação, verifique se Enabled está definido como Yes, e então feche o menu de configuração. A X-Lite irá então se registrar no Asterisk. Se a X-Lite não aparecer para registrar, simplesmente reinicie o cliente. Já que a X-Lite é minimizada para a bandeja de tarefas quando você fecha a aplicação usando o botão X, você irá precisar sair do programa clicando diretamente no ícone na bandeja e então clicando em “Exit” no menu pop-up de reiniciar. Uma configuração um pouco mais elaborada Nesta configuração iremos adicionar quatro canais: um canal Escritório de Trocas Externas (FXO), um canal Estação de Trocas Externas (FXS), um canal Protocolo de Início de Sessão (SIP) e um canal protocolo de Troca Inter-Asterisk (IAX). Nós começamos explorando as configurações básicas de interfaces analógicas tais como as portas FXS e FXO com o uso de um kit Dev-Lite da Digium. Iremos então configurar duas interfaces VoIP: um canal SIP local   conectado a um telefone por software e uma conexão para Free Wold Dialup   via IAX.
  26. 26. 26 VoIP - Asterisk Luiz Arthur O Asterisk não precisa de nenhum hardware especializado – nem mesmo cartão de som. Cartões de canais quem conectam o Asterisk a telefones analógicos ou linhas telefônicas estão disponíveis, mas não são essenciais. Por outro lado, se você não se conectar diretamente a uma linha de telefone analógico do seu escritório central, você poderá rotear suas chamadas pela Internet para um provedor de serviços de telefonia. Bom iremos supor que temos uma interface com dois canais FXO e FXS, o que permite que você se conecte a uma linha de telefone analógico (FXO) e a um telefone analógico (FXS). Canais FXO e FXS A diferença entre um canal FXO e um canal FXS é simplesmente qual ponta da conexão fornece o tom de discagem. Uma porta FXO não gera um tom de discagem; ela aceita um. Uma porta FXS fornece tanto o tom de discagem como a tensão de campainha para alertar o usuário da estão sobre a chegada de uma ligação. Se o servidor Asterisk tem uma porta compatível com FXO, você poderá conectar uma linha telefônica de sua companhia de telefonia a essa porta. O Asterisk poderá então, utilizar a linha para fazer e receber chamadas   telefônicas.  
  27. 27. 27 VoIP - Asterisk Luiz Arthur As portas são definidas na configuração pelas sinalizações que utilizam em oposição aos tipos físicos de portas que elas são. Por exemplo, uma porta FXO física será definida na configuração com sinalização FXS, e uma porta FXS será definida com sinalização FXO. Isso pode se tornar confuso até que se entenda as razões para isso. Os cartões FX_ são nomeados não de acordo com o que são, mas em vez disso de acordo com o que está conectado a eles. Como exemplo, um cartão FXO se conecta a um escritório central, o que significa que precisará se comportar como uma estação e utilizar sinalização FXS. O modem em seu computador é um exemplo clássico de um dispositivo FXO. Atenção!!! conectar uma porta FXS à PSTN pode destruir o módulo e o cartão. Configuração de um canal FXO Vamos começar configurando um canal FXO. Primeiro configuramos o hardware Zaptel, depois o hardware Zapata. Nós vamos configurar um   dialplan básico e iremos mostrar a como testar o canal.  
  28. 28. 28 VoIP - Asterisk Luiz Arthur Configurando o hardware Zaptel O arquivo /etc/zaptel.conf é usado para configurar seu hardware. A seguinte configuração mínima define uma porta FXO com sinalização FXS: fxks=2 loadzone=US defaultzone=US Na primeira linha (fxks=2), além de indicar se estamos utilizando sinalização FXO ou FXS, nós especificamos um dos seguintes protocolos para o canal 2: ● Loop start (ls); ● Ground start (gs); ● Kewlstart (ks). A diferença entre loop start e ground start tem a ver com a maneira pela qual o equipamento requer um tom de discagem: ● Um circuito ground start sinaliza para o outro terminal que ele quer um tom de discagem pelo aterramento momentâneo de um dos fios; ● Um circuito loop start utiliza um curto-circuito para requer um tom de     discagem. Todas as linhas domésticas na América do Norte utilizam sinalização loop start.
  29. 29. 29 VoIP - Asterisk Luiz Arthur ● Kewlstart é, de fato, o mesmo que loop start, exceto que tem maior inteligência e é, por isso, mais capaz de detectar desconexões de outro terminal. Kewlstart é o protocolo de sinalização preferido para circuitos analógicos em Asterisk. O conjunto de indicações é configurado por loadzone para uso pelo canal. O arquivo zonedata.c contém informações sobre todos os vários sons que um sistema telefônico emite cada país em particular, ciclos de campainha, tom de ocupado e assim por diante. Quando aplica-se um tone zone carregado a um canal Zap, esse canal vai copiar as indicações para o país especificado. O defaultzone é utilizado se nenhuma zona for especificada por um canal. Depois de configurar o zaptel.conf, pode-se carregar os drivers para o cartão. Por exemplo, para carregar o driver wctdm, você deve executar: # modprobe wctdm Se não for apresentado nenhuma saída o driver foi carregado com sucesso. É possível verificar se o hardware e as portas foram carregados e configurados corretamente usando o programa ztcfg:     # ztcfg -vv
  30. 30. 30 VoIP - Asterisk Luiz Arthur O programa zttool é uma ferramenta de diagnóstico utilizada para determinar o estado do seu hardware. Um estado “OK” significa que o carregamento do hardware foi bem sucedido. Configurando o hardware Zapata O Asterisk utiliza o arquivo /etc/asterisk/zapata.conf para determinar os ajustes e configuração para o hardware de telefonia instalado no sistema. Tal arquivo também controla as várias funções e funcionalidades associadas com os canais de hardware, tal como o Caller ID, espera de chamada, eliminação de eco e uma variedade de outras opções. No passo anterior foi ativado apenas o hardware, mas é neste passo que apresenta-se o hardware ao Asterisk controlando as funções associadas a este hardware por meio do arquivo zapata.conf: [trunkgroups] ; define grupos de troncos [channels] ;canais de hardware   ;defaults   usecallerid=yes
  31. 31. 31 VoIP - Asterisk Luiz Arthur hidecallerid=no callwaiting=no threewaycalling=yes transfer=yes echocancel=yes echotraining=yes ;define canais context=incoming ; Chamadas que chegarem serão passadas para ; extensions.conf na seção chamada incoming signalling=fxs_ks ; Usa sinalização FXS para um canal FXO channel=>2 ; A PSTN esta ligada na porta 2 A seção [trunkgroups] é para conexões NFAS e GR-303 e não será discutida aqui. A seção [channels] determina o método de sinalização para os canais de hardware e suas opções. Assim que uma opção for definida, ela é herdada para o restante do arquivo. Um canal é definido usando-se a definição channel =>. Neste exemplo nós habilitamos Caller ID com usecallerid=yes e   especificamos que isso não será escondido para as chamadas para fora com   hidecallerid=no.
  32. 32. 32 VoIP - Asterisk Luiz Arthur A habilitação de chamadas em três vias com threewaycalling=yes permite que uma chamada ativa seja colocada em espera, será possível inclusive colocar uma terceira parte na conversa e isto é permitido via transfer=yes, mas isto requer que chamadas de três vias esteja habilitado. O eliminador de eco Asterisk é utilizado para remover o eco que pode ser criado em linhas analógicas com a opção echocancel=yes. O eliminador de eco do Asterisk requer algum tempo para aprender o que é eco na linha, mas é possível acelerar isso habilitando o treinamento de eco com a opção echotraining=yes. Isso vai dizer ao Asterik para enviar um tom de linha no início de uma conversa para medir o eco e então aprender mais rapidamente. Quando uma chamada chega por meio de uma interface FXO, alguma ação deve ser tomada, tal ação é configurada dentro de um bloco de instruções, chamada contexto, neste caso com a opção context=incoming, ou seja, as instruções estarão dentro do arquivo /etc/asterisk/extensions.conf em um contexto chamado incoming. Finalmente, já que um canal FXO utiliza sinalização FXS, nós o definimos como signalling=fxs_fs.    
  33. 33. 33 VoIP - Asterisk Luiz Arthur Configuração do Dialplan O seguinte dialpan mínimo faz uso da aplicação Echo() para verificar se as configurações bidirecionais para o canal estão funcionando, para tanto editaremos o arquivo /etc/asterisk/extensions.conf, incluindo as seguintes linhas: [incoming] ;chamadas entrando pela FXO são direcionada para este contexto ;pelo zapata.conf exten => s,1,Answer() exten => s,2,Echo() Depois de configurar este arquivo é possível testar a linha do FXO, para tanto é só discar para o número da linha e a linha Echo() irá permitir que escute-se no telefone sua própria voz, caso isto ocorra a configuração esta Okay.    
  34. 34. 34 VoIP - Asterisk Luiz Arthur Configuração de um canal FXS A configuração de um canal FXS é similar a FXO Primeiro configura-se o hardware com o arquivo /etc/zaptel.conf: fxoks=1 fxsks=2 loadzone=us defaultzone=us Bem nesta configuração apenas adicionamos a linha fxoks=1, de forma que estamos sinalizando FXO para nosso FXS no canal 1 com o protocolo de sinalização kewlstart. Para testar podemos fazer uso do comando ztcfg -vv.    
  35. 35. 35 VoIP - Asterisk Luiz Arthur Configuração do hardware Zapata Iremos apenas acrescentar algumas alterações ao arquivo /etc/asterisk/zapata.conf alterado anteriormente: [trunkgroups] ; define grupos de troncos [channels] ;canais de hardware ;defaults usecallerid=yes hidecallerid=no callwaiting=no threewaycalling=yes transfer=yes echocancel=yes echotraining=yes immediate=no ;define canais context=internal ;Utiliza o contexto [internal] em extensions.conf signalling=fxo_ks ;Usa a sinalização FXO para um canal FXS channel => 1 ;Telefone conectado à porta 1 context=incoming ; Chamadas que chegarem serão passadas para extensions.conf ; na seção chamada [incoming] signalling=fxs_ks; Usa sinalização FXS para um canal FXO   channel=>2 ;   A PSTN esta ligada na porta 2
  36. 36. 36 VoIP - Asterisk Luiz Arthur A seguinte configuração é idêntica à do FXO, com acréscimo de uma seção para a porta FXS e da linha immediate=no, esta opção permite que o quando o telefone for tirado do gancho o Asterisk produza um tom de discagem e aguarde pela entrada do usuário. Uma ação alternativa é que o Asterisk automaticamente execute um conjunto de instruções configuradas no dialplan, isto é possível configurando immediate=yes. As instruções a serem executadas para FXS deverão estar no contexto [internal] em /etc/asterisk/extensions.conf. Desta forma se acrescenta ao final do arquivo as seguintes linhas: [internal] exten => 611,1,Answer() exten => 611,2,Echo() Neste contexto criado chamado internal, nós dizemos ao Asterisk onde procurar pelas instruções quando alguém pressionar dígitos em seu telefone. Nesse caso, o único número de ramal que irá funcionar é o 611. Ao discar 611 no telefone, o Asterisk irá executar a aplicação Echo(), de forma que qualquer coisa que alguém disser no telefone será reproduzida para ela   mesma (um eco), dessa forma verificamos a voz bidirecional.  
  37. 37. 37 VoIP - Asterisk Luiz Arthur Configuração do SIP O protocolo de incialização de Sessão (SIP), cuida da configuração e decomposição das chamadas ao longo das renegociações durante a chamada. O SIP utiliza o protocolo de Transporte em Tempo Real (RTP) para transferir a mídia entre os pontos finais. O SIP é um protocolo de sinalização da camada de aplicação que utilizam a porta 5060 normalmente UDP O RTP utiliza número de portas altas no . Asterisk (originalmente, de 10.000 a 20.000). Para configurar o SIP iremos configurar o aquivo /etc/asterisk/sip.conf: [general] context=default srvlookup=yes [john] type=friend secret=welcome qualify=yes ; Qualificar um par a não menos que 2000ms de distância nat=no ; Esse telefone não está na NAT host=dynamic ; Esse dispositivo se registra com IP dinâmico canreinvite=no ; O Asterisk originalmente tenta redirecionar     context=internal ; O contexto [internal] controla o que podemos fazer
  38. 38. 38 VoIP - Asterisk Luiz Arthur O arquivo sip.conf começa com uma seção [general], que contém os ajustes do canal e as opções originais para todos os usuários. A opção srvlookup=yes habilita os registros de sistemas de nome DNS, permitindo fazer ligações SIP por nome de domínio, por padrão esta opção vem desativada, mas é altamente recomendável ativa-lá. Bem iniciamos com uma ramal chamado john, que é do tipo friend (pode realizar e receber ligações), e acrescentamos a senha “welcome” para ele. A opção qualify=yes monitora a latência entre o servidor Asterik e o telefone , isto pode ser usado inclusive para monitorar outros servidores Asterisk, originalmente o Asterisk irá determinar o terminal encontrável a cada 2 segundos (2.000ms), mas podemos mudar isto alterando o yes pelo número de milisegundos. Se um ramal esta por tráz de um NAT, tal como um roteador ou um Firewall, configure nat=yes para forçar o Asterisk a ignorar a informação de contato para o ramal e utilizar o endereço de onde os pacotes estão sendo recebidos. Definir host=dynamic vai fazer o ramal se registrar para que o Asterisk saiba onde ele está. Substitua dynamic pelo endereço IP ou nome de domínio     para limitar um terminal. Se definir host=static, o terminal não terá que se registrar.
  39. 39. 39 VoIP - Asterisk Luiz Arthur Também foi definido canreinvite=no desta forma o Asterisk fica apto a tocar musica ou passar um anúncio para o cliente em espera, já que os convites são usados para estabelecer ligações, e re-convites para redireciona-las. Por fim, context=internal especifica as localização das instruções usadas para controlar o que o telefone tem permissão de fazer e o que fazer com ligações que chagam para este ramal. Configuração do Dialplan SIP Muitos telefones SIP, tanto por software como por hardware, são telefones de múltiplas linhas. Assim é possível testar o telefone ligando para você mesmo. Para isto, disca-se o ramal 100. Se o telefone não suportar ligar para ele mesmo ligue para o ramal 611 que tem a aplicação Echo() Ao arquivo de dialplan deve ser acrescentado as seguintes linhas: [internal] exten => 100,1,Dial(SIP/john) exten => 611,1,Echo()    
  40. 40. 40 VoIP - Asterisk Luiz Arthur Configuração de conexões IAX de entrada O protocolo de Troca Inter-Asterisk (IAX) é normalmente usado para comunicações entre servidores, mas existem atualmente telefones que também utilizam o IAX como protocolo de comunicação. A diferença primária entre os protocolos IAX e SIP é a maneira pela qual a mídia (sua voz) é passada entre terminais. Com, o SIP ou com H.323 o tráfego RTP (mídia) é passado utilizando portas diferentes daquelas utilizadas pelos métodos de sinalização. Já o protocolo IAX difere em que tanto na sinalização como o tráfego de, mídia são passados por meio de uma única porta (4569). Uma vantagem desse sistema é que o protocolo IAX tende a se ligar melhor a topologias envolvendo NAT. Um usuário IAX normalmente é utilizado para autenticar e manipular ligações vindo para o sistema PBX. Para ligações indo para fora do PBX, o Asterisk usa uma entrada par do IAX no arquivo iax.conf para autenticar com a ponta remota. Nesta implementação com o IAX conectaremos o nosso sistema com o Free Wold Dialup (FWD) via IAX. O FWD é um provedor de serviço VoIP gratuito que permite que se conecte a qualquer outro membro da rede, independente da localização física, gratuitamente. O FWD também é conectado a mais de     100 outras redes, às quais pode-se conectar gratuitamente.
  41. 41. 41 VoIP - Asterisk Luiz Arthur Mas para tanto deve-se registrar no www.fwdnet.net e habilitar sua conta para dar suporta ai IAX. Então configuraremos o /etc/asterisk/iax.conf e /etc/asterisk/extensions.conf para permitir que se receba chamadas de outro usuário FWD e fazer chamadas para usuários FWD. Configuração do iax.conf Nosso arquivo iax.conf deve ficar da seguinte forma: [general] bandwidth=low disallow=lpc10 jitterbuffer=no forcejitterbuffer=no tos=lowdelay autokill=yes registrer => fwd_number:password@iax2.fwdnet.net [iaxfwd] type=user context=incoming   auth=rsa   inkeys=freewolddialup
  42. 42. 42 VoIP - Asterisk Luiz Arthur Dentro da seção [general], foi adicionado uma declaração de registro. O propósito da declaração de registro é dizer ao servidor FWD IAX o cliente esta na Internet, ou seja, registar-se no FWD é passar o seu IP. Na seção [iaxfwd], foi definido o usuário para ligações que chegam com o type=user, depois foi definido onde a ligação será manipulada dentro do dialplan, com context=incoming. A opção auth=rsa diz que a autenticação será feita via chave RSA. A chave pública é definida com inkeys=freewolddialup que vem como padrão com o Asterisk. Configuração do Dialplan O manuseio de uma ligação que chega ao arquivo extensions.conf é simples. Primeiro crie um contexto chamado incoming. O contexto é seguido por uma definição de Dial() que irá discar o ramal SIP criado , anteriormente. Substitua o número 10001 por aquele da dua conta FWD: [incoming] exten => 10001,1,Dial(SIP/john)    
  43. 43. 43 VoIP - Asterisk Luiz Arthur Para fazer as ligações externas configure o arquivo iax.conf da seguinte forma: [iaxfwd] type=peer host=iax2.fwdnet.net username=<número da conta FWD> secret=<senha-conta-fwd> qualify=yes disallow=all allow=ulaw allow=gsm allow=ilbc allow=g726 O tipo agora indica que a conexão é ponto-a-ponto, e é utilizado a opção host para informar qual é o servidor. O disallow é usado para rearmar quaisquer ajustes de codec definidos previamente, então são usados as opções allow para indicar os codecs de preferencia de cima para baixo.   Para saber se o registro foi bem sucedido é possível usar o comando iax2   show registry no CLI Asterisk.
  44. 44. 44 VoIP - Asterisk Luiz Arthur Já a configuração do dialplan no arquivo extensions.conf fica da seguinte forma: [internal] exten => 613,Dial(IAX2/iaxfwd/613) Aqui configuramos para que possamos fazer uma ligação para aplicação FWD, é possível usar o mesmo teste do Eco para testar se tudo esta Okay.    
  45. 45. 45 VoIP - Asterisk Luiz Arthur fim    
  46. 46. 46 VoIP - Asterisk Luiz Arthur fim    

×