Asterisk - 2 ou mais SIP Trunks para o mesmo IP

Introdução Muitas pessoas relatam dificuldades em realizar mais de um SIP Trunk para o mesmo IP utilizando o Asterisk. A principal dificuldade é no recebimen...

Asterisk - 2 ou mais SIP Trunks para o mesmo IP

Introdução

Muitas pessoas relatam dificuldades em realizar mais de um SIP Trunk para o mesmo IP utilizando o Asterisk. A principal dificuldade é no recebimento de chamadas, onde o recebimento não costuma obedecer o siptrunk correto, caindo em contexto errado.

Algumas pessoas (pra não dizer todas até hoje) relatam que "não é possível" ou que "o asterisk não funciona bem neste cenário", enquanto na verdade existe falha de configuração.

Neste post explicarei a forma correta de realizar "N" SIP trunks entre 2 asterisk servers. Lembrando que apresentarei a forma simplificada, visando atender o maior número de pessoas possíveis. Porém, pode ser necessário alguns ajustes finos extras para cada situação.

 

Topologia

Server A - sip.conf [general] match_auth_username=yes [trunk-A] type=friend qualify=yes host=10.0.200.182 context=from-trunk-A defaultuser=trunk-A secret=123 [trunk-B] type=friend qualify=yes host=10.0.200.182 context=from-trunk-B defaultuser=trunk-B secret=456   Server A - extensions.conf [teste] exten => 4,1,Dial(SIP/trunk-A/2002) exten => 5,1,Dial(SIP/trunk-B/2002)   Server B - sip.conf [general] match_auth_username=yes [trunk-A] type=friend host=10.0.200.114 context=contexto-A qualify=yes defaultuser=trunk-A secret=123 [trunk-B] type=friend host=10.0.200.114 context=contexto-B qualify=yes defaultuser=trunk-B secret=456

 

Server B - extensions.conf [contexto-A] exten => _X.,1,NoOp(Entrou SIP TRUNK - A) exten => _X.,n,Hangup [contexto-B] exten => _X.,1,NoOp(Entrou SIP TRUNK - B) exten => _X.,n,Hangup   Realizando Chamada

Server A:
Enviando chamada via SIP Trunk A, usando o comando:
console dial 4@teste

Server B:
Veja o que o Server B recebeu a chamada corretamente através do trunk-A:

Agora fazendo a mesma chamada, porém pelo trunk-B.

Server A:
Enviando chamada via SIP Trunk B, usando o comando:
console dial 5@teste

Server B:
Veja o que o Server B recebeu a chamada corretamente através do trunk-B:

 

Detalhes Importantes

Note que não foi necessário usar o famoso "insecure=port,invite", graças a opção "match_auth_username=yes" configurada no general, funcionando em conjunto com a opção "defaultuser".

Isso fará com que o a origem seja validada com base no campo "Authorization" do SIP, e não mais do campo "From".

Veja abaixo como fica o SIP Flow desta chamada:

Desta forma, fica comprovado que é possível utilizar SIM 2 troncos ou mais utilizando o mesmo IP, em um mesmo asterisk server. Cada um com o seu devido sip trunk funcionando corretamente.

Adicionalmente você também pode usar uma conta por registro e outra por IP conforme aqui apresentado. Sem problemas, funcionará normalmente!

 

Conclusão

O asterisk é TOP demais! =)

Voltar ao blog

Quer levar voz e PABX para a sua base?

Uma conversa de 30 minutos, sem compromisso. A gente mostra quanto a sua base pode render.