Como conectar seu PABX Asterisk/FreePBX a um trunk SIP (passo a passo)
Conectar um Asterisk ou FreePBX a um trunk SIP é uma tarefa de 30 minutos quando você sabe exatamente o que preencher — e uma tarde inteira quando descobre os detalhes de NAT na tentativa e erro. Este guia percorre o caminho completo: configuração do tronco em pjsip, rotas de saída e entrada, ajustes de firewall e o checklist de testes antes de colocar em produção.
O que você precisa antes de começar
- Credenciais do tronco: endereço do servidor SIP, usuário e senha (ou a liberação do seu IP fixo, se optar por autenticação peer).
- Asterisk 16+ com PJSIP ou FreePBX 15+. O driver
chan_sipestá descontinuado; tudo aqui usachan_pjsip. - Acesso ao roteador ou firewall da rede onde o PABX vive, para liberar as portas corretas.
- Um número para testes — o seu celular resolve.
Neste exemplo usamos credenciais fictícias: troque usuario_trunk e senha_forte_aqui pelos valores que o seu provedor enviou.
Caminho 1: FreePBX pela interface
No FreePBX, vá em Connectivity → Trunks → Add Trunk → Add SIP (chan_pjsip) Trunk e preencha:
- Trunk Name:
sipvoip(ou o nome do seu provedor). - Outbound CallerID: o número validado que sairá como identificador, no formato E.164 sem o "+" — por exemplo,
553299998888. - Na aba pjsip Settings → General: Username
usuario_trunk, Secretsenha_forte_aqui, SIP Serversip.seuprovedor.com.br, SIP Server Port5060. - Em Advanced: DTMF Mode
RFC 4733(o sucessor direto do RFC 2833), Qualify Frequency60. - Em Codecs: marque apenas
alaw,ulaweg729, nessa ordem.
Salve, aplique a configuração e confira o registro em Reports → Asterisk Info → Registries. O estado esperado é Registered.
Caminho 2: Asterisk puro com pjsip.conf
Sem interface gráfica, o tronco completo em /etc/asterisk/pjsip.conf tem quatro blocos: registration, auth, aor e endpoint, mais um identify para casar as chamadas entrantes.
[reg-sipvoip]
type = registration
outbound_auth = auth-sipvoip
server_uri = sip:sip.seuprovedor.com.br
client_uri = sip:[email protected]
retry_interval = 60
[auth-sipvoip]
type = auth
auth_type = userpass
username = usuario_trunk
password = senha_forte_aqui
[aor-sipvoip]
type = aor
contact = sip:sip.seuprovedor.com.br
qualify_frequency = 60
[trunk-sipvoip]
type = endpoint
context = entrada-trunk
disallow = all
allow = alaw,ulaw,g729
outbound_auth = auth-sipvoip
aors = aor-sipvoip
from_user = usuario_trunk
dtmf_mode = rfc4733
direct_media = no
rtp_symmetric = yes
force_rport = yes
rewrite_contact = yes
[identify-sipvoip]
type = identify
endpoint = trunk-sipvoip
match = sip.seuprovedor.com.br
Recarregue com pjsip reload no CLI e verifique: pjsip show registrations deve exibir Registered, e pjsip show endpoints deve listar o tronco como disponível.
As três últimas opções do endpoint — rtp_symmetric, force_rport e rewrite_contact — são o trio que resolve a maioria dos problemas de NAT. Deixe as três em yes sempre que o PABX estiver atrás de um roteador.
Rota de saída e rota de entrada
Com o tronco registrado, falta dizer ao Asterisk quando usá-lo. No dialplan puro, uma rota de saída mínima fica assim:
[saida-brasil]
exten => _0XXXXXXXXXX,1,Set(CALLERID(num)=553299998888)
same => n,Dial(PJSIP/${EXTEN:1}@trunk-sipvoip,60)
same => n,Hangup()
No FreePBX, o equivalente é Connectivity → Outbound Routes, com o padrão de discagem da sua região e o tronco recém-criado na sequência de troncos. Para a entrada, crie o contexto entrada-trunk (ou uma Inbound Route no FreePBX) apontando o DID recebido para a URA, fila ou ramal desejado. O DID chega no cabeçalho To exatamente como foi contratado — confirme com o seu provedor se vem com DDI (55) ou apenas DDD e número.
NAT e firewall: onde 90% dos chamados nascem
O SIP separa sinalização e mídia, e é por isso que "a chamada completa mas fica muda" é o sintoma clássico de firewall mal liberado. Regras práticas:
- Sinalização: libere a porta
5060/UDPde saída para o IP do provedor. Não faça encaminhamento de porta aberto para o mundo — o registro parte do PABX para fora, e a resposta volta pela mesma sessão. - Mídia (RTP): libere a faixa
10000–20000/UDP, a mesma definida em/etc/asterisk/rtp.conf. Se você reduziu a faixa nortp.conf, reduza igual no firewall. - Desligue o SIP ALG do roteador. Esse "ajudante" reescreve pacotes SIP e costuma quebrar registro e áudio de formas criativas.
- Se o PABX está atrás de NAT com IP público conhecido, declare-o no transporte:
external_media_addresseexternal_signaling_addressno blocotype = transport.
Checklist de testes antes de virar produção
- Saída para fixo e para celular: áudio nos dois sentidos desde o primeiro segundo.
- Entrada em todos os DIDs: cada número deve cair na rota correta.
- CID: o número apresentado no destino é o que você configurou (lembre-se de que provedores sérios exigem validação de titularidade do número).
- DTMF: ligue para uma URA externa e digite opções; se nada acontecer, revise o
dtmf_mode. - Chamadas simultâneas: ocupe todos os canais contratados de uma vez e confirme que a última chamada excedente recebe ocupado, não silêncio. Se ficou na dúvida sobre quantos canais contratar, veja o nosso guia de dimensionamento com Erlang B.
- Queda e reconexão: derrube a internet por um minuto e confirme que o registro volta sozinho.
Erros comuns e diagnóstico rápido
- 401/403 no registro: usuário ou senha incorretos, ou o seu IP mudou (no modo peer). Compare os prós e contras dos dois modos em registro SIP ou IP autenticado.
- 488 Not Acceptable Here: desencontro de codecs. Garanta
alaw,ulawoug729nos dois lados. - Áudio em um sentido só: faixa RTP bloqueada ou SIP ALG ligado. Reveja a seção de NAT acima.
- Registro cai a cada poucos minutos: o roteador está expirando a sessão UDP; reduza o intervalo de registro ou ative
qualify_frequency = 60.
Com o tronco estável, o PABX vira só mais um serviço bem-comportado da sua rede. E se a operação evoluir para algo além de voz — URA com integrações, gravação, WhatsApp e API —, vale conhecer plataformas de telefonia em nuvem que complementam o tronco com essa camada de aplicação.
Resumo
Tronco em pjsip com quatro blocos, NAT resolvido com rtp_symmetric + force_rport + rewrite_contact, firewall liberando 5060/UDP e 10000–20000/UDP, SIP ALG desligado e um checklist de testes honesto antes do go-live. Seguindo essa ordem, a configuração do trunk SIP deixa de ser um rito de passagem e vira o que deveria ser: meia hora de trabalho previsível.
Precisa de um tronco para chamar de seu?
Canal tarifado por R$ 39,90/mês ou ilimitado por R$ 129,90/mês, com credenciais no mesmo dia e suporte de engenharia na primeira chamada de teste.
Ver planos da SipVoip