Como um tronco no Asterisk para de completar chamadas sem avisar?
Quase sempre o Asterisk continua rodando e o tronco continua configurado, mas algo entre ele e a operadora mudou. O registro expirou e não renovou, o NAT passou a esconder o endereço de mídia, o roteador ligou o SIP ALG ou um bloqueio automático baniu o IP da operadora. Nada fica vermelho, e quem liga ouve silêncio.
As causas mais frequentes:
- Registro expirado. Em troncos com registro SIP, uma senha trocada, um DNS que mudou ou um 401 repetido deixam o tronco sem registro. As chamadas de entrada param de chegar, e a saída pode continuar funcionando, o que esconde o problema.
- NAT e SIP ALG. Um roteador com SIP ALG ativo, ou um
external_media_addresserrado, faz a chamada completar com áudio em um só sentido. - Codec sem par. Uma lista
allowalterada numa atualização faz a operadora responder 488. - Canais esgotados. O limite de chamadas simultâneas do contrato aparece como 503 com causa Q.850 34.
- Bloqueio automático. Uma regra de fail2ban ou de firewall que bane o IP da operadora derruba a entrada sem nenhum erro no PABX.
Onde olhar para cada sintoma?
Cada sintoma tem um rastro diferente no Asterisk. A tabela abaixo liga o que a equipe percebe ao código SIP ou à causa Q.850 que costuma aparecer e ao comando que confirma o diagnóstico. Os comandos são do chan_pjsip; no chan_sip, os equivalentes são sip show registry, sip show peers e sip set debug on.
| Sintoma | Código SIP ou causa | Onde olhar |
|---|---|---|
| Entrada parou, saída funciona | Registro expirado, ou 401 repetido | pjsip show registrations |
| Saída recusada | 403 Forbidden: IP, credencial ou número de origem não aceitos | pjsip set logger on |
| Chamada completa, sem áudio de um lado | NAT ou SIP ALG reescrevendo o SDP | rtp set debug on, external_media_address |
| Recusa logo após o INVITE | 488 Not Acceptable Here: codec sem par | pjsip show endpoint <tronco>, linha allow |
| Recusa nos horários de pico | 503 com causa 34 | core show channels |
| Nenhuma resposta da operadora | 408 Request Timeout | pjsip show contacts, regras de firewall |
O que uma chamada de teste real pega que o Asterisk não mostra?
O Asterisk só enxerga o que chega até ele. Se a operadora deixou de entregar as chamadas do seu número, o CDR fica vazio e nenhum log acusa erro. O qualify pode continuar respondendo, porque um OPTIONS respondido não prova que um INVITE completa. Uma chamada feita de fora, como a de um cliente, mostra exatamente isso.
Ela também julga o resultado completo: se a chamada completou, se o áudio passou nos dois sentidos, se a URA tocou a saudação certa e se a qualidade de voz medida ficou acima do limite combinado.
E no Issabel, o que muda?
O Issabel é uma distribuição baseada no Asterisk, com interface web própria. Por baixo, as falhas são as mesmas, e os comandos da tabela funcionam no console, aberto com asterisk -rvvv. Muitas instalações antigas ainda usam chan_sip, então confira registros com sip show registry e os pares com sip show peers.
Vale olhar também o firewall da própria distribuição e o roteador do local: um Issabel atrás de um link de internet com IP dinâmico perde a entrada quando o IP muda e a operadora autentica o tronco por endereço.
E no FreePBX, onde olhar?
No FreePBX, os troncos ficam em Connectivity > Trunks, e o relatório Asterisk Info mostra registros e pares sem abrir o console. As mesmas falhas valem, mais uma comum: o firewall do FreePBX ou a detecção de intrusão bloqueando o IP da operadora depois de tentativas repetidas.
Depois de uma atualização de módulos, confira a lista de codecs e as opções de NAT do tronco, que são as configurações que mais mudam o comportamento sem mudar o estado na tela.
Como o Monitor monitora um Asterisk?
O Monitor não se integra ao Asterisk, ao Issabel nem ao FreePBX; ele liga para os números, por isso funciona com qualquer um deles. A 2N5 faz chamadas de teste reais no ritmo combinado, repete uma falha antes de alertar e entrega o incidente com o código SIP e a causa Q.850.
Veja como isso funciona em monitoramento de troncos SIP e, para números de atendimento, em monitoramento de 0800 e URA.
Perguntas frequentes
O Monitor instala algum módulo no Asterisk ou no FreePBX?
Não. O Monitor não se integra ao Asterisk, ao Issabel nem ao FreePBX. A 2N5 liga para os números que você indicar, da própria plataforma, como um cliente liga. Por isso funciona com qualquer versão, com chan_sip ou chan_pjsip, e com qualquer operadora.
O qualify do Asterisk não basta para saber se o tronco está no ar?
O qualify manda SIP OPTIONS e mede se o outro lado responde. Ele prova que a sinalização chega, mas não que um INVITE completa, que o número de entrada aponta para o seu servidor ou que o áudio passa nos dois sentidos. Um tronco pode responder ao OPTIONS e recusar toda chamada.
Como saber se o problema é do Asterisk ou da operadora?
Compare o que o Asterisk registrou com o que a chamada de teste recebeu. Se a chamada de fora não chega ao Asterisk, a falha está antes dele, na operadora ou na rede. Se chega e é recusada, a resposta SIP e o log do PJSIP mostram quem recusou e por quê.
As chamadas de teste aparecem no CDR do Asterisk?
Sim, quando o número testado chega ao seu Asterisk. A chamada de teste é uma ligação comum de entrada, então gera registro no CDR como qualquer outra. Ela é curta e vai para o número que você escolheu, como uma URA, um tom de teste ou um serviço de eco.