O protocolo IAX



IAX (protocolo Inter-Asterisk eXchange) é um dos protocolos utilizados pelo Asterisk. Ele é usado para gerenciar conexões VoIP entre os servidores Asterisk e entre servidores e clientes que também usam o protocolo IAX. O protocolo IAX agora geralmente se refere ao IAX2, a segunda versão do protocolo IAX. O protocolo original tornou-se obsoleto em favor da IAX2.

IAX2 é robusto, cheio de novidades e muito simples em comparação com outros protocolos. Ele permite lidar com um grande número de CODECs e um grande número de fluxos, o que significa que ele pode ser usado para transportar praticamente qualquer tipo de dados. Esta capacidade torna muito útil para videoconferências ou apresentações remotas. Está designado para dar prioridade para pacotes de voz em uma rede IP.

IAX2 usa uma única porta UDP, geralmente 4569, para comunicações entre nós finais (terminais VoIP) para sinalização e dados. O tráfego de voz é transmitido na banda, o que torna o IAX2 um protocolo quase transparente para firewalls (Firewall) e realmente eficaz para trabalhar nas redes internas. Nisto difere do SIP, que usa uma seqüência RTP fora de banda para entregar a informação.

IAX2 suporta Trunking (rede), onde um link simples permite enviar dados e sinalização através de múltiplos canais. Quando o Trunking é executado, os dados de várias chamadas são tratados em um único conjunto de pacotes, o que significa que um Datagrama IP pode fornecer informações para mais chamadas sem criar latência adicional. Esta é uma grande vantagem para usuários de VoIP, onde os cabeçalhos de IP são uma grande porcentagem da largura de banda usada.

O protocolo IAX2 foi criado por Mark Spencer para sinalização VoIP em Asterisk. O protocolo cria sessões internas e essas sessões podem usar qualquer CODEC que possa transmitir voz ou vídeo. O IAX, essencialmente, fornece controle e transmissão de fluxos de dados multimídia em redes IP. IAX é extremamente flexível e pode ser usado com qualquer tipo de dados, incluindo o vídeo.

O design IAX foi baseado em muitos padrões de transmissão de dados, incluindo SIP (que é o mais comum atualmente), MGCP e Protocolo de Transporte em Tempo Real.

O objetivo principal da IAX foi minimizar a largura de banda usada na transmissão de voz e vídeo através da rede IP, com particular atenção ao controle e às chamadas de voz e ao suporte nativo para ser transparente ao NAT. A estrutura básica do IAX é baseada na multiplexação da sinalização e no fluxo de dados em uma única porta UDP entre dois sistemas. IAX é um protocolo binário e é projetado e organizado de forma a reduzir a carga em fluxos de dados de voz. A largura de banda para algumas aplicações é sacrificada em favor da largura de banda para VoIP.

Arquitetura IAX

Como o nome indica, ele foi projetado como um protocolo para conexões VoIP entre os servidores Asterisk, embora hoje em dia também sirva para conexões entre clientes e servidores que suportam o protocolo.

Os objetivos da IAX são:
  • Minimizar a largura de banda usada no controle VoIP e transmissões multimídia;
  • Evite problemas de NAT (Network Address Translation);
  • Suporte para transmitir planos de discagem.
Entre as medidas para reduzir a largura de banda, deve notar-se que IAX ou IAX2 é um protocolo binário em vez de ser um protocolo de texto como SIP e que faz com que as mensagens usem menos largura de banda.

Para evitar problemas de NAT, o protocolo IAX ou IAX2 usa o protocolo de transporte UDP, geralmente na porta 4569 (porta IAX1 usada 5036), e as informações de sinalização e os dados viajam juntos (ao contrário do SIP) e, portanto, torna menos propenso a problemas de NAT e permite que você passe roteadores e firewalls com mais facilidade.

Funcionamento do IAX

Para entender o protocolo IAX, veremos um exemplo do fluxo de dados de uma comunicação IAX2.
Uma chamada IAX ou IAX2 tem três fases:
A) Estabelecimento da chamada

A Extensão A inicia uma conexão e envia uma mensagem "new". A Extensão B, que é o destinatário desta chamada, responde com um "accept" e o originador da chamada (Extensão A) responde com um "Ack". Então a Extensão B dá os sinais de toque e o interlocutor responde com um "Ack" para confirmar a recepção da mensagem. Finalmente, a Extensão B aceita a chamada com uma "Answer" e o originador, a Extensão A, confirma essa mensagem com um "Ack".

B) Fluxo de dados ou Fluxo de áudio

Os quadros M e F são enviados em ambas as direções com a informação vocal. M quadros são mini-quadros que contêm apenas um cabeçalho de 4 bytes para reduzir o uso da largura de banda. F quadros são quadros completos que incluem informações de sincronização. É importante ressaltar que, no IAX, esse fluxo usa o mesmo protocolo UDP que as mensagens de sinalização usam, evitando problemas de NAT.

C) Liberação da chamada ou desconexão

O encerramento da conexão é tão simples como enviar uma mensagem "hangup" e confirmar essa mensagem com um "Ack".

Tipos de mensagens ou quadros

As mensagens ou quadros que são enviados no IAX2 são binários e, portanto, cada bit ou conjunto de bits tem um significado. Como já indicamos anteriormente, existem dois tipos de mensagens, principalmente:

A) Quadros F ou quadros completos

A particularidade dos quadros ou das mensagens F é que eles devem ser respondidos explicitamente. Ou seja, quando um usuário envia outro quadro F (quadro completo), o receptor deve responder confirmando que recebeu essa mensagem. Esses quadros são os únicos que devem ser respondidos explicitamente.

Em seguida, colocamos o formato binário de um quadro F ou quadro completo de IAX2.


O significado de cada um dos campos é o seguinte:
- F: Um bit que indica se o quadro é F (full frame) ou não. Para ser F ou quadro completo, ele deve ser definido como 1.
- Source Call Number (Número de chamada de origem): 15 bits que identificam a conversação de origem, uma vez que pode haver várias comunicações multiplexadas pela mesma linha.
- R: bit de retransmissão. É definido quando o enredo é retransmitido.
- Destination Call Number (Número de chamada de destino): o mesmo que o número de origem, mas para identificar o destino.
- Timestamp ou carimbo de tempo - Para marcar o tempo em cada pacote
- OSeqno - Seq. Saída: número de sequência de saída com 8 bits. Começa em 0 e cada mensagem aumenta.
- ISeqno - Seq. Entrada: o mesmo para a entrada.
- Frame Type - Tipo de Quadro: indica a classe de quadro em questão
- C: Set to 0, indica que o campo de subclasse deve ser tomado como 7 bits (uma única mensagem): Set to 1, indica que o campo de subclasse é obtido com 14 bits (duas mensagens consecutivas).
- Subclass - subclasse - Subclasse da mensagem.
- Data - Dados: dados que são enviados em formato binário.

B) Molduras M ou Mini quadros

M quadros ou mini quadros para enviar informações com a menor informação possível no cabeçalho. Esses quadros não precisam ser respondidos e, se algum deles for perdido, ele é descartado sem mais detalhes.

O formato binário de M frames ou mini frames é o seguinte:



O significado dos campos é semelhante ao dos quadros F ou full frame. Nesse caso, o bit F é definido como 0 e o carimbo de data/hora ou Timestamp é truncado e somente 16 bits para iluminar o cabeçalho. São os clientes que devem cuidar de carregar um timestamp de 32 bits se desejarem e sincronizá-lo para enviar um quadro F.

Valores dos Quadros

Quadros F ou quadro completo

O campo Type Frame ou o tipo de quadro dos quadros F junto com o campo subclasse determinam a função do pacote que está sendo enviado ou recebido e, portanto, servem como sinalização de controle.

O campo Type Frame consiste em 8 bits (1 byte) e os principais valores que podem ser tomados são mostrados na tabela a seguir:

Tabela 1. Valores possíveis do campo "Tipo Quadro" dos quadros F ou Full Frame:

Valor “type frame”DescriçãoDetalhes
00000001DTMFEle é usado para enviar dígitos DTMF
00000002Dados de vozO campo da subclasse indica o tipo de CODEC de áudio que é usado de acordo com a tabela 2
00000003Dados de vídeoO campo da subclasse indica o tipo de CODEC de vídeo que é usado
00000004ControleMensagens de controle de sessão. Ele serve para controlar o estado dos dispositivos finais. O campo da subclasse indica o tipo específico de mensagem de controle de acordo com a tabela 3.
00000005Não utilizado
00000006Controle IAXMensagens de controle do protocolo IAX. Gerencia as interações necessárias entre os dispositivos finais. O campo da subclasse indica o tipo específico de mensagem de controle de acordo com a tabela 4.
00000007Texto
00000008Imagem
00000009HTML
Tabela 2.Significado dos valores do campo de subclasse para Tipo de estrutura = "0x02" (dados de voz)
Valor subclase (Type Frame =0x02)Descrição (CODEC usado na conversa)
0x0001G.723.1
0x0002GSM
0x0004G.711 u (u-law)
0x0008G.711 a (a-law)
0x0080LPC10
0x0100G.729
0x0200Speex
0x0400iLBC
Tabela 3. Significado dos valores do campo de subclasse para Tipo de estrutura = "0x04" (controle)
Valor subclase (Type Frame =0x04)DescriçãoDetalhes
0x01HangupA chamada foi suspensa
0x02RingO telefone está tocando
0x03Ringing (ringback)
0x04AnswerResposta
0x05Busy ConditionO usuário está ocupado
0x08Congestion ConditionHá congestionamento
0x0eCall ProgressProgresso da chamada
Tabela 4. Significado dos valores do campo de subclasse para Tipo de estrutura = "0x06" (controle IAX)
Valor subclase (Type Frame =0x05)DescriçãoDetalhes
0x01NEWInicie uma nova chamada0x10REGREJNegação de registro
0x02PINGEnviar um ping0x11REGRELLiberação de registro
0x03PONGResponder a um ping0x12VNAKPedido de retransmissão
0x04ACKResposta afirmativa0x13DPREQSolicitação de Dialplan
0x05HANGUPInício da desconexão0x14DPREPResponda pelo dialplan
0x06REJECTRejeição0x15DIALMarcado
0x07ACCEPTAceitação0x16TXREQPedido de transferência
0x08AUTHREQPedido de autenticação0x17TXCNTTransferir conexão
0x09AUTHREPResposta de autenticação0x18TXACCAceitação de transferência
0x0aINVALChamada inválida0x19TXREADYTransferência pré-paga
0x0bLAGRQPedido de Lag0x1aTXRELTransferência
0x0cLAGRPResposta de Lag0x1bTXREJRejeição de transferência
0x0dREGREQPedido de registro0x1cQUELCHPare a transmissão de áudio
0x0eREGAUTHAutenticação de registro0x1dUNQUELCHContinuar a transmissão de áudio
0x0fREGACKACK de registro0x20MWIIndicador de espera de mensagens
0x21UNSUPPORTMensagem não suportada

IAX vs SIP - comparação entre IAX e SIP

IAX foi criado por Mark Spencer (também criador do AsterisK) para aliviar uma série de problemas ou inconvenientes que foram encontrados ao usar o SIP no VoIP e que ele achava que deveria ser melhorado.

As principais diferenças entre IAX e SIP são as seguintes:

- Largura de banda.
O IAX usa uma largura de banda menor do que o SIP, uma vez que as mensagens são codificadas em forma binária enquanto no SIP são mensagens de texto. Da mesma forma, IAX tenta reduzir ao máximo a informação dos cabeçalhos das mensagens, reduzindo também a largura de banda.

- NAT
No IAX, a sinalização e os dados viajam juntos, o que evita os problemas de NAT que freqüentemente aparecem no SIP. No SIP, a sinalização e a viagem de dados são separadas e é por isso que os problemas NAT aparecem no fluxo de áudio quando esse fluxo deve superar os roteadores e firewalls. SIP geralmente precisa de um servidor STUN para esses problemas.

- Padronização e uso
O SIP é um protocolo padronizado pelo IETF há algum tempo e que é amplamente implementado por todos os fabricantes de equipamentos e software. O IAX ainda está sendo padronizado e é por isso que ele não é encontrado em muitos dispositivos existentes no mercado.

- Uso de portas
O IAX usa uma única porta (4569) para enviar as informações de sinalização e os dados de todas as suas chamadas. Para fazer isso, ele usa um mecanismo de multiplexagem ou trunking

O SIP, no entanto, usa uma porta (5060, 5061 e 5062) para sinalização e 2 portas RTP para cada conexão de áudio (pelo menos 3 portas). Por exemplo, para 100 chamadas simultâneas com SIP, 200 portas (RTP) além da sinalização da porta 5060, 5051 e 5062 seriam usadas. 

O IAX usaria apenas uma porta para tudo (4569).

- Fluxo de áudio ao usar um servidor
No SIP, se usarmos um servidor, a sinalização de controle sempre passa pelo servidor, mas as informações de áudio (fluxo RTP) podem viajar de ponta a ponta sem necessariamente passar pelo servidor SIP. No IAX, quando a sinalização e os dados viajam juntos, todo o tráfego de áudio deve necessariamente passar pelo servidor IAX. Isso produz um aumento no uso da largura de banda que os servidores IAX devem suportar, especialmente quando há muitas chamadas simuladas.

- Outras funcionalidades
IAX é um protocolo projetado para transmissão de VoIP e vídeo e apresenta recursos interessantes, como a possibilidade de enviar ou receber planos de discagem (dialplans) que são muito interessantes quando usados em conjunto com os servidores Asterisk. O SIP é um protocolo de propósito geral e pode transmitir sem dificuldade qualquer informação e não apenas áudio ou vídeo.

Fontes;
























Asterisk, FreePBX e CentOS v7 tudo que você queria!


Bom o foco blog é mostrar o mundo GUI do FreePBX e o AsteriskNow. Não gosto muito de estradas mal sinalizadas, por isto hoje vamos mostrar como instalar na unha, e passo a passo o Asterisk v14, FreePBX v14 e o CentOS v7. Este post tem como base o material do Eduardo Azevedo (@dudutecinf ). Vamos colocar a mão na massa!

NOTA: Testado em CentOS v7 x64, Asterisk v13 e 14 standart e FreePBX v14. Premissas, instalação feita com o usário root (#) toda em modo texto (multi-user.target).

Pré requisitos, vamos assegure uma instalação básica do servidor com dependências iniciais para começar.

Dependências:
# yum -y update && yum -y groupinstall core && yum -y groupinstall base && yum -y install epel-release

# yum -y install automake gcc gcc-c++ ncurses-devel openssl-devel libxml2-devel unixODBC-devel libcurl-devel libogg-devel libvorbis-devel speex-devel spandsp-devel freetds-devel net-snmp-devel iksemel-devel corosynclib-devel newt-devel popt-devel libtool-ltdl-devel lua-devel sqlite-devel radiusclient-ng-devel portaudio-devel neon-devel libical-devel openldap-devel gmime-devel mysql-devel bluez-libs-devel jack-audio-connection-kit-devel gsm-devel libedit-devel libuuid-devel jansson-devel libsrtp-devel git subversion libxslt-devel kernel-devel audiofile-devel gtk2-devel libtiff-devel libtermcap-devel ilbc-devel python-devel bison tftp-server httpd sox tzdata mysql-connector-odbc mariadb mariadb-server fail2ban jwhois xmlstarlet ghostscript libtiff-tools patch e2fsprogs mpg123 lame gstreamer mongodb-server

Node.js:
# curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
# yum -y install nodejs

ODBC:
# cat >> /etc/odbc.ini << EOF
[MySQL-asteriskcdrdb]
Description = MariaDB connection to 'asteriskcdrdb' database
driver = MySQL
server = localhost
database = asteriskcdrdb
Port = 3306
Socket = /var/lib/mysql/mysql.sock
option = 3
Charset=utf8

EOF

PHP, vamos instalar o repositório e substituir os pacotes existentes do PHP.
# yum -y install https://centos7.iuscommunity.org/ius-release.rpm
# yum -y install yum-plugin-replace
# yum replace --replace-with php56u php

Instalando o PHP v5.6:
# yum -y install php56u php56u-mysqlnd php56u-process php56u-pear php56u-mbstring php56u-xml php56u-gd php56u-curl

Perfumarias:
# yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm

# yum install ffmpeg

Configurando o Timezone:
## Procurando seu Timezone
tzselect

## Exemplo de configurar o Timezone
# timedatectl set-timezone America/Sao_Paulo

# timedatectl status

Vamos instalar o DAHDI:

Nota: Mesmo que não esteja usando um servidor físico e não tenha uma placa de comutação faça a instalação do DAHDI pois vamos usar o Timing dele para transferências, salas de conferencias e para trunks IAX2. No momento da edição deste post, as versões mais recentes do que 2.10.2 (2.11.0 e 2.11.1) não estão sendo instaladas corretamente. Caso queira fazer um teste é por sua conta e risco.

# cd /usr/src
# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.10.2+2.10.2.tar.gz

# tar zxvf dahdi-linux-complete-2.10*
# cd /usr/src/dahdi-linux-complete-2.10*/
# make all && make install && make config
# systemctl restart dahdi

Se ocorrer durante o MAKE ALL falhas, faça um reboot em seu sistema operacional e execute a instalação do "linux-headers". 

# yum install kernel-devel

Instalando o Asterisk:

Nota:  Para instalar o Asterisk v14, vamos definir "VERSION=14". Caso você tenha outra versão no servidor que está utilizando este post, é melhor primeiro você executar: 

# rm -rf /usr/lib64/asterisk/modules

Com isto evitaremos conflitos de versões dos módulos. Então lembre-se de selecionar versão 13 (VERSION=13) ou 14 (VERSION=14).


# cd /usr/src
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-${VERSION}-current.tar.gz
# tar zxvf asterisk-${VERSION}-current.tar.gz
# cd /usr/src/asterisk-${VERSION}*/
# make distclean

Instalando as dependências adicionais:

Nota: Usando install_prereq. O script install_prereq está incluído em todas as versões do Asterisk no subdiretório contrib/scripts. O script possui as seguintes opções:
*test - imprime apenas as bibliotecas a serem instaladas.

*install - instala apenas dependências de pacotes. Dependendo da sua distribuição de Linux, versão do Asterisk e recursos que você deseja usar, isso pode ser suficiente.

*install-unpacakged - instala dependências que não possuem pacotes, mas que tenham apenas tarballs. Você pode precisar dessas dependências para determinados recursos no Asterisk. 

Você sempre deve usar as ferramentas de gerenciamento de pacotes do seu sistema operacional para garantir que seu sistema esteja executando o software mais recente antes de executar o install_prereq. O pacote libsnmp-dev do Ubuntu 14 em diante, por exemplo, tem um problema em que tentará remover pacotes críticos do sistema se o sistema não for atualizado antes de tentar fazer uso deste script.


# cd /usr/src/asterisk-${VERSION}*/
# yum -y update
# yum -y upgrade
# ./contrib/scripts/install_prereq install
# ./install_prereq install-unpackaged


Configurando a instalação do Asterisk:
# cd /usr/src/asterisk-${VERSION}*/
# ./configure --libdir=/usr/lib64 --with-pjproject-bundled

Nota: para fazer uma analise sobre o comando e os modulos que foram habilitados e os que não foram e o porque execute:
# vim config.log

Definir as opções de compilação:
# cd /usr/src/asterisk-${VERSION}*/
# make menuselect

Nota: Selecione as opções de compilação adicionais ou deixe no padrão, saia e salve. Para adicionar/alterar opções de compilação, após instalado o Asterisk, basta realizar os procedimentos, make menuselect e depois make && make install novamente. 

Criando o usuário para o Asterisk, compilando, instalando e definindo a propriedade preliminar.
# adduser asterisk -s /sbin/nologin -c "Asterisk User"
# make && make install && chown -R asterisk. /var/lib/asterisk

Instalando o FreePBX:
# systemctl restart mariadb
# cd /usr/src
# git clone -b release/14.0 --single-branch https://github.com/freepbx/framework.git freepbx
# cd /usr/src/freepbx
# ./start_asterisk start

# ./install -n

Se você receber um erro de versão, é porque não foi possível determinar o Asterisk, faça o seguinte:

# Substitua a linha 266 do freepbx/installlib/installcommand.class.php para ficar como a seguir

$lastline = exec("runuser" . $answers['user'] . ' -s /bin/bash -c "cd ~/ && asterisk -rx \'core show version\' | grep ^Asterisk 2>&1"', $tmpout, $ret);

Execute reboot no seu servidor e execute novamente os seguintes procedimentos:
# cd /usr/src/freepbx
# ./start_asterisk start

# ./install -n

Instalação do Módulo:
# fwconsole ma upgrade framework core voicemail sipsettings infoservices \
# featurecodeadmin logfiles callrecording cdr dashboard music conferences
# fwconsole chown
# fwconsole reload

Nota: Módulos adicionais podem ser instalados via GUI: Admin > Module Admin. Opcionalmente, você pode instalar todos os módulos (o que não é recomendado). Você provavelmente precisará executar os seguintes comandos duas vezes.

# fwconsole ma installall
# fwconsole chown
# fwconsole reload

Configurando o FreePBX para inicializar com o BOOT do seu sistema operacional.
# cat > /etc/systemd/system/freepbx.service << EOF​
[Unit]
Description=Freepbx
After=mariadb.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start
ExecStop=/usr/sbin/fwconsole stop

[Install]
WantedBy=multi-user.target

EOF

#systemctl enable freepbx

Tarefas pós-instalação, primeiro, bloqueie o servidor de banco de dados:
# mysql_secure_installation

Responda Y para tudo!

Altere as configurações do servidor Apache2:
# sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini
# sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
# sed -i ':a;N;$!ba;s/AllowOverride None/AllowOverride All/2' /etc/httpd/conf/httpd.conf

Certifique-se de que tanto o Banco de Dados quanto o servidor Web estejam configurados para iniciar no boot do sistema operacional.
# systemctl enable mariadb
# systemctl enable httpd

Finalmente, reinicie para que todas as alterações entrem em vigor.
# reboot

Uma perfumaria, totalmente opcional, rotação do arquivo de log. Se isto não for feito, os arquivos de LOGs continuarão crescendo indefinidamente. Logo apesar de ser uma perfumaria é importante fazer pois temos que ter os LOGs para analise de possiveis falas em nosso sistema.

# vim /etc/logrotate.d/asterisk

/var/spool/mail/asterisk
/var/log/asterisk/*log
/var/log/asterisk/full
/var/log/asterisk/dtmf
/var/log/asterisk/freepbx_dbug
/var/log/asterisk/fail2ban {
        weekly
        missingok
        rotate 4
        #compress
        notifempty
        sharedscripts
        create 0640 asterisk asterisk
        postrotate
        /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null || true
        endscript
        su root root
}

Novas politicas de firewall.
# systemctl enable firewalld
# systemctl restart firewalld
# firewall-cmd --permanent --zone=public --add-service={http,https}
# firewall-cmd --permanent --zone=public --add-port=5060-5061/tcp
# firewall-cmd --permanent --zone=public --add-port=5060-5061/udp
# firewall-cmd --permanent --zone=public --add-port=10000-20000/udp
# firewall-cmd --reload


Recurso TFTP, o servidor TFTP é bom caso você use Telefone IP (hardware), assim pode fazer o provisionamento do mesmo. Para isto basta criar um arquivo com nome do MAC do aparelho IP e nele disponibilizar toda configuração necessária para funcionar com seu Softswitch PBX IP.
# yum -y install tftp-server
# vim /etc/xinetd.d/tftp

Altere server_args = -s /var/lib/tftpboot para server_args = -s /tftpboot

Altere disable=yes para disable=no

# mkdir /tftpboot
# chmod 777 /tftpboot
# systemctl restart xinetd
# firewall-cmd --permanent --zone=public --add-port=69/udp
# firewall-cmd --reload

Vamos testar o ODBC.
# odbcinst -s -q

Use o nome de usuário e senha do /etc/asterisk/res_odbc_additional.conf para testar a conectividade com o Banco de Dados via ODBC.

# isql -v MySQL-asteriskcdrdb seunomedeusuario suasenhadeusuario

Vamos testar o ODBC na console do Asterisk.
# rasterisk -vvvvgci
*CLI> odbc show

Aumentando o tamanho de memory_limit = 256 do PHP.
# sed -i 's/memory_limit = .*/memory_limit = 256M/g' /etc/php.ini

Vamos travar o Asterisk para usar o Timing do DAHDI.
# rasterisk -vvvvgci
*CLI> module show like timing
Module                           Description                              Use Count  Status
res_timing_dahdi.so       DAHDI Timing Interface                0          Running
res_timing_pthread.so    pthread Timing Interface                 0          Running
res_timing_timerfd.so    Timerfd Timing Interface                1          Running
3 modules loaded
*CLI> 

Edite o arquivo modules em /etc/modules.conf e inclua.

noload = res_timing_pthread.so
noload = res_timing_timerfd.so

# reboot

# rasterisk -vvvvgci

*CLI> module show like timing
Module                         Description                              Use Count  Status
res_timing_dahdi.so            DAHDI Timing Interface                   1          Running
1 modules loaded
*CLI> 

Pronto! Seu sistema Softswitch PBX IP com GUI FreePBX v14 está pronto! Basta usar!

Asterisk Now 10.13 – Instale uma Central Telefónica VoIP

Quando falamos em VoIP (Voz sobre IP) e soluções gratuitas, é quase inevitável não falar do popular Asterisk Framework Communications. Para quem não conhece, o Asterisk é um software de código aberto que permite “transformar” um simples computador num servidor de comunicações como a uma central telefónica, só que de multi protocolo.
A Digium é a empresa que promove o Asterisk, mas atualmente é a comunidade de programadores que contribui fortemente para os avanços da aplicação. Hoje vamos ver como é fácil instalar o Asterisk Now 10.13.

O Asterisk tem suporte para os principais protocolos abertos, dos quais destacamos o SIP, MGCP e IAX.
Principais características do Asterisk
  • Sistema de telefonia IP-PBX;
  • Distribuidor Automático de Chamadas (DAC);
  • Unidade de Resposta Audível (URA);
  • Correio de Voz com integração com o correio eletrônico;
  • Relatório e estatísticas das chamadas;
  • Facilidade de administração e gestão através da Web;
  • Compatível com os PBX’s analógicos;
  • Compatível com os telefones digitais IP;
  • Conectividade com troncos analógicos e digitais;
  • Sistema voltado para pequenas e médias empresas

Como instalar o Asterisk Now 10.13?

Depois de fazer o download do Asterisk Now 10.13 basta gravar o .iso num CD/DVD ou PEN e realizar o boot por meio destas opções. Na primeira interface de instalação devem escolher Full Install (ou então a opção que se adeque ao seu cenário).
O sistema vai carregar alguns pacotes necessários para a instalação de toda a plataforma. O processo demorará entre 3 a 5 minutos.




Na parte da configuração do TCP/IP devem ativar o protocolo IPv4 e IPv6. Neste ponto podem fazer uma configuração manual ou definir que será via DHCP.

Agora devem indicar o fuso horário.

E por fim indicar uma password inicial para acesso ao sistema. pela regra de segurança é necessário ser 6 caracteres, contendo letras e números, exemplo "y2y017". 

A instalação completa da plataforma demora cerca de 30 minutos. Depois de reiniciado, devem introduzir as credenciais definidas anteriormente (utilizador: root/ password: definida anteriormente, se seguiu este post, usamos "y2y017"). Depois de autenticados com sucesso, o sistema informa o endereço IP para acesso via Interface Web.

Após introduzir o usuário e password vai ter está tela onde iremos ter as informações do IP em nosso Servidor PBX IP.


Com as informações do IP podemos ir até o acesso web via browser.

Já dentro da interface web, devem começar por criar uma conta para acesso à plataforma.

Nos próximos artigos vamos explorar as funcionalidades mais importantes do FreePBX e mostrar como podem realizar algumas configurações.


Licença: GPL

Download: Escolha aqui a sua versão (32 bits ou 64 bits) 

Homepage: Asterisk