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.