Asterisks federados: Administrador Asterisk
De Guifi.net - Wiki Hispano
Contenido
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
- 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.
Paso 3: Servicio registrado, falta la aprobación en la infraestructura sip.guifi.net
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
Paso 4: Servicio aprobado
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
La instalación de Asterisk en un distribución oficial de Linux suele ser un proceso sencillo, y es la opción recomendada siempre ya que el empaquetado del software a la medida de la distribución es importante y nos evitará posibles problemas de mantenimiento a largo plazo. Aún así hay que ir con pies de plomo, ya que hay distribuciones que tienen abandonado el empaquetado de Asterisk, o que distribuyen una versión muy antigua. Es importante que tengamos unificadas en la medida de lo posible las versiones utilizadas en la infraestructura, ya que nos facilitará la solución de problemas de compatibilidades y se puede mantener mejor un sistema homogéneo.
Tenéis toda la información relativa a la instalación de asterisk en una distribución Linux en el wiki oficial de Asterisk:
Instalación de Asterisk desde fuentes
Para facilitar la instalación de un servidor Asterisk, hemos desarrollado un script escrito en bash, que nos permitirá llevar a cabo una instalación a medida de la última versión de Asterisk en nuestro entorno. Basta con ejecutar dicho script y él se encargará de descargar los sources de la versión 1.8.2.3 de Asterisk, compilarlos, y añadir otro tipo de contenido como los códecs necesarios y las voces en castellano.
Dicho script está pensado para platafornmas GNU/Linux. Ya tiene una primera versión, en fase de desarrollo, aquí:
La versión actual permite una instalación de asterisk limpia, junto con los codecs y las voces de asterisk necesarias para el funcionamiento de la centralita. La instalación se realiza por defecto en /opt/asterisk y podemos realizarla como usuario no privilegiado en ese u otro directorio (editando el archivo asterisk_install.sh). Es conveniente de momento no instalar ni dahdi, ni libpri ni asterisk-addons ya que no son necesarios para el correcto funcionamiento de la centralita, y hay algunos fallos en el script que quedan por pulir.
dave@lateralus:~/dev$ git clone git@github.com:tombatossals/voz.git Cloning into voz... remote: Counting objects: 19, done. remote: Compressing objects: 100% (17/17), done. remote: Total 19 (delta 4), reused 0 (delta 0) Receiving objects: 100% (19/19), 5.60 KiB, done. Resolving deltas: 100% (4/4), done. dave@lateralus:~/dev/a$ cd voz/ dave@lateralus:~/dev/voz$ ./asterisk_install.sh *************************************** ****** Asterisk installation ********** *************************************** ** You are using Debian or Ubuntu, we are going to test for the development packages... * Done ** We are going to download, extract, compile and install the asterisk framework on these directories: * Installation dir: /opt/asterisk * Compilation dir: /opt/asterisk/src But first, we need to ask some questions to you. ** Optional packages ** Download, compile, and install libpri: yes or no (default no)? Download, compile, and install dahdi: yes or no (default no)? Download, compile, and install asterisk-addons: yes or no (default no)? ** Asterisk (15 minutes installation approx.) ** * Retrieving packages... * Compiling packages... * Installing packages... * Done. ** Addition Codec Installation ** * Installing G.729 codec * Installing G.723 codec * Done. ** Spanish Sounds Installation ** * Downloading... * Finished.
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 el 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
Una vez montado nuestro servidor, es conveniente recoger las nuevas altas de extensiones que se producent en nuestra centralita desde la web, y activarlas. Esta tarea puede ser automatizada con un script que se encargará de conectar a la web de guifi.net, y en base a nuestros datos de centralita, obtener una copia del archivo sip.local.conf que contendrá todas las extensiónes nuevas creadas desde la última ejecución.