31 de diciembre de 2013

AsteriskNOW: Mas configuraciones SIP e IAX2

En la anterior entrada de la serie AsteriskNOW realicé la configuración de un par de extensiones con los protocolos SIP e IAX2, registré las extensiones contra la centralita y realiće algunas pruebas de llamadas. En esta entrada comentaré más parámetros de configuración de ambos protocolos así como la instalación de algunos módulos que serán necesarios.

Como comenté en la entrada anterior, a la hora de crear las extensiones aparecen muy pocas opciones de configuración en el campo Device Options, una en el caso de IAX2, pero al editarlas tenemos acceso a bastantes mas parámetros de los que describiré algunos.

Extensión SIP


El parámetro canreinvite se utiliza para permitir que los peers envien peticiones INVITE entre ellos una vez se ha establecido la llamada con el servidor Asterisk. Por defecto está en No pero es recomendable consultar la documentación para adecuar este parámetro a nuestro escenario.


Los contextos (context) son un concepto imprescindible en Asterisk con el organizamos nuestro dialplan en secciones independientes entre sí, el dialplan está compuesto por extensiones, troncales, aplicaciones como IVRs, VoiceMail, Conferences...


La opción host sirve para especificar una dirección IP o un nombre de host específico para la extensión o en caso de ser dynamic permitir que se registre cualquier teléfono con esa extensión.


El type por defecto es friend que es la opción más común a la hora de crear extensiones, este parámetro está relacionado con la manera en la que se manejarán las llamadas entrantes y salientes en la extensión.


Podemos elegir también el protocolo de transporte (transport) que utilizará la extensión: UDP (por defecto), TCP, TLS, WS o combinaciones de estos.


También podemos cifrar las llamadas utilizando el protocolo SRTP en lugar de RTP estableciendo el parámetro encryption en Yes.


Extensión IAX2


Algunos de los parámetros antes descritos también son válidos para clientes IAX2 dado que están relacionados con el comportamiento de Asterisk como context, host o type. Otros como transport o encryption están relacionados con el propio protocolo SIP por lo que en este caso no aparecerán.

Con el parámetro transfer podemos controlar las transferencias de llamadas de la extensión.


El parámetro qualify sirve para enviar al peer una petición de tipo OPTIONS para comprobar el estado de vida del dispositivo. Este parámetro también está disponible en el protocolo SIP en el que además podemos especificar el tiempo de refresco, por defecto 60 segundos.


Con disallow y allow podemos denegar y permitir respectivamente el uso de los codecs de audio que el dispositivo podrá utilizar. Funciona a modo de ACL, en disallow rechazamos todo con all y en el campo allow especificaremos los codecs permitidos separados por el caracter ampersand (&). Estos parámetros también son controlados por la centralita por lo que también están disponibles para el protocolo SIP.


El parámetro requirecalltoken se utiliza para requerir al peer un token de autenticación para registrarse contra la centralita. Dejare el valor No porque estoy utilizando varios softphones para la misma extensión y no me permite loguearme correctamente cuando cambio de cliente.


Módulo Asterisk Settings


Como se puede ver, con la instalación por defecto tenemos acceso a muchos parámetros de configuración de las extensiones pero la mayoría de ellos relacionados con la centralita. Para obtener más parámetros de configuración de los protocolos será necesario instalar los módulos Asterisk SIP Settings y Asterisk IAX Settings.

Pulsando la opción Module Admin localizada en el menú Admin llegamos a la pantalla principal del módulo, pulsando en Check Online nos muestra los módulos instalados, si se pueden actualizar y los que están disponibles en los repositorios. Una vez instalados aparecerán habilitados en la pantalla principal del módulo, recordad que es necesario aplicar la configuración tras la instalación de cualquier módulo.


Los módulos siguen la misma distribución de menús que vimos en la introdución a FreePBX. Desde el menú Settings de la barra de navegación tendremos acceso a los módulos recien instalados.

Opciones SIP


Lo primero que encontramos son las opciones NAT, pulsando en el botón Auto Configure nos resuelve la IP pública y la red local en los campos External IP y Local Network. El campo External IP se utiliza para indicar la IP o el nombre de host que se publicará en el router hacia Internet por lo que le pongo una dirección cualquiera.


Podemos habilitar el soporte para vídeollamadas desde la opción Video Support especificando los codecs que queremos utilizar y un máximo ancho de banda para estas llamadas.


En el apartado MEDIA & RTP Settings también tenemos acceso al parámetro canreinvite visto anteriormente con la opción Reinvite Behavior.


También podemos configurar un lenguaje por defecto especificando el código de caracteres asociado al país.


Las siguientes opciones previenen que un usuario anónimo se registre contra la centralita (Allow SIP Guests) y que pueda realizar llamadas (Allow Anonymous Inbound SIP Calls). Permitiendo el registro de clientes anónimos y denegando las llamadas entrantes anónimas podemos ver los intentos de llamadas de los usuarios registrados como invitados.


Además también es posible introducir los parámetros de configuración que queramos especificando el nombre y el valor de los mismos.


Opciones IAX


Lo primero que encotramos son las opciones de los codecs de audio pero a diferencia del caso anterior tenemos algunas prioridades y opciones de ancho de banda.


Soporte para video nuevamente


Language, Bind Address, Bind Port...


El campo Delay Auth Rejects se utiliza para reforzar la seguridad de la centralita contra ataques de fuerza bruta añadiendo un delay a la hora de rechazar un intento de login incorrecto.


Y al igual que en el caso del protocolo SIP, podemos añadir más parámetros de configuración a través de la opción Other IAX Settings.


Con esta entrada finalizo el repaso sobre las opciones de configuración más reseñables a la hora de crear extensiones en nuestro sistema y reforzar el comportamiento de las mismas. En siguientes entradas comenzaré a describir funcionalidades más atractivas con las que crear una verdadera centralita de telefonía.

Un saludo, Brixton Cat.

29 de diciembre de 2013

AsteriskNOW: Extensiones SIP e IAX2

Continuando con la serie AsteriskNOW, voy a empezar a describir los pasos para añadir extensiones a la centralita y a hacer algunas pruebas llamando entre distintas extensiones. Asterisk soporta varios protocolos de señalización y transporte entre los que podemos encontrar SIP, IAX2 o DAHDI, este último es utilizado para el hardware (y compatibles) de la compañía Digium como teléfonos o tarjetas de telefonía.

En primer lugar voy a realizar la configuración de una extensión que va a utilizar el protocolo SIP para la señalización y el mantenimiento de las sesiones, mientras que el transporte de la llamada será realizado por protocolos como RTP o SRTP.

Extensión SIP


Desde el menú Applications pulsamos en Extensions para acceder al panel principal donde poder crear nuevas extensiones. En el desplegable elegiremos el tipo de protocolo que utilizará la nueva extensión, por defecto SIP.


Deberemos asignar un número de extensión en el campo User Extension y agregar un nombre descriptivo en el campo Display Name, éste además de aparecer en el terminal donde la extensión está configurada se utilizará como CallerID en las llamadas que la extensión realice.


En el apartado Extension Options encontramos diversas configuraciones como las opciones de Asterisk para las extensiones, timeouts para las llamadas, CallerIDs de salida y de emergencia entre otras opciones. Modificaremos el valor Outbound Concurrency Limit a 1 como medida de seguridad para evitar que se realicen más de una llamada simultánea al exterior.


Deberemos configurar una contraseña robusta para cada extensión sobre todo en sistemas en producción, esto lo configuramos desde el apartado Device Option. En el campo secret se encuentra la contraseña por defecto del dispositivo y tiene toda la pinta de ser un hash MD5. Podremos variar el comportamiento del DTMF en el campo dtmfmode al igual que indicar si nos encontramos detraś de un NAT y vamos a hacer llamadas al exterior.


La parte del VoiceMail la dejo deshabilitada de momento ya que tengo en mente una entrada con todas las opciones que nos permite este módulo.


Y por último guardamos cambios con el botón Submit y aplicamos la configuración con el botón Apply Config que aparece en la barra de navegación.


Una vez creada la extensión, aparece en el menú de la izquierda para poder editarla o eliminarla.


Extensión IAX2


Para configurar una extensión que utilizará el protocolo de señalización y transporte IAX2 elegiremos la opción Generic IAX2 Device en el desplegable y pulsamos el botón Submit. Realmente no hay diferencia entre ambos formularios salvo una excepción, deberemos indicar una extensión para el usuario (User Extension) y un nombre para mostrar en el dispositivo y que será utilizado en el CallerID, Display Name.


Limitamos también las llamadas simultáneas salientes que el dispositivo puede realizar.


Y configuramos una contraseña robusta para el dispositivo en la opción secret. En este caso no aparecen las opciones relativas al DTMF o el NAT pero a la hora de editar las extensiones veremos que aparecen muchos más parámetros.


Dejo el VoiceMail deshabilitado, guardo y aplico la configuración de manera idéntica al caso anterior.


Configuración de clientes


Ahora describiré la configuración de los softphones que utilizarán las extensiones recien creadas, voy a utilizar Linphone como cliente SIP y SFLphone como cliente IAX2 aunque este último también tiene soporte para el protocolo SIP.

Cliente SIP


Una vez instalado el paquete linphone, desde el menú Options en la opción Preferences podemos especificar desde la configuración de la red, los codecs para el audio o el idioma.


Desde la pestaña Manage SIP Accounts podemos añadir cuentas de usuarios SIP y especificar tanto un Display Name como el Username a utilizar. Pulsando en el botón Add aparece una ventana donde introducir la identidad SIP y la dirección IP de la centralita.


Será necesario ingresar la contraseña que hemos configurado para dicha extensión


Quedando la configuración definitiva del terminal de este modo


Si la configuración es correcta, en el teléfono se muestra un mensaje informando que se ha registrado satisfactoriamente contra la centralita.


Cliente IAX2


Una vez instalado el paquete sflphone-gnome, lastima que la versión de KDE sea inestable, desde el menú Editar tenemos acceso a las Preferencias de la aplicación y las Cuentas. Dentro de la configuración de las cuentas añadimos una e ingresamos los siguientes parámetros:

- Alias: Nombre descriptivo para la cuenta.
- Protocolo: En este caso IAX2.
- Nombre del equipo: Dirección IP o nombre de host de la centralita.
- Usuario: El número de la extensión.
- Contraseña: El secret configurado a la extensión.


Una vez creada la cuenta podemos ver el estado de la misma e informa que ha fallado la autenticación.


Podemos tirar de los logs de Asterisk (Reports > Asterisk Logs Files) pero a mi siempre me parece más entretenida la consola y en este caso encima colorea la salida del debug.


El error en cuestión es:
Call rejected, CallToken Support required. If unexpected, resolve by placing address 192.168.1.38 in the calltokenoptional list or setting user 1002 requirecalltoken=no
Entre las opciones Device Options que no aparecieron a la hora de crear la extensión se encuentra requirecalltoken con valor Yes por defecto por lo que lo cambio a No.


Una vez habilitada nuevamente la cuenta comprobamos que se registra el terminal correctamente contra la centralita.


Llamadas de pruebas


Una vez los teléfonos están registrados correctamente contra la centralita podemos realizar llamadas de prueba entre ambas extensiones.

 

En posteriores entradas lo comentaré más en detalle pero es bueno que conozcamos que existen una serie de numeraciones preconfiguradas en la centralita llamadas Features Codes. Estas se encuentran dentro del menú Admin y podemos editarlas a nuestro antojo e incluso como ya veremos añadir otras nuevas.

Por ejemplo, podemos consultar la hora del sistema marcando la opción *60 desde los teléfonos


Hasta aquí la introducción a la creación de extensiones y la configuración de softphones tanto para clientes SIP como IAX2. En la siguiente entrada describiré más parámetros de configuración alguno de ellos para asegurar en la medida de lo posible nuestra instalación.

Un saludo, Brixton Cat.

28 de diciembre de 2013

AsteriskNOW: Introducción

Llevo unos días poniéndome al día con Asterisk, buscando información sobre las distintas opciones que nos ofrece a la hora de configurar la centralita y dar servicio a nuestros usuarios o a los clientes que nos llamen. Entre las muchas opciones me he decantado por AsteriskNOW por varias razones, una de ellas y la principal es que está mantenida por los desarrolladores de Asterisk, hace uso de FreePBX como interfaz gráfica y utiliza versiones recientes del software.

AsterisNOW actualmente tiene a disposición la versión 3.0.0 que corre sobre un Sistema Operativo CentOS 6.5 y utiliza para la centralita Asterisk 11.6.1 y FreePBX 2.11.0.11. Además podemos hacer uso del gestor de paquetes YUM para instalar o desinstalar paquetes y mantener el sistema actualizado en todo momento.

En el siguiente enlace se detella la instalación del Sistema Operativo y como repetición a lo mencionado en el mismo, es recomendable actualizar el sistema antes de acceder a la interfaz Web y hacer uso de la centralita.


Una vez actualizado nos logueamos en la intefaz Web utilizando los credenciales por defecto, usuario admin y contraseña admin para acceder al dashboard donde ver el estado del sistema y los servicios, notificaciones y estadísticas de la centralita.


En la parte superior de la página nos encontramos con la barra de navegación que contiene diversos menús desplegables para la configuración de la centralita, administración, herramientas, etc.


Admin

Menú dedicado a tareas de administrarción como crear usuarios y modificar sus contraseñas. Con el módulo System Recordings podemos subir o realizar una grabación en una extensión y utilizarla en la configuración de nuestro sistema. Desde la opción Module Admin podremos comprobar el estado de los módulos instalados y los disponibles, además de poder configurar una dirección de e-mail para que nos informe de las nuevas actualizaciones.


Applications

Dentro de este menú encontraremos por defecto algunas opciones básicas y no tan básicas como la administración de extensiones (Extensions), el parking de llamadas (Parking) o las colas de llamadas (Queues).


Connectivity

Este menú se utiliza para configurar parámetros de conectividad como su nombre indica, podremos definir troncales para la comunicación externa de la centralita, rutas de entrada y salida, etc...


Reports

En este menú encontramos opciones de reporte como los logs de la centralita (Asterisk Log Files) o el módulo CDR (Call Data Record) para el reporte de llamadas.


Settings

Aqui podemos encontrar opciones de configuración avanzadas para el servidor, así como herramientas varias como el módulo Music on Hold para la música en espera o la administración de los buzones de voz (VoiceMail Admin).


En la siguiente entrada empezaré con la creación de extensiones para después ver funcionalidades interesantes de cualquier centralita como buzones de voz, capturas llamadas entre extensiones, IVRs, etc.

Un saludo, Brixton Cat.