curso voip lab.pdf
TRANSCRIPT
ASTERISK LAB
MODULO 3 INSTALACIÓN DE ASTERISK Y COMPONENTES
EQUIPO NECESARIO PARA EL CURSO
Para este curso necesitamos estar familiarizados con el sistema operativo Linux, en concreto con Debian 4.
A partir de un sistema base con Debian 4, debemos instalar los siguientes paquetes para poder acceder remotamente a la consola desde cualquier equipo.
Lo primero que debemos hacer es actualizar el sistema operativo, tecleando lo siguiente en la consola.
aptget update
aptget upgrade
Una vez actualizado el sistema, instalamos el servidor SSH para que acepte conexiones remotas y poder configurar el sistema, dado que no siempre tenemos acceso a la consola.
aptget install opensshserver
APLICACIONES NECESARIAS
No siempre tenemos disponible el acceso a la consola del servidor, por lo que es necesario descargarse algún programa cliente SSH para conectarnos al servidor. En este curso utilizaremos putty, y lo podemos descargar de:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
PREPARACIÓN DEL ENTORNO
Primero vamos a configurar el entorno Linux, para que nos muestre los ficheros con colores, para diferencias los ficheros de solo lectura de los ejecutables.
Para ello debemos editar el fichero /root/.bashrc
Escribimos o des comentamos en el archivo las siguientes líneas.
export LS_OPTIONS='color=auto'
alias ls='ls $LS_OPTIONS'
PREPARACION DEL SISTEMA PARA LA INSTALACIÓN DE ASTERISK
Para instalar Asterisk, debemos tener instalados una serie de paquetes para poder compilarlo y ejecutarlo.
Primero ejecutaremos la orden aptget install buildessential
Que nos instalará los paquetes necesarios para compilar Asterisk.
Lo siguiente que debemos realizar es bajar las fuentes del kernel de nuestro servidor para poder compilar dahdi y Asterisk, ejecutando el siguiente comando
aptget install linuxheaders$(uname r)
También debemos instalar las librerías de terminal ejecutando el siguiente comando:
aptget install libncurses5dev
Una vez instalados los paquetes necesarios, vamos a crear un directorio para almacenar las descargas de Asterisk, que deberemos compilar.
Crearemos una carpeta en /usr/src de la siguiente forma:
cd /usr/src
mkdir asterisk
cd asterisk
Dentro de esta carpeta, descargaremos los paquetes necesarios para compilar asterisk. (EL número de versión de los paquetes puede diferir de los indicados en ese manual)
Todos los paquetes los obtendremos de http://downloads.asterisk.org/pub/telephony/
Nos hacen falta los siguientes paquetes:
Asterisk 1.6:
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk1.6.0current.tar.gz
LibPri:
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri1.4current.tar.gz
Dahdi
wget http://downloads.asterisk.org/pub/telephony/dahdilinuxcomplete/dahdilinuxcompletecurrent.tar.gz
El orden de compilación es muy importante, y se deben compilar en el siguiente orden:
1. Libpri 2. Dahdi 3. Asterisk
Comenzamos con libpri ejecutando la siguiente orden:
tar zxvf libpri1.4current.tar.gz
tar zxvf dahdilinuxcompletecurrent.tar.gz
tar zxvf asterisk1.6.0current.tar.gz
Al ejecutar estos comandos, nos descomprimirá y creará un directorio para cada una de las aplicaciones.
COMPILAR LIBPRI
Ibpri nos dara soporte para las conexiones digitales (RDSI).
Debemos compilarlo e instalarlo de la siguiente forma:
cd libpri1.4.10.1/
make clean
make install
cd ..
COMPILAR DAHDI
Dahdi es el soporte para las tarjetas RDSI. En la versión 1.4 de Asterisk, existía ZAPTEL para las tarjetas de Digium y cada fabricante tenía sus propios drivers, lo que significaba que dependiendo de la tarjeta RDSI que tuviésemos teníamos que descargar los drivers correspondientes, y a veces modificar el código fuente de Asterisk para que funcionase. Todo esto se simplifica con Dahdi.
Debemos compilarlo e instalarlo de la siguiente forma:
cd dahdilinuxcomplete2.2.0.2+2.2.0/
make clean
make all
make install
make config
cd ..
En el caso de que tuviésemos alguna tarjeta RDSI instalada, en este paso la detectaría y nos la mostraría en la pantalla.
COMPILAR ASTERISK
Debemos compilarlo e instalarlo de la siguiente forma:
cd asterisk1.6.0.15/
./configure
make menuselect
nos aparece la pantalla de configuración de Asterisk, donde vamos a sacar algunos módulos
Nos posicionamos con el cursor en “PBX Modules”
Y desmarcamos pbx_ael. Este módulo implemente “Alternate Extension Language”. Este módulo se considera avanzado, y al no compilarlo, evitamos que Asterisk nos muestre mucha información de errores y avisos al pararlo, arrancarlo o cada vez que recarguemos el fichero de extensiones.
También accederemos a la sección “Extras Sound Packages” y marcamos “EXTRA‐SOUNDS‐EN‐GSM”
Una vez seleccionado, pulsamos sobre la letra “s” para guardar los cambios y ejecutamos la siguiente orden:
make
make install
make samples
make config
cd ..
En este momento, ya tenemos instalado Asterisk.
A continuación debemos reiniciar el sistema, para que cargue los drivers Dahdi y comprobamos que los ha cargado correctamente ejecutando el siguiente comando.
lsmod | grep dahdi
y nos mostrará la siguiente información de los módulos cargados
Ahora comprobaremos si Asterisk se ha iniciado automáticamente ejecutando el siguiente comando para acceder a la consola.
asterisk –r
Para salir de la consola tecleamos
CLI> exit
y para parar Asterisk tenemos las siguientes opciones:
CLI> stop now
Para Asterisk inmediatamente
CLI> stop gracefully
hace que Asterisk no acepte ninguna llamada y se pare cuando acaben las llamadas activas
CLI> stop when convenient
Para Asterisk cuando las llamadas activas finalicen
Y para iniciar Asterisk ejecutamos el siguiente comando
asterisk start
O
/etc/init.d/asterisk start
ASTERISK LAB
MODULO 4 CONFIGURACIÓN DE ASTERISK
CONFIGURACIÓN DE ASTERISK
Asterisk se configure editando una serie de ficheros de texto que están en el directorio /etc/asterisk y acaban en la extensión .conf
Los ficheros más importantes son sip.conf y extensions.conf
Existen interfaces web que configuran estos ficheros en base formularios web, que hacen más sencilla su configuración, pero con el inconveniente de que generan un exceso de código y macros en lenguaje Asterisk, que impiden comprender la sintaxis de los ficheros adecuadamente.
Durante la duración de este curso, nos limitaremos a la configuración mediante un editor de texto, para familiarizarnos con la sintaxis de estos ficheros.
CREACIÓN DE EXTENSIONES
Las extensiones de tipo SIP se crean en el fichero sip.conf, y las de tipo IAX se crean en el fichero iax.conf. En los ejercicios de este curso se crearán solo extensiones SIP.
Si editamos este fichero, veremos todas las posibles opciones que se pueden configurar, siendo las que se muestran a continuación las básicas
Al final del fichero vamos a incluir una extensión para realizar pruebas de llamadas. Las extensiones pueden ser alfanuméricas, pero se recomienda que sean numéricas para asegurarnos que desde los teléfonos antiguos se puedan utilizar, ya que estos no tienen la posibilidad de introducir letras.
La explicación de los parámetros que hemos introducido es la siguiente:
[1001] Es el nombre del usuario, que tiene correspondencia con la extensión
type=friend Es el tipo de extensión que estamos creando. Existen tres tipos de extensiones:
friend = para las llamadas entrantes y salientes
user = para las llamadas entrantes en el plan de llamadas
peer = para las llamadas salientes en el plan de llamadas
host=dynamic Se puede especificar la palabra dynamic que es una dirección ip obtenida automáticamente o cualquiera dentro de la red, o directamente la dirección IP asignada al dispositivo
secret=1001 es la password del usuario. Para evitar complicaciones debe ser numérica, ya que algunos teléfonos no disponen de teclado alfanumérico
context=users Contexto del plan de llamadas que se va a utilizar.
Las extensiones serán de cuatro cifras, y se diferenciarán de las del resto de alumnos por las dos primeras cifras de la extensión.
El primer alumno tendrá la extensión 1001 y suponiendo que el último alumno sea el número 18, este tendrá la extensión 1801.
Debemos guardar los cambios
Una vez creadas las extensiones, debemos de acceder a la consola de Asterisk y teclear el siguiente comando para que se recargue el fichero de usuarios
CLI> sip reload
Para ver si realmente ha creado las extensiones tecleamos:
CLI> sip show peers
Y nos deben aparecer las extensiones creadas, en este caso la 1001 y la 1000.
En este momento no se puede realizar ninguna llamada, ya que el fichero extensions.conf no está configurado, y este es el que incluye el “Dialplan” o plan de llamadas, es decir, como se van a comunicar las extensiones, como se van a tratar las llamadas entrantes, las salientes, etc.
ASTERISK LAB
MODULO 5 PLAN DE LLAMADAS
CONFIGURACION DEL SOFTPHONE X‐LITE
Para realizar llamadas, vamos a configurar un teléfono de tipo Softphone, es decir, un teléfono por software.
En el mercado existen varias alternativas, pero la más usada es X‐Lite, existiendo versiones para Windows, Mac y Linux. Este softphone se puede descargar de
http://www.counterpath.net/x‐lite.html
Una vez descargado, procederemos a instalarlo y configurarlo, y los únicos datos que tenemos que tener de nuestro servidor Asterisk es la dirección IP, el usuario, la extensión y la clave.
Debemos especificar las siguientes opciones:
Display Name: Nombre que queremos que aparezca en el teléfono cuando llamamos
User Name: el nombre de usuario (numero de la extensión)
Password: La clave asignada al usuario
Autorization user name: El nombre del usuario (nombre de la extensión)
Domain: Dirección ip o nombre dns de nuestro servidor Asterisk.
Una vez introducidos estos datos y guardándolos, podemos observar en la consola de Asterisk el registro de la extensión que acabamos de configurar en el teléfono.
Para probar el funcionamiento del teléfono marcamos cualquier número y en la consola de Asterisk deberíamos de ver un mensaje indicándonos que no existe la extensión, y escuchamos una locución en ingles indicándonos que la persona en la extensión (numero marcado) no está disponible.
PLAN DE LLAMADAS
HELLO WORLD
La primera práctica que vamos a realizar es crear una extensión para que nos reproduzca una de las múltiples locuciones que tiene Asterisk.
Para ello debemos de editar el fichero extensions.conf. Este fichero tiene múltiples opciones y ejemplos de extensiones, pero los elementos básicos son los que se indican a continuación.
Para crear nuestra primera regla en el dialplan, vamos a crear una extensión que acabe en 9, siguiendo las reglas de nomenclatura de extensiones que indicamos en este manual.
Debemos recordar que al crear as extensiones hemos definido un contexto users, por lo que nuestras reglas deben de ir agrupadas en ese contexto. Debemos introducir lo siguiente en el fichero extensions.conf.
En el ejemplo, cuando desde nuestro teléfono marquemos la extensión 1009, escucharemos la locución “Hello World”, seguido del número de nuestro Asterisk
Debemos tener en cuenta las prioridades en la definición de la extensión, ya que es muy común copiar y pegar líneas, y si estas tienen el mismo número de prioridad, solo se ejecutará la primera.
Guardamos el fichero, y desde la consola de Asterisk ejecutamos
CLI> dialplan reload
para que recargue el fichero de extensiones. Ahora solo nos queda marcar desde nuestro teléfono la extensión 1009 y escuchar la locución.
En el siguiente paso vamos a crear nuestra propia extensión, para poder recibir llamadas.
Guardamos el fichero, y desde la consola de Asterisk recargamos el fichero de extensiones.
CONFIGURACIÓN DE ASTERISK PARA RECIBIR LLAMADAS DE OTRO ASTERISK
Dado que en el curso no disponemos de teléfonos físicos para que cada alumno tenga dos teléfonos, vamos a configurar nuestro Asterisk para que pueda recibir llamadas de otros Asterisk y enviarlas a otros equipos.
Con este sistema simularemos dos centralitas en diferentes ubicaciones, y podremos realizar llamadas y recibirlas marcando los números correspondientes.
Para ello debemos de realizar dos operaciones, una en el fichero sip.conf (que definía las extensiones locales, y las conexiones remotas) y una regla de marcado en el fichero extensions.conf.
En el fichero sip.conf debemos registrar la maquina a la que queremos acceder.
El registro de servidores externos debe realizarse bajo el contexto [general] y tiene la siguiente sintaxis:
Register => USUARIOREMOTO:CONTRASEÑAREMOTA@IPEQUIPOREMOTO/EXTENSIONLOCAL
Introducimos los siguientes datos en el fichero sip.conf, sustituyendo el nombre de usuario, la contraseña, la dirección ip y el contexto del equipo remoto, recordando la nomenclatura indicada al principio del curso.
En este mismo fichero debemos especificar la extensión local. En este caso utilizaremos una palabra para definir la extensión local, ya que es una extensión que no se teclea en ningún teléfono (por eso utilizamos letras y no números) y se utiliza para el registro de servidores.
Los parámetros introducidos en la definición de la extensión son los mismos que hemos definido al crear nuestra propia extensión, pero en este ejemplo hemos añadido algunos más, que también pueden definirse en nuestra extensión, o a nivel global:
disallow=all Deshabilitamos todos los códec de audio
allow=ulaw Habilitamos el códec ulaw
allow=alaw habilitamos el códec alaw
allow=gsm habilitamos el códec gsm
insecure=invite Indica que en el envío del paquete sip INVITE no tenga en cuenta la dirección ip que lo origina, por si estamos detrás de un proxy o realizamos NAT en nuestra red
Una vez introducidos estos datos, debemos guardar el fichero y desde la consola de Asterisk recargar el fichero sip con el comando
CLI> sip reload
Para ver si nos hemos registrado correctamente en el servidor remoto tecleamos desde la consola de Asterisk el siguiente comando
CLI> sip show registry
y nos debe mostrar en la consola el resultado del registro
Para ver si tenemos un servidor remoto creado en nuestro dialplan, ejecutamos la siguiente orden
CLI> sip show peers
Debemos de tener en cuenta que el registro debe de realizarse entre dos servidores, teniendo que hacer esta misma configuración en el equipo remoto, pero con los datos correspondientes. A
continuación se muestran las pantallas de dos equipos Asterisk registrados entre sí, uno se llama Asterisk1 (172.20.1.200) y el otro Asterisk2 (172.20.1.201)
DIALPLAN PARA LLAMADAS REMOTAS
Una vez que hemos configurado nuestro Asterisk y hemos registrado otro Asterisk, debemos introducir las reglas correspondientes en el dialplan para que las llamadas hacia el servidor remoto sean enviadas a este, y no tratadas localmente.
Para ello debemos editar el fichero extensions.conf y agregar las siguientes líneas
Recordad, que debemos crear estas reglas dentro del contexto [users], ya que es el que hemos definido en nuestra conexión remota
Debemos guardar el fichero y recargar el fichero extensions.conf desde la consola de Asterisk y llamar a una extensión remota. Podemos probar por la extensión que acaba en 9 y escucharemos el mensaje “Hello world” seguido del numero del equipo Asterisk.
ASTERISK LAB
MODULO 6 PLAN DE LLAMADAS AVANZADO
BUZON DE VOZ EN LAS EXTENSIONES
En esta sección vamos a trabajar sobre un fichero de Asterisk denominado voicemail.conf. En este fichero debemos definir cuáles son extensiones que tienen buzón de voz (contestador automático).
Modificando el fichero voicemail.conf, indicamos que una extensión tiene buzón de voz, pero debemos modificar también el fichero de extensiones (sip.conf) para asociar una extensión a una cuenta de correo y el plan de llamadas (extensions.conf) para indicarle bajo qué circunstancias saltará el buzón de voz del usuario cuando recibe una llamada.
Si se modifica este fichero, debemos recargarlo en la consola ejecutando el siguiente comando:
CLI> module reload app_voicemail.so
A continuación debemos modificar el fichero sip.conf y añadir a cada una de las extensiones locales que hemos creado el parámetro:
mailbox = NUMEROEXTENSION@default
en nuestro caso
mailbox = 1001@default
default identifica el contexto dentro del fichero voicemail.conf
Recargamos desde la consola el fichero.
A continuación modificamos el fichero del dialplan (extensions.conf) para indicarle que en el caso de que no contestemos a una llamada, salga el buzón de voz.
El siguiente paso es crear una extensión en nuestro sistema para que el usuario pueda leer sus mensajes de voz. Debemos crearla en el dialplan (extensions.conf)
La extensión que creemos va a ser de dos cifras, escogiendo en este caso el 99.
Recargamos el fichero desde la consola ejecutando
CLI> dialplan reload
A partir de este momento, podemos llamar a la extensión 99 y una locución nos preguntará por el número de la extensión, y la clave. Recordad que la clave del usuario se define en el fichero voicemail.conf y en este caso es 9999
IMPLEMENTACIÓN DE UN MENÚ BÁSICO
Para realizar este ejercicio debemos de realizar dos pasos.
El primer paso consiste en grabar una locución desde nuestro teléfono, que aunque no tendrá una optima calidad, nos servirá para el propósito del ejercicio. Si se dispone de una locución grabada, esta se puede colocar en el directorio
/var/lib/asterisk/sounds/en
Las dos últimas letras de la ruta indican el idioma de los sonidos de Asterisk.
Vamos a crear una extensión en nuestro sistema, a la que llamaremos para grabar un mensaje. Para ello debemos introducir en el fichero extensions.conf una extensión que acabe en 8, teniendo en cuenta la nomenclatura de las extensiones para cada equipo. En este caso es la extensión 1008
A continuación debemos guardar el fichero y recargar el fichero de extensiones desde la consola de Asterisk.
Para probar la extensión, marcaremos desde nuestro teléfono la extensión creada, y después de escuchar un pitido dictaremos lo siguiente:
“ASTERISK XXXX. PULSE 1 PARA HABLAR CON LA EXTENSIÓN O 2 PARA HABLAR CON OTRO ASTERISK”
Sustituyendo la XXXX por el numero de Asterisk correspondiente a cada equipo.
Después de dictar el mensaje pulsaremos la tecla “#”, que es la tecla terminadora del mensaje y escucharemos el mensaje que hemos dictado al sistema.
Si volviésemos a marcar la extensión, el mensaje se volvería a grabar, reemplazando el mensaje existente por el nuevo.
A continuación vamos a ordenar nuestro dialplan incluyendo un nuevo contexto.
Debemos agrupar todo lo relacionado con el Asterisk externo en un contexto denominado [remoto], y realizaremos un include en el contexto [users] .
Debemos recordar que la lógica del dialplan es de arriba hacia abajo, y que dependiendo de donde pongamos el include, este se procesará antes o después. En nuestro ejemplo, el include del contexto [remoto] va a ser la última línea del contexto [users].
También crearemos una nueva regla para el Asterisk remoto, que será la extensión de la centralita remota, en este caso la 1100
En un segundo paso, crearemos la lógica para nuestro menú.
Cuando llamemos a la extensión de la operadora (que aún no hemos creado), se escuchará la locución que hemos grabado, y en función de la tecla que pulsemos, nos redirigirá a una extensión.
Para ello modificamos el fichero de extensiones y escribimos lo siguiente
A mayores de lo anterior, debemos crear la extensión de la operadora local, en este caso crearemos una que acabe en 0, siguiendo la nomenclatura de las extensiones indicadas anteriormente
Una vez realizados estos cambios en el fichero extensions.conf, desde la consola de Asterisk debemos recargar el dialplan y probar nuestra instalación.