Asterisks federados: Administrador Asterisk

De Guifi.net - Wiki Hispano

Introducción

El montaje de una centralita asterisk en el entorno federado es un proceso más complejo que el de dar de alta una extensión, aunque accesible para cualquiera que se maneje mínimamente con Linux y Asterisk. Veámolo.

La infraestructura propone realizar un proceso de registro e instalación/configuración de la centralita mediante un proceso semi-automático, donde reservaremos un prefijo telefónico para las extensiones de nuestra centralita, y estableceremos un enlace con el enrutador SIP Kamailio (sip.guifi.net) que nos permitirá realizar llamadas telefónicas no sólo a los usuarios de dentro de nuestra centralita sino a cualquier extensión de usuario de una centralita unida a esta infraestructura.

Debemos entender el diseño conceptual del montaje, donde una centralita puede tener hasta 999 extensiones registradas con clientes que únicamente tienen que tener conexión a la red guifi.net. Pero para que nuestra centralita pueda comunicarse con otras centralitas de la península deberá tener también conexión a Internet, ya que a través de Internet se establecerá el enlace con el enrutador SIP que nos interconectará con otras islas guifi.net.

Requisitos previos

  • Tener un usuario dado de alta en la web de guifi.net.
  • Tener dado de alta un nodo guifi.net, un enlace y una dirección IP guifi.net.
  • Tener un recurso "Computadora Servidor" dado de alta en guifi.net.
  • En este servidor deberemos tener conexión tanto con guifi.net como con Internet (al estilo de los servidores de gráficas o los proxies federados), de manera que podamos interconectar contra sip.guifi.net.
  • A nivel físico, necesitaremos una máquina que corra un sistema operativo preferiblemente open-source (Linux, FreeBSD) que tenga acceso a la red guifi.net a la que nos conectamos.

Registro de la centralita en la web de guifi.net

Antes de poder montar nuestra centralita deberemos dar de alta nuestra centralita, y esperar a que nos aprueben el enlace con el enrutador SIP (un puro trámite). Veamos cómo hacerlo.

Paso 1: Registrar un nuevo servicio

Dar de alta el servicio en la web
  • Desde la web de guifi.net accederemos al menú "Crear Continguts", y eligiremos la opción "Guifi.net Service".
  • Crearemos un nuevo servicio del tipo "Asterisk VOIP server in the sip.guifi.net infraestructure".
  • Importante que a la hora de crear el servicio añadamos la información de la máquina "Computadora Servidor" que hemos dado de alta previamente (ver pantallazo).


Paso 2: Registramos el FQDN de nuestra máquina al nuevo servicio

Para formar parte de la infraestructura sip.guifi.net necesitamos enlazar contra la máquina en la que está el servidor kamailio, y de momento esta máquina tiene pata únicamente en Internet. Por tanto, nuestro servidor deberá poder verse en internet de alguna manera, necesitaremos un FQDN o hostname público (podemos utilizar dyndns para obtenerlo).

  • Una vez guardado nuestro nuevo servicio, veremos que en la página de edición del servicio nos permite introducir un campo "FQDN" que podemos rellenar.
  • Introducimos nuestro nombre de host público, y guardamos la página del servicio.


Introducir el FQDN de nuestro servidor Asterisk


Paso 3: Servicio registrado, falta la aprobación en la infraestructura sip.guifi.net

Servicio dado de alta, pero esperando aprobación

Llegados a este punto ya tenemos creada nuestra solicitud de unión de una nueva centralita en la infraestructura sip.guifi.net, así que los administradores de la infraestructura verán una nueva solicitud pendiente de aprobación.


Podemos observar la página de enlaces pendientes de aprobación accediendo a una zona guifi.net, y desde allí pinchando en el enlace "sip.guifi.net". Por ejemplo, podemos ver absolutamente todos los enlaces creados y pendientes aquí:

Enlaces pendientes sip.guifi.net en la zona World

Servicio dado de alta, pero esperando aprobación


Paso 4: Servicio aprobado

Servicio aprobado, la información de usuario/contraseña del enlace ya está disponible.

Una vez aprobado el servicio por los administradores Kamailio, se nos enviará un e-mail de notificación. Además, la página de información del servicio que ha creado el usuario indicará el estado de "centralita aprobada", para que el administrador sepa que ya puede empezar a configurar su centralita.

Llegados a este punto, pasamos a la parte de instalación/configuración del servidor Asterisk con los datos que hemos obtenido.

Instalación de Asterisk en el sistema

Instalar Asterisk hoy en día es muy sencillo. Si utilizamos una distribución Linux podremos hacer uso del paquete que distribuyan los desarrolladores, aunque también podemos optar por compilarlo desde fuentes si utilizamos una distribución más a medida.

Instalación de Asterisk en las principales distribuciones

Siempre que sea posible, se recomienda instalar el servidor Asterisk desde el script automatizado proporcionado por la plataforma guifi.net. Esta recomendación es importante, ya que se unifican versiones y se podrían solucionar problemas de compatibilidades y se puede mantener mejor un sistema homogéneo. Aún así vamos a mostrar cómo se haría la instalación en diferentes plataformas.

  • Debian/Ubuntu
  • Fedora
  • Archlinux

Instalación de Asterisk desde fuentes

Para facilitar la instalación de un servidor Asterisk, hemos desarrollado un shell script escrito en bash, que nos permitirá llevar a cabo la instalación. Basta con ejecutar dicho script y él se encargará de descargar los sources de la versión 1.8.2.3 de Asterisk, y compilarlos.

Asimismo se encargará de descargar los códecs necesarios y las voces en castellano.

Toda la instalación de los ficheros de configuración se dejará en /etc/asterisk y se creará un script para inicio/parada del servicio en /etc/init.d

Dicho script está pensado para platafornmas GNU/Linux Debian Squeeze y/o Ubuntu.

Configuración de Asterisk

Modificación de Variables

Una vez tenemos el Asterisk instalado desde el script de instalación que se facilita para esta labor habrá que modificar las variables de los archivos de configuración que se encuentran en /etc/asterisk

sip.conf

  • localnet: indicamos la subred en la que se encuentra en servidor
  • externhost: si el equipo tiene un FQDN en Internet se lo deberemos asignar en esta variable
  • fromdomain: guifi

localnet=XXX.XXX.XXX.XXX/XXX.XXX.XXX.XXX externhost=host.tld fromdomain=guifi

  • nat: yes|no dependiendo de si se hace NAT entre Asterisk y los teléfonos IP

[sip-local](!) nat=yes

sip.local.conf

Permite dar de alta extensiones a mano

  • username: se corresponde con la extensión que queramos dar de alta
  • callerid: nombre que aparecerá en pantalla al llamar
  • secret: password asignado a la extensión

[NNXXYYZZZZ](sip-local) username=NNXXYYZZZZ callerid="<nombre>" <NNXXYYZZZZ> secret=<password>

sip.trunk.conf

Fichero que contiene los datos del trunk con Kamailio

  • register: cadena para registro contra el Kamailio, contiene username y password
  • username: usuario para registro con Kamailio
  • password: contraseña para el registro con Kamailio
  • nat: yes|no en función si se hace NAT entre Kamailio y Asterisk
  • auth: cadena de autenticación contra el Kamailio

registramos con kamailio

register => <username>@sip.guifi.net:<password>@sip.guifi.net/<username>

[kamailio] type=peer username=<username> secret=<password> auth=<username>:<password>@sip.guifi.net fromuser=<username> host=sip.guifi.net canreinvite=no context=from-kamailio nat=<yes|no> insecure=port,invite fromdomain=sip.guifi.net qualify=no

[kamailio-incoming] type=peer host=sip.guifi.net context=from-kamailio qualify=no

extensions.conf

  • PBXID: identificador de PABX ofrecido por el gestor web de guifi.net
  • RANGE: rango de extensiones que contiene la PABX Asterisk

[globals] PBXID=<identificador de PABX> RANGE=<rango ID de PABX> SIPTRUNK=kamailio

exten.apps.conf

  • *43: sala de echo para comprobar el funcionamiento de los Teléfonos
  • *98: Acceso al buzón de voz
  • *100: sala de multiconferencia

[apps]

Acceso a Voicemail

exten => *98,1,Answer() exten => *98,n,VoiceMailMain(${CALLERID(num)}) exten => *98,n,Hangup()

Sala de Echo

exten => *43,1,Answer() exten => *43,n,Echo() exten => *43,n,Hangup()

Sala meetme

exten => *100,1,Answer() exten => *100,n,MeetMe(100) exten => *100,n,Hangup()

voicemail.conf

  • XXYYZZNNNN => XXXX,,correo@example.tld: extensión y su correspondiente correo al que se le enviará un mail cada vez que se deje un mensaje en el buzón de voz

[default]

XXYYZZNNNN => XXXX,,correo@example.tld [..]

Tareas de mantenimiento

Herramientas personales