You are on page 1of 6

Configurando DUNDi en Elastix (asterisk+freePBX) | elajonjoli.

org

http://elajonjoli.org/node/11

Inicio › DUNDi en Elastix

Configurando DUNDi en Elastix (asterisk+freePBX)

Ver

Revisions

Lun, 08/09/2008 - 11:49 — filipok

Existen diversos manuales para configurar DUNDI con asterisk pero este manual describe como configurarlo e integrarlo con freePBX. Empecemos! En este ejemplo tendré tres equipos (SRV01, SRV02 y SRV03) con los siguientes datos: SRV01: IP: 192.168.255.201 MAC: 00:21:5A:49:24:98 SRV02: IP:192.168.255.202 MAC:00:21:5A:49:7E:9E SRV02: IP:192.168.255.203 MAC:00:22:64:08:F4:FE

Certificados de encriptación
DUNDi usa certificados de encriptación RSA para compartir sus planes de marcado, además por que las respuestas a una consulta incluye el passwd de la troncal (que es dinámico). } Usaremos la misma clave para la comunicacion entre todos los servidores. Así que el primer paso es generar los certificados de encriptación uno de los equipos (en este ejemplo en SRV01): SRV01: cd /var/lib/asterisk/keys astgenkey -n SERVERS-DUNDI Ahora necesitamos compartir los certificados entre los dos servidores; esto es para que cada uno pueda desencriptar al otro. Copiar hacia SRV02: scp /var/lib/asterisk/keys/SERVERS-DUNDI.* 192.168.255.202:/var/lib/asterisk/keys Copiar hacia SRV03: scp /var/lib/asterisk/keys/SERVERS-DUNDI.* 192.168.255.203:/var/lib/asterisk/keys

dundi.conf
Vamos a generar este archivo desde el principio, sección por sección: Sección [general]: En esta sección del archivo definimos nuestra propia identificación en la nube DUNDi, así como las opciones globales, debemos rellenar los campos con los datos reales de nuestros equipos (MAC, etc): Para SRV01: [general] ;

1 de 9

12/11/2010 10:33 a.m.

0. Aqui nos identificamos con nuestra MAC address entityid=00:21:5A:49:7E:9E . department=SERVER03 organization=AlgunaOrganizacion locality=Quito stateprov=Pichincha country=EC email=info[at]elajonjoli.org phone=+593-0000000 .org http://elajonjoli. El puerto en el que va a escuchar.bindaddr=0. por defecto 4520 port=4520 . Finaliza las conexiones fallidas autokill=yes Para SRV02: [general] .Aqui podemos definir en que red va a escuchar dundi . . .0. El numero de consultas que va a hacer dundi hasta alcanzar un plan de marcado ttl=12. por defecto 4520 port=4520 . department=SERVER02 organization=AlgunaOrganizacion locality=Quito stateprov=Pichincha country=EC email=info[at]elajonjoli.0. . .org/node/11 department=SERVER01 organization=AlgunaOrganizacion locality=Quito stateprov=Pichincha country=EC email=info[at]elajonjoli. .org phone=+593-0000000 . Finaliza las conexiones fallidas autokill=yes Para SRV03: [general] .Aqui podemos definir en que red va a escuchar dundi .org phone=+593-0000000 .bindaddr=0. El numero de consultas que va a hacer dundi hasta alcanzar un plan de marcado ttl=12 .Configurando DUNDi en Elastix (asterisk+freePBX) | elajonjoli.0.0.0.bindaddr=0.0 .0 . El puerto en el que va a escuchar.m. Aqui podemos definir en que red va a escuchar dundi . Aqui nos identificamos con nuestra MAC address entityid=00:21:5A:49:24:98 .0 2 de 9 12/11/2010 10:33 a.

251.IAX2. Aqui nos identificamos con nuestra MAC address entityid=00:22:64:08:F4:FE .168.251/${NUMBER}.168.dundi:${SECRET}@192.252/${NUMBER}.100.168.permitir y realizar conexiones model=symmetric .nopartial priv => dundi-priv-customers.nopartial Los valores de ${NUMBER} y ${SECRET} se reemplazaran automáticamente.IAX2.dundi:${SECRET}@192.nopartial priv => dundi-priv-customers. . IP ser servidor SRV02 host=192.251.251.252/${NUMBER}.168.251. Para SRV01: [mappings] priv => dundi-priv-canonical.dundi:${SECRET}@192. Finaliza las conexiones fallidas autokill=yes Sección [mappings]: Básicamente aquí definimos nuestra respuesta a una consulta hacia determinado numero que tengamos localmente.168. El puerto en el que va a escuchar.251.dundi:${SECRET}@192.251.168.168.400.IAX2. Identificamos al servidor 2 (SRV02) por su entityid [00:21:5A:49:7E:9E] .nopartial priv => dundi-priv-via-pstn. Incluimos el contexto antes definido en la sección mappings include=priv permit=priv qualify=yes order=primary .255.202 inkey=SERVERS-DUNDI outkey=SERVERS-DUNDI .IAX2.org/node/11 .253/${NUMBER}.IAX2.252/${NUMBER}. IP ser servidor SRV03 3 de 9 12/11/2010 10:33 a.100. El numero de consultas que va a hacer dundi hasta alcanzar un plan de marcado ttl=12.permitir y realizar conexiones model=symmetric .nopartial Para SRV02: [mappings] priv => dundi-priv-canonical.IAX2.251/${NUMBER}. esto lo hacemos asi: Para SRV01: .IAX2.dundi:${SECRET}@192.168.253/${NUMBER}. .IAX2.400.251. por defecto 4520 port=4520 .org http://elajonjoli.m.0. Adicionalmente debemos definir los PEERS que consultaran y serán consultados (con la opción symmetric).dundi:${SECRET}@192.dundi:${SECRET}@192.251.251/${NUMBER}.168.nopartial Para SRV03: [mappings] priv => dundi-priv-canonical.400.nopartial priv => dundi-priv-customers. según el numero que se consulte y la clave aleatoria que se haya generado en ese momento.IAX2.nopartial priv => dundi-priv-via-pstn.100.0.dundi:${SECRET}@192. Identificamos al servidor 3 (SRV03) por su entityid [00:22:64:08:F4:FE] .dundi:${SECRET}@192.168.253/${NUMBER}.nopartial priv => dundi-priv-via-pstn.Configurando DUNDi en Elastix (asterisk+freePBX) | elajonjoli.251.0.

168.permitir y realizar conexiones model=symmetric . Incluimos el contexto antes definido en la sección mappings include=priv permit=priv qualify=yes order=primary .168.m. IP ser servidor SRV01 host=192.168.255.permitir y realizar conexiones model=symmetric .203 inkey=SERVERS-DUNDI outkey=SERVERS-DUNDI .201 inkey=SERVERS-DUNDI outkey=SERVERS-DUNDI . Incluimos el contexto antes definido en la sección mappings include=priv permit=priv qualify=yes order=primary . .255.203 inkey=SERVERS-DUNDI outkey=SERVERS-DUNDI . Identificamos al servidor 1 (SRV01) por su entityid [00:21:5A:49:24:98] .org http://elajonjoli.201 inkey=SERVERS-DUNDI outkey=SERVERS-DUNDI .255. Identificamos al servidor 3 (SRV03) por su entityid [00:22:64:08:F4:FE] .Configurando DUNDi en Elastix (asterisk+freePBX) | elajonjoli.255. Incluimos el contexto antes definido en la sección mappings include=priv permit=priv qualify=yes order=primary Para SRV03: .org/node/11 host=192. IP ser servidor SRV03 host=192.permitir y realizar conexiones model=symmetric . Identificamos al servidor 1 (SRV01) por su entityid 4 de 9 12/11/2010 10:33 a. Identificamos al servidor 1 (SRV01) por su entityid [00:21:5A:49:24:98] .168. Incluimos el contexto antes definido en la sección mappings include=priv permit=priv qualify=yes order=primary Para SRV02: . IP ser servidor SRV01 host=192.

disallow=all . Debemos añadir las siguientes lineas al final del archivo extensions_custom.org/node/11 [00:21:5A:49:24:98] . asi como una macro para hacer las busquedas en otros equipos (lo que evita loops) y la sentencia para redirigir las llamadas (swith). Podemos restringir ciertos codecs para mejorar la calidad de voz. como dundi va a hacer todo el trabajo de enviar la cadena exacta de como contactarlos solo creamos un usuario que recibe las llamadas autenticadas de la nube DUNDi: En SRV01 y en SRV02 [dundi] type=user dbsecret=dundi/secret context=ext-local . allow=ulaw extensions.201 inkey=SERVERS-DUNDI outkey=SERVERS-DUNDI .conf.conf Para lograr la integración con freePBX debemos modificar un poco el contexto "from-internal" que es el contexto que usa freePBX para las extensiones.conf en los dos servidores: .conf Aqui definimos los contextos personalizados para que dundi mapee nuestra extensiones.include => bad-number y agregamos la linea include => dundi-priv-lookup que es un contexto que crearemos luego en el archivo extensions_custom.permitir y realizar conexiones model=symmetric .255. Aqui incluimos el contexto que contiene las extensiones.conf buscamos la sección: [from-internal] include => from-internal-xfer include => bad-number y comentamos la linea include => bad-number poniendo un punto y coma adelante asi: .include => bad-number include => dundi-priv-lookup extensions_custom. . quedando asi: [from-internal] include => from-internal-xfer . ******************************************** . Incluimos el contexto antes definido en la sección mappings include=priv permit=priv qualify=yes order=primary iax_custom.m. o dar prioridad al ancho de banda (con gsm o g729) .Configurando DUNDi en Elastix (asterisk+freePBX) | elajonjoli. 5 de 9 12/11/2010 10:33 a.conf Aquí debemos definir la configuración de la troncal. IP ser servidor SRV01 host=192.168.org http://elajonjoli. CONFIGURACION PARA DUDNi [dundi-priv-canonical] . Teniendo en cuenta que cuando un numero no es encontrado en el plan de marcado local se usa el contexto [bad-number] es alli donde debemos modificar y la configuración debe ser exactamente la misma en los tres servidores: En el archivo extensions.

n. Aqui incluimos el contexto que contiene las colas de atención o queues. Si nosotros tenemos la extensión responderemos con los datos para la comunicación hacia esa extensión.${EXTEN}.m. include => ext-queues [dundi-priv-customers] . .n. si queremos que los demas equipos puedan usar nuestras troncales .Macro(dundi-priv.conf para comunicarse con la extensión local.Configurando DUNDi en Elastix (asterisk+freePBX) | elajonjoli.${EXTEN}) exten => _X..GotoIf($["${DIALSTATUS}" = "BUSY"]?100) exten => _X. ******************************************** Aplicar la configuración Para que los cambios se hagan efectivos podemos ejecutar el comando: asterisk -rx "restart when convenient" o si no queremos esperar: asterisk -rx "restart now" Resumen Ahora cada extensión que creemos desde freePBX se añadirá al contexto [ext-local] el cual esta incluido en dundipriv-canonical que va a usar dundi para indicar que extensiones tenemos localmente.1) switch => DUNDi/priv . include => outbound-allroutes [dundi-priv-local] . exten => _X. esos datos a su ves los interpreta el servidor que esta preguntando y usa la función switch que pusimos en el archivo extensions_custom.org http://elajonjoli..Goto(${ARG1}. Si tenemos clientes (o revendemos servicios) podemos listarlos aqui [dundi-priv-via-pstn] . Esta es la macro que llamamos desde el contexto [dundi-priv-lookup] . . ..n.Goto(bad-number. Tambien evita que hayan loops en las consultas dundi. contexto de la troncal iax de dundi include => dundi-priv-canonical include => dundi-priv-customers include => dundi-priv-via-pstn [dundi-priv-lookup] . ya que si no tendremos un caller id como "device<0000>".1. Antes de hacer la busqueda definimos apropiadamente nuestro caller id.101. En este contexto unificamos los tres contextos..org/node/11 include => ext-local . Aqui podemos incluir el contexto con nuestras troncales hacia la PSTN..1. este lo podemos usar como ..Macro(user-callerid) exten => _X.Playtones(congestion) exten => _X.100. Este contexto se encarga de hacer la busqueda de un numero por dundi . exten => s.Congestion(10) [macro-dundi-priv] .1) exten => _X. ‹ DUNDi en Elastix arriba Integrando IVR en una red DUNDi con Elastix (usando FreePBX) › Versión para impresión Añadir nuevo comentario Asterisk VoIP Comentarios 6 de 9 12/11/2010 10:33 a.