46
 VoIP - Asterisk Luiz Arthur 1 fim

Redes - VoIP Asterisk

Embed Size (px)

Citation preview

Page 1: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur1

fim

Page 2: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur2

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.

Page 3: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur3

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.

Page 4: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur4

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;

Page 5: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur5

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;

Page 6: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur6

● 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.

Page 7: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur7

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.

Page 8: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur8

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.

Page 9: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur9

● 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.

Page 10: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur10

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.

Page 11: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur11

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.

Page 12: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur12

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.gzlibpri-1.4.1.tar.gzzaptel-1.4.4.tar.gz

Nós iremos fazer uso do diretório /usr/src para extrair e compilar o fonte do Asterisk.

Page 13: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur13

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

Page 14: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur14

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

Page 15: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur15

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.

Page 16: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur16

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 startno 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.

Page 17: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur17

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.

Page 18: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur18

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=usuario1secret=123mudarhost=dynamictype=friendcontext=interno

[201]callerid=usuario2secret=123mudarhost=dynamictype=friendcontext=interno

Page 19: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur19

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.

Page 20: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur20

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

Page 21: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur21

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.

Page 22: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur22

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

Page 23: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur23

Clique em Netwok e tão logo seja apresentada a próxima tela  clique em 2 para configurar o servidor Asterisk:

2

1

Page 24: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur24

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.

Page 25: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur25

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.

Page 26: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur26

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.

Page 27: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur27

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.

Page 28: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur28

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=2loadzone=USdefaultzone=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.

Page 29: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur29

● 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

Page 30: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur30

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;defaultsusecallerid=yes

Page 31: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur31

hidecallerid=nocallwaiting=nothreewaycalling=yestransfer=yesechocancel=yesechotraining=yes

;define canaiscontext=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 FXOchannel=>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.

Page 32: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur32

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.

Page 33: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur33

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.confexten => 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.

Page 34: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur34

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=1fxsks=2loadzone=usdefaultzone=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.

Page 35: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur35

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;defaultsusecallerid=yeshidecallerid=nocallwaiting=nothreewaycalling=yestransfer=yesechocancel=yesechotraining=yesimmediate=no

;define canaiscontext=internal ;Utiliza o contexto [internal] em extensions.confsignalling=fxo_ks ;Usa a sinalização FXO para um canal FXSchannel => 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 FXOchannel=>2 ; A PSTN esta ligada na porta 2

Page 36: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur36

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.

Page 37: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur37

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=defaultsrvlookup=yes

[john]type=friendsecret=welcome

qualify=yes ; Qualificar um par a não menos que 2000ms de distâncianat=no ; Esse telefone não está na NAThost=dynamic ; Esse dispositivo se registra com IP dinâmicocanreinvite=no ; O Asterisk originalmente tenta redirecionarcontext=internal ; O contexto [internal] controla o que podemos fazer

Page 38: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur38

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íniopara limitar um terminal. Se definir host=static, o terminal não terá que se registrar.

Page 39: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur39

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()

Page 40: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur40

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.

Page 41: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur41

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=lowdisallow=lpc10jitterbuffer=noforcejitterbuffer=notos=lowdelayautokill=yes

registrer => fwd_number:[email protected]

[iaxfwd]type=usercontext=incomingauth=rsainkeys=freewolddialup

Page 42: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur42

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)

Page 43: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur43

Para fazer as ligações externas configure o arquivo iax.conf da seguinte forma:

[iaxfwd]type=peerhost=iax2.fwdnet.netusername=<número da conta FWD>secret=<senha-conta-fwd>qualify=yesdisallow=allallow=ulawallow=gsmallow=ilbcallow=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.

Page 44: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur44

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.

Page 45: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur45

fim

Page 46: Redes - VoIP Asterisk

   

VoIP - Asterisk Luiz Arthur46

fim