Mudanças entre as edições de "PJI011104 - Projeto Integrador IV - 2022-1"
Linha 589: | Linha 589: | ||
==Resolução de problemas== | ==Resolução de problemas== | ||
− | ===PROBLEMA: Não está sendo possível acessar o servidor Asterisk de uma outra máquina | + | ===PROBLEMA: Não está sendo possível acessar o servidor Asterisk de uma outra máquina=== |
+ | |||
+ | '''Solução: Liberação de portas do firewall para funcionamento do Asterisk''' | ||
<code> | <code> |
Edição das 21h43min de 5 de julho de 2022
Dados importantes
Professor
- Professor da Disciplina: Adilson Jair Cardoso e Cleber Jorge Amaral
- Email: adilson.jair@ifsc.edu.br e cleber.amaral@ifsc.edu.br
Turma virtual
- Acesse o sigaa bucando a disciplina PJI011104 - PROJETO INTEGRADOR IV (2021.2 - T01)
Aulas síncronas não presenciais
- Horários
- segundas e terças-feiras das 19:00 às 22:00
- sábados letivos serão com atividades assíncronas.
- Mais informações ver SIGAA
Aulas presenciais
- Horários
- Em condições de aulas presenciais: Sala 05, Laboratório Interativo e Meios de transmissão
Organização curricular
Roteiro de instalação do Asterisk
Passo 0: Requisitos para instalação do Asterisk |
---|
|
Passo 1: Preparando a máquina virtual que será o servidor Asterisk |
---|
Considerando a instalação do Asterisk em uma máquina virtual Ubuntu, as informações a seguir se referem ao que deve ser feito dentro da máquina virtual. 1) Certifique-se de ter uma máquina virtual linux para instalar o Asterisk (recomendável que tenha ao menos 20GB de espaço em disco - você pode criar uma máquina virtual vazia, baixar uma das versões testadas do linux no formato ISO e utilizar esse arquivo como um CDROM para fazer a instalação) 2) Como serão feitos vários comandos que requerem privilégio de administrador, realize o seguinte comando para chavear o terminal para o modo de administração (root):
Obs.1: Digite a senha de seu usuário (que necessariamente precisa ser um usuário que tenha privilégio de se tornar super usuário - pertencente ao grupo sudoers). Obs.2: No comando acima foi utilizando o símbolo Obs.3: Como regra de ouro, procure sempre estar atento as mensagens impressas no terminal. Diversos problemas podem ocorrer e muitas vezes estes são fáceis de resolver apenas seguindo as orientações impressas em casos de falhas. Caso não consiga resolver o problemas pelas próprias informações dadas, copie o erro dado e cole no google para verificar se outros usuários já experimentaram este problema e se há orientações de como resolvê-lo. 3) Certifique-se de que o sistema operacional da máquina virtual esteja atualizado:
4) Instalando as bibliotecas requeridas pelo Asterisk:
5) Instalando o gerenciador de banco de dados MySQL:
Obs.: Será utilizada a senha |
Passo 2: Intalando o Asterisk e realizando a configuração inicial do Asterisk |
---|
1) Baixe o arquivo tar.gz do Asterisk disponibilizado (versão 13.38.3) e mova para a pasta /usr/src. 2) Certifique-se de estar na pasta /usr/src:
3) Descompacte o arquivo tar.gz com o comando:
4) Entre na pasta descompactada digitando:
5) Realize a compilação do Asterisk
6) Realize a configuração da instalação
Na tela de configuração marque a opção 7) Realize a instalação
Se o serviço subiu e o rasterisk rodou bem, deu tudo certo, você pode sair da interface cliente.
|
Passo 3: Configurando o banco de dados MySQL para o Asterisk |
---|
1) Inicializando o serviço MySQL
Após a execução é possível verificar se o serviço está rodando com o comando 2) Entrar no cliente MySQL:
Digite a senha 3) Verifique as bases de dados existentes com o comando:
Deve aparecer uma listagem contento as bases information_shema, mysql, performance_schema e sys. 4) Crie a base para armazenamento de gravações do Asterisk (cdr):
Executando novamente 5) Crie um usuário para o Asterisk:
6) Entre na base de dados cdr:
No momento a base de dados está vazia (pode-se verificar isso com o comando 7) Crie a tabela
O comando 8) Para sair do cliente MySQL digite:
|
Passo 4: Pré-configuração do gravador de chamadas do Asterisk |
---|
Está sendo utilizado o editor de textos 1) Abra o arquivo cdr.conf para edição:
2) Configure a forma de gravação de dados de chamadas: No vim para entrar em modo de edição, digite
Feche e salve o arquivo clicando emn 3) Abra o arquivo cdr_mysql.conf para edição
4) Adicione a configuração para uso do banco MySQL para gravação de dados:
|
Passo 5: Pré-configuração do Asterisk |
---|
1) Edite o arquivo asterisk.conf:
2) Ative o modo verboso do Asterisk para que ele exiba mensagens detalhadas em tela.
3) Reinicie o serviço Asterisk
4) Entre no console do Asterisk
5) Verifique se o cdr está configurado
Deve ser exibido que Logging está habilitado e o mysql está listado no backend. |
Passo 6: Configurando ramais sip no arquivo sip.conf |
---|
1) Abra o arquivo
2) No fim do arquivo, adicione o ramal 1000 com permissão para realizar e receber chamadas (friend) e senha 1234 [1000] type=friend secret=1234 host=dynamic qualify=yes 3) Abra o rasterisk
4) Como o arquivo sip.conf foi modificado, recarregue o serviço asterisk com esse novo conteúdo:
5) De dentro da máquina virtual, abra um softphone como o Zoiper utilizando como parâmetros:
|
Roteiro de instalação do Asterisk com freepbx utilizando docker
Pré-requisitos |
---|
Ter o Docker instalado na máquina hospedeira |
Instalação básica do Asterisk com freepbx para testes |
---|
Instalação básica via docker com banco de dados MySQL embutido. Obs.: Há diferentes imagens docker que trazem o Asterisk já previamente configurado, neste tutorial utilizaremos a imagem disponibilizada em [1]. 1) Baixando a imagem docker tiredofit/freepbx:
Obs.: No lugar de latest, pode-se utilizar outra tag. Este tutorial foi realizado com a versão 15, portanto, para baixar a exata imagem que foi utilizada neste tutorial utilize o comando Aguarde a realização do download completo. Verifique se a imagem baixada está aparecendo na lista de imagens disponíveis no docker local.
2) Subindo um contêiner baseado na imagem Antes de subir o contêiner, podemos verificar se já há algum contêiner rodando. Espera-se que neste momento ainda não haja nenhum contêiner baseado na imagem
Para subir o contêiner, rode (esse contêiner está sendo apelidado de
Este comando pode demorar alguns minutos (até 30). O terminal deve apresentar uma série de procedimentos de inicialização que são executados dentro do contêiner que incluem s6-init, fix-attrs, cont-init e a criação dos arquivos padrão para freepbx, utilização de "embedded db" no CDR, além da inicialização do WebServer para a interface freepbx. O último comando deve ser a inicialização do zabbix e do cron. 3) Acessando a interface Web do freepbx. Para acessar a interface, é necessário saber o endereço IP do sistema que roda dentro do contêiner, para isso: 3.1) Abra um outro terminal 3.2) Verifique se o contêiner está rodando com o comando 'docker ps' (a seguir um exemplo de resposta):
3.3) Conecte este novo terminal ao contêiner que foi apelidado de
3.4) Obtenha o endereço IP do contêiner com o comando
Portanto, neste exemplo, o IP do contêiner é 172.17.0.2. 3.5) Para acessar a interface Web do freepbx, abra o browser e digite http://<IP do contêiner>/admin. Neste exemplo ficou http://172.17.0.2/admin Obs.: Para desconectar o terminal do contêiner, digite 4) Daqui em diante as configurações devem seguir a interface do freepbx que permite inclusive adicionar idiomas e arquivos de áudio. Obs.: Os arquivos de configuração do Asterisk podem ser consultados em 5) Para encerrar o contêiner, pressional 6) Para reiniciar o contêiner que foi criado anteriormente
ATENÇÃO: Após derrubar o contêiner, se for dado novo comando Para aplicações finais (em ambiente de produção), a utilização do banco de dados embutido no contêiner docker do Asterisk não é recomendada pois no caso de perda deste contêiner, as informações do bando de dados também serão perdidas. Para evitar isso, utiliza-se um arquivo de banco de dados externo ao contêiner, além de que uma instalação profissional também deve estar associada a configurações extra de segurança tanto de acesso ao sistema quanto de backup de dados. |
Instalação de um abiente de produção do Asterisk com freepbx |
---|
A instalação via docker apresentada para testes utiliza banco de dados embutido no container, o que é ruim pois a perda do container acarreta em perda dos dados do banco e também não trata de backup dos dados do banco. Nesta instalação para ambiente de produção, estes problemas são solucionados. Para isso está sendo utilizada a ferramente docker-compose, um orquestrador de contêineres, que concorre, em termos de funcionalidades, com a conhecida ferramenta kubernetes. No docker-compose um arquivo no formato yml descreve os contêineres que deve ser carregados, suas configurações entre outros parâmetros como a configuração de rede a qual os contêineres estão conectados. Para este tutorial será utilizado o exemplo dado por [2] na pasta
Todos os contêineres estão sob o "guarda-chuva" de um proxy reverso provido por uma rede chamada nginx-proxy. Na prática, o proxy reverso é um "guarda-chuva" do lado servidor. O nginx é um servidor web, que neste caso está sendo utilizado como "porta de entrada" para serviços providos por este conjunto de contêineres. Procedimento: 1) Para subir esse conjunto de contêineres exemplo, é necessário baixar o arquivo 2) Crie a rede nginx-proxy:
3) Para carregar o conjunto de contêineres, estando na pasta onde está o arquivo
Ao subir os multiplos contêineres, deve ser possível observar as mensagens de carregamento de serviços nestes diferentes contêineres (freepbx-db, freepbx-db-backup e free-pbx-app) 4) Para verificar se os contêineres estão rodando, em um outro terminal digite:
Deve ser possível ver três contêineres ativos. 4) Para conectar o terminal a um contêiner, por exemplo o freepbx-app, digite:
Obtenha o IP da máquina da aplicação freepbx utilizando a mesma lógica apresentada no ambiente de testes. Para desconectar, digite |
Roteiro de instalação do Asterisk (apenas) utilizando docker
Pré-requisitos |
---|
Ter o Docker instalado na máquina hospedeira |
Instalação do Asterisk de demonstração |
---|
1) Clonando o repositório https://github.com/mlan/docker-asterisk:
Aguarde a realização do download completo. 2) Entre na pasta demo do repositório baixado
3) De dentro da pasta demo, para subir o contêiner de teste digite:
4) De dentro da pasta demo, para conectar com o console do Asterisk que está dentro do contêiner de teste digite:
5) Do console do Asterisk pode-se executar diversos comandos, por exemplo, para listar os endpoints configurados, digite (observe que esse contêiner utiliza a bibioteca pjsip):
Obs.: Para sair do console digite 6) Para conectar o terminal com o contêiner, de dentro da pasta demo, digite:
6.1) Para entrar no console do Asterisk digite:
|
Informações adicionais
Descrição da tabela cdr_table
Alguns dos campos da tabela cdr_table são:
- calldate: data e hora da chamada
- clid: identificador único da chamada
- src (source): quem fez a chamada (de onde originou a chamada)
- dst (destino): destino da chamada
- monitor: nome do arquivo de áudio que contém a gravação da chamada
Pastas do asterisk
/usr/src
: Pasta utilizada neste tutorial para armazenar o asterisk-13.38.3.zip e os arquivos descompactados./var/lib/asterisk
: Para com binários, incluindo arquivos de áudio/etc/asterisk
: Para com arquivos de configuração
Entendendo os parâmetros de configuração do Asterisk
Tipos SIP:
- peer: Entidade SIP a qual o Asterisk envia chamadas (exemplo: um telefone ou central que que só recebe chamadas).
- user: Entidade SIP a qual executa chamadas através do Asterisk (exemplo: um telefone que só faz chamadas).
- friend: Entidade SIP que pode fazer e receber chamadas.
qualify:
- yes: O Asterisk testa de tempos em tempos se o dispositivo (terminal) está acessível (por padrão a cada 2 segundos)
host
- dynamic: utilizado quando o IP do ramal não é fixado (caso comum de utilização de DHCP)
Comandos rasterisk
Mostra lista de comandos:
CLI> help
, ou executando: $ asterisk -r -x "help"
Sair da interface cliente:
CLI> quit
Recarrega configurações SIP:
CLI> sip reload
Recarrega todas as configurações:
CLI> reload
Mostra status dos terminais cadastrados:
CLI> sip show peers
Resolução de problemas
PROBLEMA: Não está sendo possível acessar o servidor Asterisk de uma outra máquina
Solução: Liberação de portas do firewall para funcionamento do Asterisk
# iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT
# iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
PROBLEMA: Asterisk não está mais subindo depois que a máquina foi reiniciada
Solução: reinstalar o Asterisk (sem modificar os arquivos de configuração que já tenham sido editados)
Tente subir o serviço manualmente
$ sudo su
# service asterisk start
# service asterisk status
Se pelo comando status o serviço não subiu, tente reinstalar o Asterisk:
$ sudo su
# cd /usr/src/asterisk-13.38.3/
# make install
# service asterisk start
PROBLEMA: O softphone não está conectando, exibindo Request Timeout (code 408)
Solução: Certificar que o Asterisk está acessível ao cliente softphone
Os principais motivos de o softphone não estar alcançando o serviço Asterisk, pode ser por um problema de rede, erro na configuração do domínio/servidor SIP e também pode ser que o serviço Asterisk não esteja ativo. Dentre as ações:
- Revise as configurações de IP do servidor e no softphone
- Pingue a máquina servidora da máquina cliente
- Verifique se o serviço Asterisk está rodando adequadamente
- Verifique se o firewall não está bloqueando o serviço Asterisk
PROBLEMA: O softphone não está conectando, exibindo Forbidden (code 403)
Solução: Checar arquivo sip.conf e certificar que foi o Asterisk está com o sip.conf atualizado
Se o softphone não está conectando é possível que não exista um ramal com o identificação utilizada no softphone e também pode ser que o Asterisk não está atualizado com o sip.conf mais atual. Dentre as ações:
- Revise as configurações no arquivo
sip.conf
- No rasterisk, recarregue o sip
CLI> sip reload