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! =)

Ronaldo Sacco
Sócio Co-Fundador da SaperX. Diretor Técnico. Especialista em SIP, Asterisk e programação de alto desempenho. O cara que faz a vaca voar.
Post criado 23

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados

Comece a digitar sua pesquisa acima e pressione Enter para pesquisar. Pressione ESC para cancelar.

De volta ao topo