Herramientas de usuario

Herramientas del sitio


tutoriales:enlazar_mediante_iax2_un_servidor_asterisk_con_un_servidor_elastix

Enlazar Mediante Iax2 Un Servidor Asterisk Con Un Servidor Elastix

Introducción

Asterisk es un programa de software libre (bajo licencia GPL) que proporciona funcionalidades de una central telefónica (PBX). Como cualquier PBX, se puede conectar un número determinado de teléfonos para hacer llamadas entre sí e incluso conectar a un proveedor de VoIP o bien a una RDSI tanto básicos como primarios.

En su momento nos enviaron algunos componentes para trabajo con VoIP y nos plantearon que era intención de la Empresa que en un futuro hubiera enlaces por VoIP entre ellos y las fábricas. Así que nos dimos a la tarea de montar un servidor Asterisk y de paso, como un subproducto interesante (no era la idea original, vamos) conectar por VoIP a nuestras oficinas.

La siguiente tarea fue explorar las posibilidades de conexión por VoIP a un servidor remoto.

Ahora bien, la inmensa mayoría, si no todas las fábricas y empresas de tabaco están montando Elastix.

Teniendo en cuenta que ya mis usuarios se han acostumbrado a las prestaciones que les brinda la instalación actual de Asterisk (conste que aún no he podido explorar las posibilidades que abriría conectarle una tarjeta VoIP por no tener una máquina con slot PCI disponible; de hecho, no tengo ninguna disponible…) y que a lo que parece los demás centros de la empresa utilizarán Elastix, finalmente acometí la tarea de aprender a enlazar mediante IAX2 ambos sistemas.

Preparativos

Detallar cualquier paso conveniente antes de una instalación, etc.

Instalación

Detallar los pasos necesarios para una instalación.

Configuración

Conectando mediante IAX2 una estación Asterisk con otra Elastix

Otro elemento adicional es que tampoco me convenía tener otra máquina virtual más, así que me lancé de cabeza.

Lo que describo a continuación es el resultado obtenido.Me basé en una documentación que proponía una forma de conectar entre sí dos Asterisk, y que modifiqué para ajustarla a esta otra situación.

Sea un servidor A, que se identificará como vozcom (hay que registrar ambos servidores, uno en el otro) y tendrá la IP 192.168.0.10. Ese llevará el Asterisk y usará los números 200XX. Por ejemplo, 20025..

Sea otro servidor B, que se identificará como vozorg y tendrá la IP 192.168.0.251. Ese llevará Elastix (en esta prueba fue una máquina virtual, pero eso es transparente para este análisis) y usará los números 4XX. Por ejemplo, 403.

Voy al fichero /etc/asterisk/iax.conf del servidor Asterisk y allí declaro lo siguiente:

[vororg]

type=peer

host=dynamic

trunk=yes

secret=passwordB

context=from-internal

permit=192.168.0.251/255.255.255.0

qualify=yes

Explicando: acá declaro al servidor Elastix, que será un “parigual” (peer) del servidor Asterisk. La declaración “dynamic” hace que no esté fijado a una IP determinada. en este caso la declaración permit, al llevar una máscara restringida, fija una IP, pero me dejo abierta la posibilidad de abrir el diapasón. La declaración trunk especifica que se va a usar un troncal, que será tipo IAX2 al ser explicitado en el fichero iax.conf. La declaración context me especifica el contexto en el cual se buscarán los números telefónicos virtuales de los usuarios (los Elastix ponen “from-internal” de caja). Finalmente qualify=yes me asegura que podré monitorearlo.

Seguidamente voy a la sección [register] del mismo fichero iax.conf y registro allí el Asterisk de la siguiente forma:

register ⇒ vozcom:passwordA@192.168.0.251

Como se ve, estoy registrando al servidor Asterisk (será el usuario vozcom con password passwordA) en el servidor Elastix (192.168.0.251).

Ahora voy al fichero /etc/asterisk/extensions.conf del mismo Asterisk a asegurarme de que las llamadas de un servidor al otro pasen por el troncal. En la sección [default] incluyo una línea

include ⇒ miprimerejemplo

Esto tiene como objetivo que de forma implícita todo aquel que se conecte al Asterisk pueda usar los números asignados allí a sus usuarios.

Más abajo, el listado de usuarios “miprimerejemplo” tiene esta forma:

[miprimerejemplo]

exten ⇒ 20076,1,Dial(SIP/20076,30,Ttm)

exten ⇒20076,2,VoiceMail(20076@miprimerbuzon,u)

exten ⇒ 20076,2,HangUp

En este ejemplo, hay un usuario que tiene asignado el número 20076. Si se le hace una llamada SIP y el usuario no responde, se pasará automágicamente al buzón de voz: una operadora le pedirá al “llamador” que deje un mensaje después del tono, y el mensaje será enviado como un adjunto WAV al buzón de correo del usuario (lo que da la técnica…)

Al final de los listados de teléfonos de usuarios me aseguro de declarar la forma de que las llamadas desde el Asterisk hacia el Elastix sean encaminadas:

;Para el Elastix (esta línea es un comentario)

exten ⇒ _4XX, Dial(IAX2/vozorg/${EXTEN})

exten ⇒ _4XX,n, HangUp

Esto asegura que si un usuario conectado al servidor Asterisk hace una llamada SIP a un número que empiece por 4 y tenga 3 dígitos, la llamada le sea transferida al servidor Elastix, que es el “dueño” de esos números.

Recordemos que vozorg es el registro del Elastix en el servidor Asterisk.

Ahora vamos a la configuración del Elastix.

Declaremos un troncal (trunk) llamado para_el_asterisk con las siguientes características:

allow any CID

En la sección Dialed Number Manipulation rules especifico:

prepend+prefix+200XX

Con esto le indico que se tratará de los números de 5 dígitos que empiecen con 200.

En Outgoing settings pongo lo siguiente:

trunk name: vozcom

En Peer details pongo:

host=dynamic

username=vozcom

secret=passwordA

type=friend

trunk=yes

context=miprimerejemplo

Véase que estamos declarando acá lo concerniente al servidor Asterisk, que será el peer del Elastix.

En la sección Incoming settings debo declara lo siguiente:

user context: vozorg

En User details pongo:

type=user

context=from-internal

Nótese que el Elastix será un “usuario” del Asterisk en lo relacionado con estas llamadas.

Y en register string pongo:

vozorg:passwordB@192.168.0.10

Con esto registro al usuario vozorg (el Elastix) en el servidor Asterisk (192.168.0.10).

Ahora debo declarar una ruta saliente para las llamadas que se originen en el servidor Elastix y no sean para él sino para el Asterisk.

Voy a Rutas salientes y declaro una que llamaré salida_hacia_asterisk. Allí pongo:

intra-company (marco la casilla)

En Dial patterns especifico:

prepend+prefix+200XX

En Trunk sequenced for matched routes abro el menú desplegable y selecciono:

para_el_asterisk

Y hemos llegado al final.

Podemos probar a conectarnos con un cliente SIP como Ekiga, Twinkle, SFLPhone, Jitsi, etc a nuestra cuenta SIP en el servidor Asterisk (tenemos allí una cuenta 20025 a nuestro nombre). Si llamamos a, por ejemplo, el número 403 (que viene a ser 403@192.168.0.10 si voy a especificar la URI, como haría en Ekiga), la llamada será transferida mediante el protocolo IAX2 al servidor E$lastix, que es el “dueño” de esos números, y será en consecuencia recibida por el usuario del número 403 de ese Elastix. Inversamente, un usuario con cuenta 4XX en el servidor Elastix puede hacer una llamada “de larga distancia”,digamos al 20025; esta llamada le será transferida al Asterisk, quien responde por esos números, y será respondida por el usuario remoto.

Queda como cosa a investigar por qué mi cliente Ekiga se niega a dirigirle la palabra al servidor Elastix (no encuentro manera de usar Ekiga para conectarme directamente al Elastix, no quiere conectarse!) y por qué el SFLPhone se conecta al Elastix pero no “disca” bien. Jitsi hace un celemín de cosas y parece ser el último grito de la moda, pero está escrito en Java y se entufa cuando menos lo esperas. En fin, que Twinkle, con una interfaz que parece de aficionado, ha resultado ser el todoterreno que se conecta sin problemas tanto a Elastix como a Asterisk, en tanto Ekiga, si bien no quiere hablar directamente con Elastix, es insuperable cuando de Asterisk se trata.

Para los usuarios que <chiste>aún sufren bajo el yugo de Window$$</chiste>, 3CXPhone es magnífico.

Tengan un buen día.

Comprobación

Detallar los pasos para comprobar que el proceso ha concluido exitosamente.

Notas

Colocar aquí cualquier nota u observación.

tutoriales/enlazar_mediante_iax2_un_servidor_asterisk_con_un_servidor_elastix.txt · Última modificación: 2020/04/22 20:57 (editor externo)