Archive for Marzo 6th, 2009

Zimlet de integración Asterisk – Zimbra

Digium y Zimbra parece que llevan tiempo siendo amiguetes.  Incluso hicieron unas curiosas declaraciones donde daban por sentado que iban a desarrollar medios de integración para las dos tecnologías… allá por el 2006.

Existe un Zimlet bastante práctico que nos da la funcionalidad de “click-to-call” y de enviar SMS a través de la interfaz web de Zimbra. De momento no funciona con Zimbra Desktop. También hay un par de zimlets oficiales que viene con la propia instalación de Zimbra, pero están dentro de la rama experimental. Este por lo menos está bastante probado y según he podido leer por los foros tiene a la gente satisfecha. Vamos al lío…

astzim

Descargamos el zimlet de la web oficial de sus desarrolladores. Para instalarlo necesitamos realizar modificaciones tanto en el servidor Zimbra como en el servidor Asterisk. Primero subimos el archivo zip a la carpeta /opt/zimbra/zimlets y lo instalamos usando el comando

zmzimletctl install /opt/zimbra/zimlets/ch_bnc_asterisk.zip

Este comando se encuentra dentro de la carpeta /opt/zimbra/bin. A continuación, extraemos el archivo XML de configuración para editar los parámetros específicos de nuestro servidor Asterisk y lo dejamos en la carpeta /tmp por ejemplo.

zmzimletctl getConfigTemplate
/opt/zimbra/zimlets/ch_bnc_asterisk.zip >
/tmp/ch_bnc_asterisk_config.xml

Editamos el archivo ch_bnc_asterisk_config.xml donde tendremos que cambiar:

  • IP o nombre dns de nuestro servidor asterisk.
<property name="astManagerIp">111.111.111.111</property>
  • Puerto de Asterisk Manager, por defecto el 5038.
<property name="astManagerPort">5038</property>
  • Usuario y contraseña del usuario de Asterisk Manager que ejecutará los comando enviado por el zimlet. Necesita privilegios de call y command. De momento nos lo podemos inventar, ya que lo daremos de alta más adelante.
<property name="astManagerUser">usuario</property>
<property name="astManagerSecret">contraseña</property>
  • El contexto. En mi caso, from-internal.
<property name="astDialContext">from-internal</property>
  • El tipo de canal en uso por las extensiones para crear correctamente el comando de click-to-call. Si tienes extensiones SIP, pues SIP. Si tienes extensiones analógicas, pues ZAP. No lo he probado con IAX, ahora que lo pienso…
<property name="astDialChannelType">SIP</property>

Estas con las configuraciones básicas para que el invento funcione, pero tiene algunas más relacionadas con el marcado y el uso de prefijos.  El siguiente paso consiste en cargar la nueva configuración para que el zimlet conecte con nuestro servidor Asterisk. Usaremos el mismo comando de antes y luego reiniciaremos el servicio de mailboxd:

zmzimletctl configure /tmp/ch_bnc_asterisk_config.xml
zmmailboxdctl restart

Ahora debemos crear un usuario en el servidor Asterisk con los privilegios necesarios para poder comunicarse con él. El sistema Asterisk Manager consiste en un pequeño servicio que escucha en un puerto TCP para ejecutar comandos remotamente. Se creó entre otras cosas para este tipo de usos, admitir integración sencilla con otras aplicaciones. Más info en VoIP-info.org. Para crear un nuevo usuario de esta plataforma editaremos el archivo /etc/asterisk/manager.conf y añadiremos las siguientes líneas:

[user] #nombre de usuario

secret = pass #contraseña

deny=0.0.0.0/0.0.0.0 #rango de direcciones no admitidas

permit=0.0.0.0/255.255.255.0 #rango de direcciones admitidas

read = system,call,log,verbose,command,agent,user

#permisos de lectura también se puede poner all

write = system,call,log,verbose,command,agent,user

#permisos de escritura también se puede poner all

Si tienes los servidores en diferentes redes, o resulta que el Zimbra está en una DMZ y no se puede comunicar con el Asterisk que está en la LAN puede que hayas pensado… como voy a conectar las llamadas entre redes?? Tendré que permitir tráfico SIP en el firewall?? La respuesta es no. Tan solo has de permitir el puerto de Asterisk Manager entre el servidor Zimbra y el Asterisk. Lo que realmente estamos haciendo es ejecutar comandos en el Asterisk de manera que el servidor llamará a nuestra extensión y al descolgar nos realizará automaticamente la llamada saliente. En otras palabras, no existe tráfico de voz entre el Zimbra y el Asterisk.

Como una imagen vale más que mil palabras, os dejo las siguientes capturas para que os hagáis una idea de la sencillez de la aplicación y de como funciona.

zimast01

Definiendo nuestra extensión.

zimast02

Información del servidor Astrerisk.

zimast03

El menú del zimlet.zimast04

Autodetección de números de teléfono con la opción de click-to-call.

zimast05Ring Ring!! El zimlet envía el comando de llamada y nuestra extensión suena. Al descolgar nos conmutará con la llamada saliente.

VLAN s en PfSense 1.2 y 3Com 2924-SFP Plus. Sistema Voice VLAN. Parte 1.

El swicth gestionable que compramos hace unos meses ha estado funcionando hasta ahora con la configuración de fábrica. La idea con la que se adquirió era la de separar la red de voz de las de datos y poner teléfonos IP de calidad para los puestos de trabajo. Tras hacernos con un pequeño chollo por eBay, 5 teléfonos Cisco 7906G nuevos por 250€, me he puesto manos a la obra a luchar contra este rollo de las VLAN, completamente nuevo para mi en la práctica.

Con ayuda del amigo Vicent, que a veces deja algún comentario por aquí, empecé a darle forma al asunto y en pocos días tuve un proyecto definido. Vamos a definir 5 VLANs para los diferentes chismes que tenemos en la oficina:

  • Workstations
  • Servers
  • VoIP
  • IPCams
  • WiFi

Intentaremos estar offline el menor tiempo posible, por lo que primero de todo vamos a meternos en el PfSense para definir las VLANs. Este proceso requiere reiniciar el firewall, así que es recomendable hacerlo primero y todo de una vez.

El sistema es sencillo de entender. Bajo una interfaz física vamos a definir interfaces “lógicas” que van a funcionar como si fueran físicas, algo así como las particiones de los discos duros. Cada VLAN tiene un identificar numérico y una descripción en texto. No hay gran misterio en el asunto.

vlan_01vlan_02vlan_03

Hemos definido nuevas interfaces y cada una tiene sus opciones:

  • IP fija o DHCP.
  • Puerta de enlace de la red, para sacar el tráfico por ella en lugar de por la WAN (útil para MultiWAN).
  • Modo Bridge…

vlan_04vlan_05

Ahora debemos hacer lo mismo en el switch. En el caso de la VLAN destinada a tráfico de voz, disponemos de una opción especial de automatización en el modelo de switch que vamos a tratar. Se trata de una funcionalidad que también existe en Cisco y que resulta bastante útil. Pero antes de nada, debemos definir la VLAN. Accedemos a la configuración del switch, en este caso por web, y dentro del menú DEVICE – VLAN creamos las VLAN exactamente igual que en el firewall, dándoles el mismo identificador numérico y de texto.

vlan_06

A continuación configuraremos los puertos del switch que van a pertenecer a cada VLAN. La diferencia entre tagged y untagged se puede resumir sencillamente en que en los puertos tagged se etiquetan los paquetes con su identificador numérico correspondiente, por lo que solamente es necesario definirlos cuando esos puertos van hacia un router o similar.

vlan_07

En el caso de la imagen, tenemos ocho puertos untagged que corresponden al servidor Elastix y a los teléfonos IP. El puerto 24 está configurado como tagged porque está conectado al PFSense. Este puerto pertenecerá y permanecerá como tagged para todas las VLAN que queramos gestionar y que hayamos definido en nuestro Firewall.

La funcionalidad de automatización de la que hablaba antes la encontramos dentro del menú DEVICE – QoS – VOIP Traffic Setting. Consiste en configurar puertos de manera que añadan automáticamente a la red de voz dispositivos específicos, identificados por su OUI (tres primero pares de la MAC). De esta manera, si conectamos un teléfono IP (previa inserción de su OUI en la tabla) a un puerto que no pertenece la VLAN de voz, el switch lo añadirá automáticamente. Está explicado de manera sencilla en el documento oficial de 3Com.

vlan_08

Backup sencillo via FTP para Windows 2003

Existen programas de automatización de tareas y clientes FTP que ejecutan subidas o bajadas programadas, pero todos los que son freeware son bastante cutres. Una solución económica (en realidad gratis) y sencilla de montar es usar las Tareas Programadas del propio Windows en conjunto con el cliente FTP de la línea de comandos. Vamos a volver a nuestros orígenes early 90’s para usar el MS-DOS!!

Nuestro propósito es hacer que a las 00:00 se cree un archivo comprimido que comprenda el contenido de una carpeta donde se guardan los datos de un software de gestión cualquiera. Tenemos tres tareas que realizar:

  • Editar un archivo .BAT o .CMD que cree el archivo comprimido usando la versión de RAR (por ejemplo) de MS-DOS y que ejecute el cliente FTP usando un archivo de texto donde hemos automatizado los comandos a teclear.  En este caso, la opción “a” de RAR añadirá los archivos modificados a nuestro fichero comprimido. Nos quedaría algo así:
rar.exe a c:\backup\backup.rar c:\software_gestion\datos
ftp -s:backup_ftp.txt
  • Crear una archivo de texto para el cliente FTP. Lo crearemos usando los comandos que vayamos a necesitar:
open ftp.servidor.com
usuario
contraseña
cd directorio_principal
cd backups
send backup.rar
bye
  • Ahora tan solo tenemos que hacer que se ejecute a la hora deseada.  Vamos a Tareas Programadas, dentro de Panel de Control y añadimos la ejecución del archivo .BAT o .CMD dentro del horario y de la programación diaria deseada.

tarea_programada