DUNDi pt. 2

Servidor1: ip = 192.168.0.1/24
Servidor2: ip = 192.168.0.2/24

OBS1.: Todas as configurações mostradas serão realizadas no servidor1. Para o servidor2 será igual, só invertendo os campos definidos. Exemplo: Quando apontar para o ip do servidor2, a configuração do servidor2 irá apontar para o ip do servidor1 e assim por diante.

No último artigo descrevi um pouco da história do DUNDi, neste colocarei as configurações. Vamos começar com o entroncamento IAX2 entre os servidores.

#cd /etc/asterisk/
#vim iax2.conf

Dentro do arquivo crie ( crtl+c / crtl+v :p ):

[dundi]
type=friend
dbsecret=dundi/secret
context=entradaDUNDi

O parâmetro “dbsecret” é a senha usada pelo DUNDi, o “dundi/secret” é a senha do DUNDi no AstDB. Ele gerará uma nova à cada hora. Você pode verificar no console do asterisk com o comando:

Asterisk*CLI> database show

Agora vamos partir para o dundi.conf. Neste arquivo você setará as relações entre servidores e suas respectivas respostas. O DUNDi usa sua própria porta de comunicação e troca de mensagens. Esta porta é a UDP 4520. As ligações serão transportadas pelo canal IAX2, ou seja, a comunicação do DUNDi e as ligações não são transportadas juntas. Vamos ao arquivo do servidor1:

# vim dundi.conf

[general]
department=Departamento da empresa
organization=Nome da Empresa
locality=Cidade
stateprov=Estado
country=País
email=Seu email
phone=Seu telefone

What hell??? Para o que servirá isso? Simples! Da mesma forma que você pode utilizar o DUNDi localmente entre dois servidores, você poderá criar uma super ultra mega rede com o DUNDi. Imagine que você tenha 10 servidores interligados via DUNDi? Essas configurações irão ajudá-lo a interpretar as comunicações entre os servidores (saber quem tá enviando e recebendo requisições.) e saber em qual você está mexendo. Isso é muito utilizado em configurações de roteadores (de uma forma diferente é claro).

;bindaddr=0.0.0.0

;port=4520

entityid=00:B0:D0:CC:5C:E8 ;Coloque o mac-address de sua NIC aqui. Por default ele pegará a primeira placa configurada.

cachetime=5 ;Define o tempo de validade de uma consulta DUNDi. Serve para evitar loops infinitos de consulta.

ttl=2 ;Define o número de saltos que o pedido DUNDi pode possuir antes de ser descartado.

autokill=yes ;Define o que acontece quando um ACK não é recebido depois de 2 segundos. No caso de “yes” ele derruba a chamada.

[mappings]
dundi=>dundiExtens,0,IAX2,dundi:${SECRET}@192.168.0.1/${NUMBER},nopartial

O mapeamento segue a seguinte sintaxe:

dundiContext => dundiExtens,peso,tecnologia,destino[,opções]

dundiContext: Nome do contexto utilizado pelo DUNDi em suas consultas.

dundiExtens: Nome do contexto que o DUNDi verificará se o ramal existe.

peso: É o peso para resposta de verificação. Quanto menor o valor, maior prioridade.

tecnologia: Tecnologia do ramal desejado. Ex.: SIP.

destino: Define o destino para encontrar o ramal desejado.

opções: São opções para o mapeamento. No caso foi definido “nopartial” (Sem parcial), ou seja, o DUNDi só proverá a resposta se o requisição bater exatamente com as extensões que ele possui.

[00:B0:D0:CB:80:7A] ;Mac do servidor2
model = symmetric
host = 192.168.0.2 ;IP do servidor2
inkey = dundi
outkey = dundi
include = priv
permit = priv
qualify = yes
order = primary

Os servidores usarão a mesma chave (inkey e outkey). Para gerar as chaves:

#cd /var/lib/asterisk/keys
#astgenkey -n priv

O comando irá criar dois novos arquivos neste diretório que são: priv.key e priv.pub. Agora copie as duas chaves para o sevidor2.

IMPORTANTE: insira a linha “regexten=dundiExtens” no generals do sip.conf. Com essa linha o ramal sip que se logar irá inserir uma extensão no contexto dundiExtens. Assim quando o DUNDi for procurar pela extensão no dundiExtens, ela estará lá! 😉

Vamos configurar o extensions.conf do servidor1:

#vim extensions.conf

[ramais] ;Contexto dos seus ramais internos.
exten => _8XXX,1,ChanIsAvail(SIP/${EXTEN})
;Verifica se o ramal está registrado.
exten => _8XXX,2,GotoIf( $[ "${AVAILCHAN}" = "5" ]?dundi:disca)
;AVAILCHAN = 5 significa que o ramal está UNAVALIABLE (não está registrado).
exten => _8XXX,3(disca),Dial(SIP/${EXTEN},120,Ttr)
exten => _8XXX,4,Hangup()
exten => _8XXX,5(dundi),Goto(dundiLookup,${EXTEN},1
exten => _8XXX,6,Hangup()

[dundiLookup] ;Envia a requisição para o DUNDi.
switch => DUNDi/dundi

[dundiExtens] ;Quando os ramais se registrarem serão inseridos aqui.

[entradaDundi] ;Configurado no tronco IAX2.
exten => _8XXX,1,Goto(ramais,${EXTEN},1)

Salve o arquivo e entre no console do Asterisk.

Asterisk*>reload

Agora é só realizar as configurações no servidor2!
OBS2.: Os módulos usados à principio carregam automaticamente com o Asterisk. Caso não ocorra, abra o arquivo /etc/asterisk/modules.conf e insira as seguintes linhas:

load => pbx_dundi.so
load => res_crypto.so
load => app_chanisavail.so

OBS3.: As configurações aqui foram realizadas no Asterisk versão 1.6.0.24. Portanto, se você usa outra versão, leia os samples dos arquivos para realizar as modificações necessárias para sua versão.

Acho que é isso! Caso não consigam configurar é só me mandar um e-mail ou deixar um comentário.

Esse post foi publicado em Artigos, Tutoriais e marcado , . Guardar link permanente.

Deixe um comentário