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