Post on 15-Apr-2017
ELASTIX® CERTIFICATION
labs
Lab-15
Mensajería Instantánea en Elastix Laboratorio 15.1 Descripción: Instalación de Openfire con una base de datos Mysql. Objetivo: Instalar Openfire con una base de datos Mysql, crear la base de datos y el usuario de dicha base de datos. Tiempo Máximo: 15 minutos. Instrucciones: Ingresamos a la consola de Elastix como usuario root Ir al directorio cd /opt/openfire/resources/database Una vez en el directorio ejecutar el siguiente comando para crear la base de datos openfire mysqladmin create openfire -p La clave de root de mysql la ingresamos durante la instalación de Elastix. Para este caso es
“palosanto”
Revisaremos si la base de datos fue creada correctamente. Ejecute el siguiente comando:
mysql -u root –p Password: palosanto
Una vez en la base de datos utilice: show databases;
1
ELASTIX® CERTIFICATION
labs
Lab-15
Crear la estructura de la base de datos con el siguiente comando:
cat openfire_mysql.sql |mysql openfire –p
Crear el usuario Openfire con todos los privilegios para ejecutar las sentencias SQL en la base de
datos Openfire. Ingresar a mysql con el siguiente comando:
mysql -u root –p Password: palosanto
Una vez en la base de datos digite: use openfire;
Luego digite:
GRANT ALL PRIVILEGES ON openfire.* TO 'openfire'@'localhost' IDENTIFIED BY 'openfire';
En la sentencia anterior creamos el usuario “openfire” con el password “openfire”. Ir a la interface de Elastix y hacer click en la pestaña “IM”. Activar OpenFire.
2
ELASTIX® CERTIFICATION
labs
Lab-15
Configuramos el lenguaje
Especificamos el dominio del sistema, coloquemos el mismo dominio que nuestra Elastix.
Seleccionamos la base de datos a utilizar. En este caso seleccionaremos la opción Conexión
Estándard
Una vez que seleccionamos una base de datos externa, tendremos que indicar la información
correspondiente. El tipo de base de datos es “MySQL”. La clase de Driver se coloca por defecto y es: com.mysql.jdbc.Driver
3
ELASTIX® CERTIFICATION
labs
Lab-15
La URL de la base de datos es coloca por defecto el siguiente valor: jdbc:mysql://[host-name]:3306/[database-name]
Reemplazamos [host-name] por “localhost” y [database-name] por “openfire” de tal manera que
tengamos: jdbc:mysql://localhost:3306/openfire Con esto indicamos que la base de datos está ubicada en el localhost y se denomina openfire. El usuario es: openfire y la contraseña: openfire
Ahora seleccionamos el sistema de usuarios, colocamos “Por defecto”.
Colocamos el correo y la contraseña de la cuenta admin.
4
ELASTIX® CERTIFICATION
labs
Lab-15
Una vez que completamos la configuración podemos ingresar a la interfaz de administración.
5
ELASTIX® CERTIFICATION
labs
Lab-15
Mensajería Instantánea en Elastix Laboratorio 15.2 Descripción: Integración de Openfire con Elastix. Objetivo: Integrar Asterisk con Openfire. Tiempo Máximo: 15 minutos. Instrucciones: Una vez que ingresamos a la interfaz de administración podemos crear cuentas para usuarios e
instalar plugins. Instalaremos el plugin “Asterisk-IM”. En la interfaz de Openfire ir al menú Plugins
Observamos un listado de plugins disponibles, instalaremos: Asterisk-IM Openfire Plugin. Hacemos clic en el signo “+” junto a la aplicación.
Si el plugin “Asterisk-IM”.se instaló correctamente, veremos un menú nuevo llamado “Asterisk-IM”.
Hacemos clic en el menú “Asterisk-IM” para iniciar la configuración
6
ELASTIX® CERTIFICATION
labs
Lab-15
Seleccionamos la opción “Enabled” y colocamos “default” en el campo “Asterisk Context”. Una vez hecho esto hacemos clic en save.
Habilitaremos también la opción “Asterisk Queue Presence” y deshabilitamos la opción: “Drop-down
device selection”
Inmediatamente observaremos la opción “Add Server”, hacemos clic para configurar la funcionalidad “Phone Server”.
Hacemos clic en Add Server y obtendremos los siguientes campos:
• Server Name: elastix_domain (el host del servidor elastix) • Server Address: 127.0.0.1 • Port: 5038 • Username: admin • Password: contraseña_de_AMI
7
ELASTIX® CERTIFICATION
labs
Lab-15
La contraseña que utilizaremos, es la misma que configuramos durante la instalación de Elastix. Sino queremos estar seguros del host que tiene nuestro Elastix ejecute “hostname” en la consola.
(En este ejemplo es test.elastix.org) Nota: el hostname es vital para casos que necesiten resolución por DNS
Observaremos enlistado el servidor si la configuración fue exitosa.
Creación de usuarios y mapeo Para crear usuarios, debemos ir al menú “usuarios/grupos”. Hacemos clic en “Crear Nuevo Usuario”
8
ELASTIX® CERTIFICATION
labs
Lab-15
Como podemos observar, los campos requeridos obligatorios son el usuario y la contraseña. Crearemos otro usuario con el nombre Galileo Galilei y el user: ggalilei
Ahora es necesario mapear los usuarios creados con extensiones disponibles en nuestra Elastix.
Tenemos creadas la extensión 200, 201 y 202. Mapearemos a jdoe con la extensión 200 y a ggalilei con la extensión 202. Para mapear las extensiones debemos ir a: OpenFire → Asterisk-IM → Phone Mappings Una vez en Phone Mappings, añadiremos el mapeo para jdoe:
Configuramos los campos de la siguiente manera:
• Username: jdoe • Device: SIP/200 • Extension: 200 • Caller ID: 200 • Primary: check
Hacemos clic en add y se añadirá el mapeo para ese usuario. Hacemos lo mismo con ggalilei.
9
ELASTIX® CERTIFICATION
labs
Lab-15
Mensajería Instantánea en Elastix Laboratorio 15.3 (Práctica recomendada) Descripción: Instalar dos clientes de mensajería instantánea, uno de ellos “Spark”, para probar la funcionalidad de integración de Openfire con Asterisk. Objetivo: Aplicar las configuraciones vistas en clase en un ejemplo real y demostrar el funcionamiento de la mensajería Instantánea con Elastix. Tiempo Máximo: 15 minutos. Instrucciones: Para probar la funcionalidad de llamada podemos hacer login desde dos clientes de mensajería
instantánea. Uno de ellos debe ser Spark, ya que tiene un plugin denominado “SIP Softphone” que nos permitirá
hacer el marcado. El otro cliente puede ser cualquiera de los siguientes: Pidgin (windows, mac, ubuntu, source), iChat
(mac). Cualquier cliente que permita crear una cuenta jabber/XMPP. Haremos login con ggalilei en spark y con jdoe desde cualquier cliente IM. Para ingresar al spark ingresamos los siguientes datos:
En el caso de otro cliente IM, lo mas común es que pidan la siguiente información: Usuario: user@elastix_domain (elastix_domain = host de Elastix) Servidor Jabber / XMPP: IP de Elastix Password: Contraseña Una vez que ingresamos con ambas cuentas, podemos iniciar el chat. En la siguiente imagen podemos observar que ggalilei tiene abierta una ventana de mensajes, y tiene
el ícono de un teléfono.
10
ELASTIX® CERTIFICATION
labs
Lab-15
En la siguiente imagen podemos observar como se inicia la llamada al hacer clic en el ícono de
teléfono. La primera llamada es a la extensión 202 de ggalilei. ¿Por qué, si marcamos a jdoe?
Esto funciona así por una razón sencilla el plugin Asterisk-IM, hace “clic to call”. Cuando uno activa esta funcionalidad, como en el caso de la imagen, el servidor Elastix/Asterisk
llama a la extensión que generó la llamada primero, en este caso la extensión 202 de ggalilei. Una vez que ggalilei contesta la llamada, Elastix/Asterisk llama a la extensión de destino, en este
ejemplo la extensión 200 de jdoe. La razón es que Asterisk conecta ambas extensiones con una llamada, pero no llama a la extensión
de destino a menos que la extensión que generó el pedido haya aceptado un invite, es decir que se ponga al teléfono.
¿Tiene su lógica no? Una llamada solo se generará si y solo si nosotros realmente estamos en la
línea, caso contrario no.
Clic to call
11
ELASTIX® CERTIFICATION
labs
Lab-18
Seguridad Laboratorio 18.1 Descripción: En este laboratorio aprenderemos a cambiar las claves de las principales aplicaciones de Elastix. Objetivo: Cambiar las contraseñas de Elastix para asegurar nuestro servidor Tiempo Máximo: 15 minutos. Instrucciones: Cambiar la contraseña del administrador en Elastix
1. Para cambiar la configuración de Elastix debemos ingresar a la interfaz web de Elastix como Administradores. 2. Luego ir a System → Users Management 3. Seleccionamos el usuario admin 4. Se selecciona la opción editar y podemos cambiar la contraseña del usuario admin. Habilitar y cambiar la contraseña de freePBX 1. Para cambiar la contraseña de freePBX nos dirigirnos al módulo de Seguridad de Elastix.
2. Luego seleccionaremos Advanced Settings 3. Habilitaremos el acceso a freePBX como se muestra a continuación y cambiaremos su password
12
ELASTIX® CERTIFICATION
labs
Lab-18
4. Hacemos clic en “Guardar” 5. Nos dirigiremos a PBX → PBX Configuration → freePBX sin embeber 6. Iniciaremos sesión con el nuevo password
7. Deshabilitaremos el acceso a freePBX sin embeber en el apartado de Advanced Settings dentro del
módulo de seguridad.
Cambiar contraseña del usuario root de Linux 1. Para cambiar la contraseña ingresamos a Elastix como usuario root 2. Una vez que hemos ingresado escribimos el comando: passwd 3. Al hacer esto, el equipo nos solicitará la contraseña nueva, la ingresamos y presionamos enter. 4. Inmediatamente nos solicitará una confirmación de la nueva contraseña, volvemos a ingresarla y
presionamos enter:
Cambiar contraseña del usuario root de mysql 1. Desde la línea de comando de Linux escribimos: mysqladmin -u root -pClaveActual password 'ClaveNueva'
2. Ingresamos la clave que configuramos al momento de instalar Elastix. Ej: Si la clave actual es palosanto y queremos cambiarla a worldelastixnow la sentencia debe ser:
13
ELASTIX® CERTIFICATION
labs
Lab-18
mysqladmin -u root -ppalosanto password 'worldelastixnow'
3. Hacemos clic en enter y si todo salió bien obtendremos únicamente una nueva línea. 4. Podemos probar la nueva contraseña ingresando a mysql con el siguiente comando: mysql -u root –p
Salimos con exit Cambiar la contraseña de Flash Operator Panel 1. Abrir el archivo /etc/amportal.conf vim /etc/amportal.conf 2. Buscar la línea FOPPASSWORD=
3. Cambiar la clave remplazando la cadena de texto luego del signo "=" , como se muestra a
continuación: FOPPASSWORD=nuevaclave 4. Grabar y Salir (Esc → :wq)
14
ELASTIX® CERTIFICATION
labs
Lab-18
Seguridad Laboratorio 18.2 Descripción: Asegurar Elastix utilizando el Firewall en el mismo servidor con el módulo de seguridad de Elastix. Se asume para esta práctica que solo se tiene 1 interfaz de red y que esta se llama eth0. Objetivo: Aprender a cerrar todos los puertos menos los estrictamente necesarios para el funcionamiento de nuestra Central Tiempo Máximo: 10 minutos. Instrucciones: 1. Ingresar a la sección de Firewall dentro del módulo de seguridad de Elastix. 2. Activar el firewall presionando el botón "Activar Cortafuegos" tal como se muestra a continuación.
15
ELASTIX® CERTIFICATION
labs
Lab-18
3. Realizar un escaneo local de puertos utilizando el comando "nmap -v -A localhost"
16
ELASTIX® CERTIFICATION
labs
Lab-18
Seguridad Laboratorio 18.3 (Práctica recomendada) Descripción: Asegurar Elastix utilizando el Firewall en el mismo servidor utilizando iptables por línea de comando. Se asume para esta práctica que solo se tiene 1 interfaz de red y que esta se llama eth0. Objetivo: Aprender a cerrar todos los puertos menos los estrictamente necesarios para el funcionamiento de nuestra Central Tiempo Máximo: 20 minutos. Instrucciones: Ingresamos a la consola de Elastix como usuario root. Una vez en la consola ejecutamos las
siguientes líneas: Nota: podemos ver nuestro progreso con: iptables -L Aceptar el tráfico para el protocolo SIP iptables -A INPUT -p udp -m udp -i eth0 --dport 5060 -j ACCEPT Aceptar el tráfico para el protocolo RTP iptables -A INPUT -p udp -m udp -i eth0 --dport 10000:20000 -j ACCEPT Aceptar el tráfico para el protocolo IAX iptables -A INPUT -p udp -m udp -i eth0 --dport 4569 -j ACCEPT Aceptar el tráfico de HTTPS iptables -A INPUT -p tcp -i eth0 --dport 443 -j ACCEPT Aceptar el tráfico de SMTP iptables -A INPUT -p tcp -i eth0 --dport 25 -j ACCEPT Aceptar el tráfico de POP3 iptables -A INPUT -p tcp -i eth0 --dport 110 -j ACCEPT Aceptar el tráfico de IMAP iptables -A INPUT -p tcp -i eth0 --dport 143 -j ACCEPT Aceptar el tráfico de mensajería Instantánea iptables -A INPUT -p tcp -i eth0 --dport 9090 -j ACCEPT Denegar todo el otro tráfico restante iptables -A INPUT -p all -i eth0 -j DROP Una vez que hemos ingresado todas las líneas, grabamos la configuración con el siguiente comando: iptables-save > /etc/sysconfig/iptables
17
ELASTIX® CERTIFICATION
labs
Lab-18
Seguridad Laboratorio 18.4 (Práctica recomendada) Descripción: Utilizar el módulo de Seguridad de Elastix para detectar claves débiles en el sistema. Objetivo: Aprender a utilizar la utilidad Weak Keys para evitar ataques de fuerza bruta a nuestras extensiones. Tiempo Máximo: 5 minutos. 1. Crear una nueva extensión SIP con la contraseña "1234" 2. En la interfaz de Elastix ir a: Security → Weak Keys 3. Hacer click en el link "Cambiar Clave" que aparecerá a continuación de nuestra extensión
comprometida.
4. Cambiar la clave y guardar
18
ELASTIX® CERTIFICATION
labs
Lab-17
Desempeño Laboratorio 17.1 Descripción: Utilizar el programa Sipp para generar tráfico llamadas. Objetivo: Aplicar las configuraciones vistas en clase en un ejemplo real y demostrar el funcionamiento de Sipp, simulando el desempeño de nuestro Elastix en un ambiente de producción. Tiempo Máximo: 30 minutos. Instrucciones: Ingresamos a la consola de Elastix como usuario root Instalamos el programa sipp ejecutando el siguiente comando: yum install sipp Una vez que hemos instalado sipp, definimos un peer sip. Añadimos en el archivo
/etc/asterisk/sip_custom.conf la siguiente información: [sipp_test] type=friend context=sipp_context host=dynamic port=6000 user=sipp canreinvite=no disallow=all allow=ulaw Para editar el archivo digite: vim /etc/asterisk/sip_custom.conf
Grabar y Salir (Esc → :wq) Creamos una extensión adicionando un contexto para hacer nuestra prueba
Editar el archivo /etc/asterisk/extensions_custom.conf. vim extensions_custom.conf
19
ELASTIX® CERTIFICATION
labs
Lab-17
Agregar las siguientes líneas al archivo
Grabar y Salir (Esc → :wq) Como podemos observar el contexto funciona cuando se marca a la extensión 2222, esta contestará
tocará un Music on Hold y colgará. Sipp se encargará de hacer tantas llamadas por segundo se requieran a este contexto.
Recargar asterisk: [root@elastix asterisk]# asterisk -rx “reload” Antes de iniciar las pruebas de estrés con sipp, activaremos las llamadas SIP anónimas en Elastix.
En la interfaz web de Elastix ir a Security → Advanced Settings. Una vez ahí encenderemos “Activar llamadas SIP anónimas”.
No es necesario hacer clic en “Guardar”. De la misma manera vamos a PBX → PBX Configuration → Configuración General y activamos la
opción: “Allow Anonymous Inbound SIP Calls?”
[from-internal-custom] include => sipp_context [sipp_context] exten => 2222,1,Answer exten => 2222,n,MusicOnHold(default) exten => 2222,n,Hangup
20
ELASTIX® CERTIFICATION
labs
Lab-17
Seleccionamos la opción “Yes” y hacemos clic en “Submit Changes”. Después aplicamos los cambios. Ejecutando Sipp Una vez que hemos completado la configuración inicial estamos listos para ejecutar sipp y generar
llamadas a nuestro servidor. Ejecutamos el siguiente comando en donde el último parámetro indica el número de llamadas a
generar: sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 ip.elastix –r 10 -l 10 En este comando se debe incluir la IP del servidor Elastix (ip.elastix) cuando la generación de
llamadas se realiza desde un servidor remoto. Si la prueba es en el mismo servidor debemos colocar: 127.0.0.1. Para este laboratorio la prueba la realizaremos en el mismo servidor.
El listado siguiente corresponde a una descripción de los parámetros del comando anterior
− d: duración de llamada (en milisegundos) − s: extensión a marcar − i: IP que ejecuta la orden de simulación de llamadas − p: puerto e IP del servidor Elastix donde se quieren hacer las pruebas de stress − r: rate, llamadas por segundo − l: limite máximo de llamadas concurrentes − users: usuarios (llamadas) concurrentes (en este ejemplo no usamos esta variación)
Como podemos observar el comando tiene configuradas 10 llamadas por segundo con un límite
máximo de 10 llamadas. Es recomendable realizar inicialmente las pruebas con un valor bajo de llamadas por segundo, ya que
no conocemos la capacidad de nuestro servidor. Realizaremos una prueba con un limite máximo de 10 llamadas concurrentes y luego una con un límite máximo de 80 llamadas concurrentes; en ambos casos con un rate de 10 llamadas por segundo.
Para esta prueba es necesario que iniciemos sesión en la consola de Elastix, desde tres consolas (el
programa putty permite esta funcionalidad). En todas las ventanas ingresaremos como usuario root. En cada consola ejecutaremos un comando:
21
ELASTIX® CERTIFICATION
labs
Lab-17
Consola 1: comando sipp Consola 2: comando top Consola 3: Asterisk CLI: asterisk –r
Es recomendable que iniciemos top y el CLI antes de ejecutar el comando sipp. Una vez que tenemos todo listo, ejecutemos sipp: sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 127.0.0.1 –r 10 -l 10 Veremos la siguiente salida:
En la consola de la derecha se está ejecutando sipp. En la consola superior izquierda el comando
Top y en la consola inferior izquierda Asterisk CLI. La aplicación Sipp es una herramienta que genera llamadas sipp simuladas en o hacia un servidor.
Cuando se ejecuta, genera un número de llamadas por segundo hasta alcanzar el máximo de llamadas concurrentes.
Una vez alcanzadas, sipp continúa tomando datos estadísticos. La ejecución de sipp sin embargo
consume un alto procesamiento al servidor, como vemos en el siguiente imagen:
Paramos la ejecución de sipp con ctrl-c, y obtenemos un reporte:
22
ELASTIX® CERTIFICATION
labs
Lab-17
En realidad ya no necesitamos que sipp siga ejecutándose, ya que las llamadas se generaron y
tienen una duración para que podamos observar los resultados. Una vez que hemos parado sipp, observaremos que procesos están consumiendo mas
procesamiento.
Como podemos observar, en la imagen anterior, Asterisk consume un aproximado de 12.9% del CPU,
con 10 llamadas concurrentes. Estos datos pueden variar de acuerdo a la variación de su servidor. Mientras leemos este tutorial, las llamadas continúan en curso, por lo cual ejecutaremos dos
comandos en las consolas de la izquierda para observar nuevos datos:
Consola superior: top -p $(pidof asterisk) Consola inferior: watch -n1 "rasterisk -x 'core show channels' | tail -n4" En la consola superior hemos discriminado los valores para observar únicamente el valor porcentual
de Asterisk (que es lo que nos interesa en este laboratorio).
En la consola inferior podemos ver el número de llamadas y canales en curso mientras revisamos
nuestros datos.
23
ELASTIX® CERTIFICATION
labs
Lab-17
Como esperábamos las llamadas concurrentes son 10. En el laboratorio 17.2 realizaremos una prueba para tomar muchos valores de uso de procesamiento
de tal manera que podamos hacer un promedio para ese número de llamadas concurrentes. Aunque ya paramos Sipp, las llamadas continúan en curso. Para pararlas ejecute el siguiente
comando desde cualquiera de las tres consolas: service asterisk restart Al ejecutar este comando observaremos en las consolas de la izquierda, que Asterisk no está
generando procesamiento y no hay llamadas activas al momento. Ahora realizaremos la prueba con 40 llamadas concurrentes. Ejecute:
Consola derecha: sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 127.0.0.1 -users 40 Consola Superior Izquierda: top -p $(pidof asterisk) Consola Inferior Izquierda, controlaremos el número de canales: watch -n1 "rasterisk -x 'core show channels' | tail -n4"
Recuerde ejecutar los comandos en las consolas de la izquierda primero y sipp después. Consumo % de Asterisk
Canales y llamadas activas
Como era de esperar, el consumo de recursos, por parte de Asterisk, fue mayor con 40 llamadas
concurrentes.
24
ELASTIX® CERTIFICATION
labs
Lab-17
Es importante indicar que los valores para cada servidor varían. Es recomendable hacer la prueba sin tarjetas de telefonía instaladas, con Openfire y el módulo de call center desactivados. De esa manera no tenemos procesos que interfieran en nuestra revisión.
25
ELASTIX® CERTIFICATION
labs
Lab-17
Desempeño Laboratorio 17.2 (Práctica recomendada) Descripción: Utilizar un script para registrar los datos generados en las pruebas de estrés, con diferentes valores de llamadas simultáneas. Objetivo: Usar una herramienta que nos permita determinar valores estadísticos para calcular datos de procesamiento vs número de llamadas concurrentes. Tiempo Máximo: 20 minutos. Instrucciones: En el laboratorio anterior pudimos observar que en una prueba de estrés vemos los valores
momentáneos de % de uso de CPU. Sin embargo estos valores difieren durante la prueba y no son necesariamente constantes.
Una forma útil para obtener un valor promedio, es el de registrar un número X de valores en un
tiempo determinado. Para este efecto crearemos un Script que registre estos valores en un archivo de texto. Creamos el archivo: vim /opt/getUSAGE Al ingresar al editor de texto escribimos el siguiente script:
ps -o rss,vsize,%mem,%cpu -C asterisk > USAGE.txt sleep 2 for (( i=1; i<15; i++ )) do ps -o rss= -o vsize= -o %mem= -o %cpu= -C asterisk >> USAGE.txt sleep 2 done
Grabar y Salir (Esc → :wq) Como pudimos observar el archivo fue creado en el directorio /opt. El script está escrito para que al
ejecutarlo se genere un archivo de texto con nombre USAGE.txt, que tome “15” muestras cada dos segundos.
26
ELASTIX® CERTIFICATION
labs
Lab-17
Ahora cambiaremos los permisos del archive getUSAGE con el siguiente comando: chmod +x /opt/getUSAGE Una vez que creamos el script y hemos cambiado sus permisos, podemos iniciar la toma de las
muestras. Toma de datos Realizaremos una prueba de estrés con 10 llamadas concurrentes usando sipp y registraremos la
información con el script getUSAGE. Es importante indicar los siguiente:
Correremos el script (getUSAGE) después de 2-3 minutos de haber iniciado las llamadas con sipp; esto permitirá al sistema estabilizarse con esas llamadas. Para correr el script (getUSAGE) es necesario estar ubicados en el directorio /opt El script se ejecuta con el siguiente comando: ./getUSAGE Una vez que iniciemos sipp esperaremos hasta que se hayan generado el total de llamadas concurrentes y saldremos con ctrl-c. Hacemos esto ya que le generación de estadísticas de sipp carga mucho procesamiento.
Al igual que hiciéramos en el laboratorio anterior, utilizaremos tres consolas para realizar la prueba.
Consola derecha: sipp -sn uac -d 2000000 -s 2222 -i 127.0.0.1 -p 6000 127.0.0.1 -users 10 Consola superior Izquierda, controlaremos el número de canales: watch -n1 "rasterisk -x 'core show channels' | tail -n4" Consola inferior Izquierda: ./getUSAGE
Canales y llamadas activas
Al ejecutar ./getUSAGE el script demorará alrededor de 30 segundos mientras toma los datos de
procesamiento y memoria.
27
ELASTIX® CERTIFICATION
labs
Lab-17
Una vez que el script haya culminado podemos ingresar al archivo txt generado de la siguiente manera:
Al ingresar al archivo podemos observar los siguientes valores:
Como podemos observar, tenemos varios valores de procesamiento para esta prueba (10 llamadas concurrentes). Con esto podemos sacar un promedio de procesamiento % con 10 llamadas concurrentes.
Es ideal hacer esta misma prueba con valores de 20, 30, 40, 50, 70, 80, 90 y 100 llamadas
concurrentes (a un rate de 10 llamadas por segundo). De esta manera podemos establecer una curva que nos ayude a pronosticar el rendimiento de nuestro servidor.
Es importante indicar que el script ./getUSAGE sobre escribe el archivo USAGE.txt, por lo cual si lo
queremos tener guardado como referencia debemos hacer un backup con otro nombre e.g. USAGE10.txt
28
ELASTIX® CERTIFICATION
labs
Lab-19
Depuración Avanzada Laboratorio 19.1 Descripción: Utilizar el comando strace en un programa básico y ver la salida cuando se produce un error en la ejecución Objetivo: Familiarizarse con el comando strace y aplicarlo para hacer debugging. Tiempo Máximo: 10 minutos Instrucciones: Crear el archivo divide.c en el directorio /opt con el siguiente contenido
Compilar el archivo divide.c con la opción -g para debugging: Ejecutar el comando strace con la opción -o para enviar la salida al archivo salida.divideXXX.txt: Se ejecutará el programa y pedirá dos números para dividir. En el segundo número ingresar 0:
[root@elastix opt]# vim divide.c
#include<stdio.h> #include<math.h> int main(void) { int a; int b; printf("Introduce el primer numero\n"); scanf("%d", &a); printf("Introduce el segundo numero\n"); scanf("%d", &b); printf("Resultado: %d \n",(a/b)); return 0; }
[root@elastix opt]# gcc -g divide.c -o divide
[root@elastix opt]# strace -o salida-divide.txt ./divide
29
ELASTIX® CERTIFICATION
labs
Lab-19
Revisar el archivo salida-divide.txt como sigue: Al revisar el archivo veremos una línea como sigue: NOTA: SIGFPE es una señal enviada a un proceso ó programa cuando se realiza una operación
errónea de punto flotante.
[root@elastix opt]# vim salida-divide.txt
--- SIGFPE (Floating point exception) @ 0 (0) --- +++ killed by SIGFPE +++
30
ELASTIX® CERTIFICATION
labs
Lab-19
Debugging Avanzado Laboratorio 22.2 Descripción: Utilizar el comando gdb en un programa básico y ejecutar los comandos RUN, STEP, PRINT, BREAK, QUIT. Objetivo: Familiarizarse con el comando gdb y aplicarlo para hacer debugging. Tiempo Máximo: 15 minutos Instrucciones: Instalar el paquete gdb-7.0.1-42.el5.centos.i386.rpm utilizando el comando yum:
[root@elastix opt]# yum install gdb Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.adams.net * commercial-addons: 66.128.53.13 * elastix-base: 66.128.53.13 * elastix-extras: 66.128.53.13 * elastix-updates: 66.128.53.13 * epel: ftp.osuosl.org * extras: mirror.ubiquityservers.com * updates: mirrors.easynews.com Transaction Summary ============================================================================== Install 1 Package(s) Upgrade 0 Package(s) Total download size: 2.4 M Is this ok [y/N]: y Downloading Packages: gdb-7.0.1-42.el5.centos.i386.rpm | 2.4 MB 00:02 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : gdb 1/1 Installed: gdb.i386 0:7.0.1-42.el5.centos Complete!
31
ELASTIX® CERTIFICATION
labs
Lab-19
Crear el archivo imprime.c en el directorio /opt
Compilarlo con la opción -g para debugging: Ejecutar el comando gdb con la opción -q para el programa imprime, como sigue:
[root@elastix opt]# vim imprime.c
#include<stdio.h> #include<math.h> int main(void) { int a; int b; int c; printf("Ingrese el primer numero\n"); scanf("%d", &a); printf("Ingrese el segundo numero\n"); scanf("%d", &b); c=a+b; printf("La suma de %d y %d es %d \n",a,b,c); return 0; }
[root@elastix opt]# gcc -g imprime.c -o imprime
[root@elastix opt]# gdb -q imprime Using host libthread_db library "/lib/libthread_db.so.1". (gdb)
32
ELASTIX® CERTIFICATION
labs
Lab-19
En el prompt de gdb, crear los “breaks” para el programa imprime, como sigue:
Ejecutamos el comando RUN, como sigue:
Vamos avanzando línea por línea con el comando step, como sigue: --
Reading symbols from /opt/imprime...done. (gdb) break imprime.c:1 Breakpoint 1 at 0x8048415: file imprime.c, line 1. (gdb) break imprime.c:2 Note: breakpoint 1 also set at pc 0x8048415. Breakpoint 2 at 0x8048415: file imprime.c, line 2. (gdb) break imprime.c:3 Note: breakpoints 1 and 2 also set at pc 0x8048415. Breakpoint 3 at 0x8048415: file imprime.c, line 3. (gdb) break imprime.c:4 Note: breakpoints 1, 2 and 3 also set at pc 0x8048415. Breakpoint 4 at 0x8048415: file imprime.c, line 4. (gdb) break imprime.c:5 Note: breakpoints 1, 2, 3 and 4 also set at pc 0x8048415. Breakpoint 5 at 0x8048415: file imprime.c, line 5. (gdb) break imprime.c:6 Note: breakpoints 1, 2, 3, 4 and 5 also set at pc 0x8048415. Breakpoint 6 at 0x8048415: file imprime.c, line 6. (gdb) break imprime.c:7 Note: breakpoints 1, 2, 3, 4, 5 and 6 also set at pc 0x8048415. Breakpoint 7 at 0x8048415: file imprime.c, line 7. (gdb)
(gdb) run
Starting program: /opt/imprime
Breakpoint 1, main () at imprime.c:9
9 printf("Ingrese el primer numero\n");
Breakpoint 1, main () at imprime.c:9
9 printf("Ingrese el primer numero\n");
(gdb) step
33
ELASTIX® CERTIFICATION
labs
Lab-19
Ingresamos un valor y ejecutamos el comando “print a” , para imprimir el valor de la variable “a”:
Seguimos la ejecución del programa con el comando “step” hasta terminarlo:
Para salir ejecutamos el comando “quit”, como sigue:
Ingrese el primer numero
10 scanf("%d", &a);
(gdb) step
8
11 printf("Ingrese el segundo numero\n");
(gdb) print a
$1 = 8
(gdb)
(gdb) step 8 11 printf("Ingrese el segundo numero\n"); (gdb) print a $1 = 8 (gdb) step Ingrese el segundo numero 12 scanf("%d", &b); (gdb) step 4 13 c=a+b; (gdb) step 14 printf("La suma de %d y %d es %d \n",a,b,c); (gdb) step La suma de 8 y 4 es 12 15 return 0;
(gdb) quit A debugging session is active. Inferior 3 [process 13906] will be killed. Quit anyway? (y or n) y
34
ELASTIX® CERTIFICATION
labs
Lab-20
DUNDi Laboratorio 20.1 Descripción: Implementar DUNDi mediante el addon de marcado distribuido entre dos servidores Elastix y hacer una prueba de llamada desde las extensiones de uno de los servidores. Objetivo: Utilizar el addon de plan de marcado distribuido para la utilización de DUNDi. Tiempo Máximo: 20 minutos. Instrucciones: Agruparse en pareja para implementar DUNDI con su compañero. Instalar el addon de marcado distribuido en ambos servidores Elastix. Ir al menú Addons
Una vez que hemos instalado el addon, dirigirse a PBX → Distributed DialPlan y completar el
formulario inicial.
En ambos servidores, dirigirse a PBX → Distributed DialPlan y completar el formulario de “Información
General”. En el primer servidor 1 dirigirse al submenú "Password Connection" ubicado a la izquerda.
35
ELASTIX® CERTIFICATION
labs
Lab-20
Copiamos la clave generada o podemos enviarla por correo incluyendo una dirección en el campo “Email” y haciendo clic en enviar. En cualquiera de los dos casos la información que se encuentra en el campo clave, es el certificado que tendremos que usar.
En el servidor 2 dirigirse a "Peers Information" y seleccionar "Nueva Conexión"
Completar el formulario con la dirección IP de el servidor 1 y el certificado / password generado.
Presionar el botón "Petición" Nuevamente en el servidor 1, dirigirse a "Peers Information" donde figurará la nueva petición de
conexión. Hacer clic en el enlace "Petición de Conexión".
Presionar el botón "Aceptar"
36
ELASTIX® CERTIFICATION
labs
Lab-20
En el servidor 2, dirigirse nuevamente a "Peers Information", donde figurará la nueva conexión y
presionar el enlace "Conectar"
Repetir el paso anterior en el servidor 1. Una vez finalizado el proceso obtendremos el siguiente resultado, y podremos realizar llamadas entre
las dos centrales.
En el servidor 2, cree la extensión 400. Registre esta extensión en el teléfono IP o en un softphone. Desde la extensión 200 del servidor 1, marque a la extensión 400. Si todo fue configurado
correctamente debería conectar una llamada.
37