UNIVERSIDAD TECNICA PARTICULAR DE LOJA ESCUELA DE CIENCIAS DE LA COMPUTACIÓN Desarrollo de un Sistema de Soporte Telefónico Autónomo para ISPs Inalámbricos PROYECTO PREVIO A LA OBTENCIÓN DEL TITULO DE INGENIERO EN INFORMÁTICA ASPIRANTES: José Andrés Cuenca Ojeda. Luis Enrique Romero Juelas. DOCENTE –INVESTIGADOR: Ing. María Paula Espinoza. JUNIO 2009 LOJA-ECUADOR Cesión de Derechos Nosotros, José Andrés Cuenca Ojeda y Luis Enrique Romero Juelas, declaramos ser autores del presente trabajo y eximimos expresamente a la Universidad Técnica Particular de Loja y a sus representantes legales de posibles reclamos o acciones legales. Adicionalmente declaráramos conocer y aceptar la disposición del Art. 67 del Estatuto Orgánico de la Universidad Técnica Particular de Loja que su parte pertinente textualmente dice: “Forman parte del patrimonio de la Universidad la propiedad intelectual de investigaciones, trabajos científicos o técnicos y tesis de grado que se realicen a través, o con el apoyo financiero, académico o institucional (operativo) de la universidad”. F:………………………………. José Andrés Cuenca Ojeda F:……………………………………. Luis Enrique Romero Juelas i Certificación Certifico que el presente trabajo fue desarrollado por los señores José Andrés Cuenca Ojeda y Luis Enrique Romero Juelas, bajo mi supervisión. Ing. María Paula Espinoza. Director del Proyecto ii Agradecimiento Agradecemos el apoyo de nuestras familias y amigos que nos han alentado para graduarnos y ser profesionales. De igual manera agradecemos a la empresa Lojasystem proveedora de Internet inalámbrico y a todo su personal de soporte técnico por las facilidades prestadas para el análisis, implementación y pruebas del presente proyecto. iii Dedicatoria Este proyecto se lo dedico a mi familia que me ha apoyado toda mi vida y quiere lo mejor para mi, ésta es una meta para mi padres porque quieren dejar a sus hijos la mejor herencia que les pueden dar, que es una profesión. Muchas gracias a toda mi familia, en especial a mi esposa por la paciencia que me ha tenido. Luis Enrique Quiero dedicar este proyecto con un afecto especial a mi madre que siempre me estuvo dando aliento para salir adelante y culminar este proyecto José Andrés iv Índice OBJETIVOS ............................................................................................. vii 1. GENERALIDADES ............................................................................... 1 1.1. ISP Inalámbrico ......................................................................... 2 1.1.1. Estructura de un ISP Inalámbrico ................................................ 3 1.1.1.1. NOC o Centro de Operaciones ............................................... 3 1.1.1.2. Backbone inalámbrico .............................................................. 4 1.1.1.3. Equipos suscriptores................................................................ 4 1.1.2. Tecnologías para redes WLAN .................................................. 5 1.1.2.1. Estándar IEEE 802.11 ............................................................. 6 1.2. Plataforma de desarrollo ............................................................ 8 1.2.1. Linux ....................................................................................... 10 1.2.1.1. Características de Linux ........................................................ 10 1.2.1.2. Distribución de GNU/Linux .................................................. 13 1.2.1.3. Linux frente a otros sistemas operativos ............................... 14 1.2.2. Asterisk .................................................................................... 15 1.2.2.1. Funcionalidades generales .................................................... 15 1.2.2.2. Funcionalidades avanzadas de asterisk ................................. 16 1.2.2.3. Aspectos generales ................................................................ 17 1.2.2.4. Reducción extrema de costos ................................................ 17 1.2.2.5. Limitaciones de la arquitectura de asterisk ........................... 17 1.2.2.6. Requisitos técnicos del sistema ............................................. 18 1.2.2.7. Arquitectura base de asterisk ................................................ 18 1.2.3. Ivr ............................................................................................ 21 1.2.3.1. Servicios ................................................................................ 21 1.2.3.2. Tecnologías involucradas ...................................................... 22 2. INTRODUCCIÓN ................................................................................ 23 2.1. Análisis de los problemas más comunes en el área de help desk de un ISP inalámbrico............................................... 24 2.2. Solución Propuesta…….............................................................. 26 3. IMPLEMENTACIÓN Y PRUEBAS DEL SISTEMA ..................... 30 3.1. Implementación ......................................................................... 30 3.1.1. Instalación de Linux Debian. .............................................................. 31 3.1.2. Instalación y configuración de asterisk ............................................. 31 v 3.1.2.1. Plan de discado ...................................................................... 31 3.1.2.2. Instalación de un Softphone para las pruebas del IVR. ........ 32 3.1.3. Implementar Acceso a Consola SSH sin Contraseña ....................... 32 3.1.4. Instalar script de monitoreo en el servidor IPCOP…. ........................ 34 3.2. Detalles de Implementación ..................................................... 34 3.2.1. Arquitectura del Sistema de Soporte Automático ............................ 34 3.2.2. Integración del Sistema...................................................................... 36 3.3. Pruebas del Sistema .................................................................. 37 3.3.1. Escalabilidad ..................................................................................... 39 3.4. Resultados Obtenidos ............................................................... 39 4. CONCLUSIONES Y RECOMENDACIONES ................................. 44 4.1. Conclusiones .............................................................................. 44 4.2. Recomendaciones ...................................................................... 45 5. BIBLIOGRAFÍA .................................................................................. 46 6. APÉNDICES ........................................................................................ 48 6.1. Encuesta realizada a ISPs Inalámbricos ................................. 48 6.2. Tabla de los problemas de soporte más comunes de un ISP inalámbrico .............................................................................. 49 6.3. Distribución Linux IPCOP ...................................................... 51 6.4. Hardware a utilizar ................................................................... 53 6.5. Código fuente ............................................................................. 54 vi Objetivos El objetivo central del presente estudio es “desarrollar un sistema de soporte telefónico autónomo para proveedores de internet inalámbrico (ISP)”. Y ampliando más la presente declaración se pretende: Desarrollar de una interfaz de soporte telefónico que bajo ciertos requerimientos pueda trabajar en forma autónoma y que pueda deducir por sí mismo y sin la intervención de ningún ser humano la posible avería que tiene un cliente. Este sistema contestará las líneas telefónicas de soporte técnico; el cual será capaz de detectar hasta un 60% de averías del cliente y recomendará soluciones a los problemas más comunes de soporte. Que ante condiciones anormales durante la provisión del servicio tales como de degradación del sistema, congestión del backbone o caída de algún enlace, el sistema pueda comunicarse y/o recibir feedback de los administradores del ISP, esto mediante emails, o mensajes de texto. Este deberá detectar al menos un 60% de condiciones anómalas. El sistema se integrará estrechamente con la central telefónica y estará destinado a proveer asistencia en horas fuera de oficina tales como noches, fines de semana y feriados; o cuando los técnicos de soporte no puedan atender. vii Capítulo 1. Generalidades En el capítulo 1, se describirá brevemente como funciona un ISP inalámbrico, su estructura y sus componentes, como también se explicarán los estándares de las tecnologías inalámbrica, desarrollo de la tesis, así mismo se hará una exposición de la plataforma de como una breve explicación de Linux, sus características principales, comparativa junto con otros sistemas operativos, y por ultimo una introducción al Asterisk recalcando sus funcionalidades generales, funcionalidades avanzadas, ventajas, limitaciones, requisitos técnicos, su arquitectura con los conceptos relacionados con el esquema (canal, codecs, protocolos, extensión, contexto, aplicaciones, dialplan), Introducción al IVR, sus servicios y las tecnologías involucradas. En el capítulo 2, la introducción expondrá algunos antecedentes de trabajos similares así como también el análisis de los problemas más comunes en el área de help desk (soporte) de un ISP inalámbrico, basado en las repuestas de una encuesta realizada a varios proveedores de internet inalámbrico, luego del análisis se propondrá una solución de la forma en que podrían ser resueltos los problemas por la lógica de un computador. En el capítulo 3 se realizará la implementación del sistema de soporte, en el cual se describirá detalladamente la arquitectura del sistema de soporte automático para luego integrarlo, se desarrollarán las interfaces para que el sistema de soporte interactué con el sistema de gestión del ISP inalámbrico y se procederá con las respectivas pruebas para comprobar los niveles de exactitud del sistema y los niveles de satisfacción del cliente, se determinará la escalabilidad y luego de lo cual se hará un análisis e interpretación de los resultados obtenidos. El capítulo 4 tratará las conclusiones y recomendaciones a las que se ha llegado luego de la culminación del proyecto. 1 El capítulo 5 hace referencia a la bibliografía utilizada, cabe destacar que al tratarse de proyecto de implementar un sistema de soporte telefónico autónomo para solución de problemas en el área de soporte de un ISP inalámbrico la mayor parte de referencia bibliográfica se la ha obtenido de la Internet, y de foros en la Web. Y por último en los apéndices se anexará el modelo de la encuesta realizada a los ISPs inalámbricos, la tabla de los problemas de soporte más comunes de un ISP inalámbrico, breve introducción a la distribución Linux IPCOP, el hardware a utilizar, el dialplan, los archivos tipo texto del código fuente y por ultimo un modelo de una breve encuesta realizada vía telefónica a los usuarios del sistema. También se anexa un manual que detalla las pantallas de instalación y configuración del Linux distribución Debian y del Asterisk. 1.1. ISP INALÁMBRICO Se llama ISP a un proveedor de servicios de internet, viene del término inglés “Internet Service Provider”. Pero cuando un ISP lo provee al servicio en forma inalámbrica se le llama simplemente “ISP Inalámbrico”; en ingles es llamado Wireless ISP o más concreto WISP1. De acuerdo a la legislación ecuatoriana los ISPs son denominados proveedores de valor agregado (RESOLUCIÓN 534-22-CONATEL-2006). Estos se conectan con el usuario final por medio de enlaces inalámbricos o de espectro ensanchado. Este tipo de equipos trabajan generalmente en frecuencias que no requieren concesión por parte del estado, que funcionan en las bandas de 900Mhz, 2.4 y 5 GHZ, estos equipos son generalmente basados en el estándar 802.11a/b/g. Debido que en nuestro país existe una muy limitada oferta de servicios de telecomunicaciones, en ocasiones la única manera de llegar a un usuario en sectores alejados o apartados es mediante este tipo de equipos. 1 Wireless Internet Service Provider (Proveedor de Servicios de internet Inalámbrico) 2 1.1.1. Estructura de un ISP inalámbrico Un ISP inalámbrico posee la misma estructura que uno tradicional con la diferencia que la infraestructura de acceso o de distribución es inalámbrica; la misma que consiste de una serie de sistemas multipunto interconectadas formando un backbone1, las cuales a su vez se enganchan los usuarios mediante los equipos suscriptores o CPEs2. 1.1.1.1. NOC o Centro de Operaciones Es el lugar donde residen los servidores, routers, firewall, infraestructura administrativa y soporte técnico. Aquí el ISP recibe el internet por parte de los carriers o mayoristas (Figura 1-1). INTERNET ETHERNET PBX y Sistema de Soporte telefonico Servidores: dns, email, proxy RED DE TELEFONIA PUBLICA PSTN Router, firewall CLIENTES DEL ISP INALAMBRICO Figura 1-1.Centro de Operaciones (NOC) 1.1.1.2. Backbone Inalámbrico 1 2 Principales conexiones troncales de Internet Customer Premises Equipment (Equipo Local del Cliente) 3 Es la infraestructura de distribución mediante la cual el ISP llega a sus clientes. Es un conjunto de sistemas multipuntos conectados mediante algún medio de trasmisión al NOC central. Cada multipunto provee servicios de Internet a los clientes que están en su área de cobertura en forma similar a las redes celulares (Figura 1-2). Figura 1-2. Backbone inalámbrico 1.1.1.3. Equipos Suscriptores Comúnmente llamados CPEs1. Es un equipo inalámbrico que conecta al cliente con el ISP ya sea este una sola computadora personal o una red de computadoras de área local. En la (Figura 1-3) se hace una representación con diversos equipos suscriptores 1 Customer Premises Equipment (Equipo Local del Cliente) 4 como, teléfono Wi-Fi1, usuarios residenciales, usuarios móviles (laptops). etc . Figura 1-3. Equipos suscriptores [1] 1.1.2. Tecnologías para redes WLAN2 Las necesidades de movilidad de los usuarios de equipos de computación es muy importante hoy en día, razón por la cual Ethernet, que ha sido la tecnología más ampliamente usada, tiene un competidor muy fuerte, las Redes Inalámbricas de Área Local (WLAN). Las WLAN se están utilizando cada vez más en edificios de oficinas, aeropuertos, centros comerciales, restaurantes, hoteles, entre otros lugares públicos. Las WLAN son muy versátiles en las oficinas, ya que son un complemento a la infraestructura cableada, brindando a los usuarios móviles una conectividad 1 2 Wireless Fidelity (estándar para la fidelidad inalámbrica) Wireless Local Area Network (Red inalámbrica de área local) 5 permanente. Adicionalmente permite que visitantes se conecten al Internet o a la red sin tener que conectarse físicamente, lo que implica tener puertos disponibles en el lugar donde se requiera ubicar el computador. 1.1.2.1. Estándar IEEE 802.11 [2] IEEE 802.11 o Wi-Fi es un estándar de comunicaciones que define el uso de los dos niveles más bajos de la arquitectura OSI 1(capa física y capa de enlace de datos), este estándar norma el funcionamiento en una WLAN. El protocolo 802.11 estandarizado en 1997 describe tres técnicas de transmisión de la capa física: la primera el método de infrarrojos que es la misma tecnología que se usa en los controles remotos de televisión; los otros dos métodos utilizan la técnica de radio de espectro expandido, como son espectro ensanchado por salto de frecuencia (FHSS) y espectro ensanchado por secuencia directa (DSSS). Estas dos últimas técnicas utilizan la frecuencia sin licenciamiento de 2.4 GHz, y una velocidad de 1 Mbps y 2 Mbps. Al trabajar en la banda ISM (Industrial, Scientific and Medical) de 2.4 GHz se tiene mucha interferencia con artefactos eléctricos como: puertas automáticas de garajes controladas por radio, los hornos microondas, los teléfonos inalámbricos, etc. La interferencia disminuye la velocidad efectiva al producirse muchos errores en la transmisión, debiéndose retransmitir las tramas erróneas. En 1999 se introdujeron dos técnicas adicionales de modulación para alcanzar mayor capacidad de transmisión, éstas son Multiplexación por División Ortogonal de Frecuencia (OFDM) y Secuencia Directa en Espectro Extendido de Alta Velocidad (HRDSSS) que permiten velocidades de hasta 54 Mbps y 11 Mbps, respectivamente. En el año 2001 se introdujo OFDM para la frecuencia de 2.4 GHz, ya que la primera trabajaba en 5 GHz. 1 Open System Interconnection (modelo de referencia de Interconexión de Sistemas Abiertos) 6 La (Tabla 1-1) muestra una comparativa de los diferentes estándares 802.11 con sus respectivas características, ventajas y desventajas. Es necesario hablar de las tecnologías inalámbricas puesto que el uso adecuado de una tecnología inalámbrica depende mucho en la prevención de problemas que se puedan dar en los enlaces inalámbricos con los clientes. Tabla 1-1 Comparativa de los estándares 802.11 Estándar 802.11 a 802.11b 802.11g 802.11n Velocidad 54Mbps 11Mbps 54Mbps 600 Mbps Frecuencia 5Ghz 2.4Ghz 2.4Ghz Distancias 8 a 23 metros 30 a 45 metros 30 a 45 metros Ventajas -No muy saturada - Algunos Hot Compatible Altas -Los equipos con spots están ya con el velocidades este estándar no instalados con Estándar son muy este estándar 802.11b por comunes, y lo que son más Existen pueden utilizados bastantes coexistir con en usuarios equipos redes corporativos funcionando. de este estándar. Desventajas -Solo con línea de Banda banda No vista Saturada por Saturada por establecida -Distancias cortas equipos equipos Las electrónicos electrónicos especificacio nes finales 7 1.2. PLATAFORMA DE DESARROLLO El presente trabajo pretende implementar un sistema de soporte telefónico automático, esto será realizado mediante una centralita de VOIP1, por lo cual se ha escogido la plataforma de desarrollo de telefonía basada en software libre Asterisk, este producto sobre el sistema operativo Linux, permite desarrollar centrales telefónicas con todas las características que se esperan de una PBX2 comercial, trabajan con voz sobre IP en varios protocolos (SIP, H323) e interoperan con casi todo el equipo estándar basado en telefonía IP usando hardware relativamente barato. De tal manera que es fácil implementar servicios que sólo ofrecen los grandes sistemas PBX propietarios como, correo de voz, conferencia de voz, comunicación de llamada, respuesta interactiva de voz, cola de llamadas, servicio de identificación de llamadas, registro detallado de llamadas etc. Para funcionar con voz sobre IP no necesita de ningún hardware adicional, ahora para interconectar con la telefonía tradicional requiere de tarjetas especiales de muy bajo costo como las tarjetas FXO (Foreign Exchange Office) y mediante el software, realizar y recibir llamadas de teléfono. Sirve sobre todo para implementar centralitas telefónicas (PBX) con un computador. Los dispositivos para conectar un teléfono a un computador son las llamadas FXS (Foreign Exchange Station). Un claro ejemplo de FXO es un típico módem o tarjeta Fax-Modem. La (Figura 1-4) muestra el funcionamiento de un sistema de telefonía IP con Linux. 1 2 Voz sobre IP Private Branch Exchange (Central Telefónica) 8 Figura 1-4. Sistema de Telefonía IP con Linux Haciendo una breve explicación de la (Figura 1-4). El usuario realiza y recibe llamadas desde y hacia su línea telefónica actual utilizando un teléfono convencional, hace uso de la red de telefonía pública (ETB/EPM), las tarjetas o dispositivos de entrada análogo (FXO) permiten la conexión entre el computador (servidor Linux) y la línea telefónica convencional. El servidor Asterisk que está montado en el servidor Linux permite la conversión y administración de las señales analógicas a digitales y viceversa, las mismas que son trasmitidas utilizando la red de datos existente sea esta una red privada (Intranet) o a través de internet sin importar en que parte del mundo se encuentre. Los Adaptadores de Voz sobre IP ATA1 (FXS) son necesarios para una conexión entre la red de datos y los teléfonos convencionales. 1 Advanced Technology Attachment ( tecnología avanzada de acoplamiento) 9 1.2.1. Linux Es un Sistema Operativo. El mismo que está basado en una implementación de UNIX, de distribución libre para computadores que facilita su uso y operación. En la actualidad puede ser instalado en gran variedad de hardware, incluyendo computadores de escritorio, computadores de mano, celulares, dispositivos empotrados, videoconsolas (Xbox, PlayStation), enrutadores y algunos modelos de iPod. Fue desarrollado para el i386 y ahora soporta los procesadores más comunes del mercado. Como sistema operativo, Linux es muy eficiente y tiene un excelente diseño. Es multitarea, multiusuario, multiplataforma y multiprocesador. 1.2.1.1. Características de Linux [3] Multitarea: La palabra multitarea describe la habilidad de ejecutar varios programas al mismo tiempo. LINUX utiliza la llamada multitarea preventiva, la cual asegura que todos los programas que se están utilizando en un momento dado serán ejecutados, siendo el sistema operativo el encargado de ceder tiempo de microprocesador a cada programa. Multiusuario: Muchos usuarios usando la misma máquina al mismo tiempo. Multiplataforma: Las plataformas en las que en un principio se puede utilizar Linux son Pentium III, PentiumIV, Intel Core duo, etc. También existen versiones para su utilización en otras plataformas, como Alpha, ARM, MIPS, PowerPC y SPARC. Multiprocesador: Soporte para sistemas con más de un procesador está disponible para Intel y SPARC (Scalable Processor ARChitecture). Funciona en modo protegido 386. Protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema. Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes de un programa que están siendo usadas actualmente. 10 Política de copia en escritura para la compartición de páginas entre ejecutables: esto significa que varios procesos pueden usar la misma zona de memoria para ejecutarse. Cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar. Esta política de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria. Memoria virtual usando paginación (sin intercambio de procesos completos) a disco: A una partición o un archivo en el sistema de archivos, o ambos, con la posibilidad de añadir más áreas de intercambio sobre la marcha Un total de 16 zonas de intercambio de 128Mb de tamaño máximo pueden ser usadas en un momento dado con un límite teórico de 2Gb para intercambio. Este límite se puede aumentar fácilmente con el cambio de unas cuantas líneas en el código fuente. La memoria se gestiona como un recurso unificado para los programas de usuario y para el caché de disco, de tal forma que toda la memoria libre puede ser usada para caché y ésta puede a su vez ser reducida cuando se ejecuten grandes programas. Librerías compartidas de carga dinámica (DLL's) y librerías estáticas. Se realizan volcados de estado (core dumps) para posibilitar los análisis postmortem, permitiendo el uso de depuradores sobre los programas no sólo en ejecución sino también tras abortar éstos por cualquier motivo. Compatible con POSIX, System V y BSD a nivel fuente. Emulación de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario. Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito. Control de tareas POSIX (operaciones básicas de las tareas de tiempo real). Pseudo-terminales (pty's). 11 Emulación de 387 en el núcleo, de tal forma que los programas no tengan que hacer su propia emulación matemática. Cualquier máquina que ejecute Linux parecerá dotada de coprocesador matemático. Por supuesto, si el ordenador ya tiene una FPU (unidad de coma flotante), esta será usada en lugar de la emulación, pudiendo incluso compilar tu propio kernel sin la emulación matemática y conseguir un pequeño ahorro de memoria. Soporte para muchos teclados nacionales o adaptados y es bastante fácil añadir nuevos dinámicamente. Consolas virtuales múltiples: varias sesiones de login a través de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video). Se crean dinámicamente y puedes tener hasta 64. Soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y todos los sistemas de archivo típicos de System V, y tiene un avanzado sistema de archivos propio con una capacidad de hasta 4 Tb y nombres de archivos de hasta 255 caracteres de longitud. Acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT) mediante un sistema de archivos especial: no es necesario ningún comando especial para usar la partición MS-DOS, esta parece un sistema de archivos normal de Unix (excepto por algunas restricciones en los nombres de archivo, permisos, y esas cosas). Las particiones comprimidas de MS-DOS 6 no son accesibles en este momento, y no se espera que lo sean en el futuro. El soporte para VFAT (WNT, Windows 95) ha sido añadido al núcleo de desarrollo y estará en la próxima versión estable. Un sistema de archivos especial llamado UMSDOS que permite que Linux sea instalado en un sistema de archivos DOS. Soporte en sólo lectura de HPFS-2 del OS/2 2.1 Sistema de archivos de CD-ROM que lee todos los formatos estándar de CDROM. TCP/IP, incluyendo ftp, telnet, NFS, etc. 12 Appletalk. Software cliente y servidor Netware. Lan Manager / Windows Native (SMB), software cliente y servidor. Diversos protocolos de red incluidos en el kernel: TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP, Netrom, etc. 1.2.1.2. Distribución de GNU/Linux Una distribución es un modo de facilitar la instalación, la configuración y el mantenimiento de un sistema. Al principio, las distribuciones se limitaban a recopilar software libre, empaquetarlo en disquetes o CD-ROM y redistribuirlo o venderlo. GNU es un acrónimo recursivo para "Gnu No es Unix" (“GNU's Not UNIX”), GNU es el nombre de un proyecto con el objetivo de crear un sistema operativo completamente libre. Ahora las grandes distribuciones -RedHat, SuSE, Caldera, Mandrake, Corel Linux, TurboLinux...- son potentes empresas que compiten entre sí por incluir el último software, a veces también software propietario, con instalaciones gráficas capaces de autodetectar el hardware y que instalan un sistema entero en unos cuantos minutos sin apenas preguntas (Dee-Ann Leblanc 2001). Entre las distribuciones de GNU/Linux, destaca el proyecto Debian/GNU. Debian nace como una iniciativa no comercial de la Fundación software Libre (FSF), aunque luego se independiza de ésta y va más allá del propio sistema GNU/Linux. Es la única de las grandes distribuciones que no tiene intereses comerciales ni empresariales. Son sus propios usuarios, muy activos, quienes mantienen la distribución de modo comunitario, incluidas todas sus estructuras de decisión y funcionamiento. Su objetivo es recopilar, difundir y promover el uso del software libre. Reúne el mayor catálogo de software libre, todos ellos probados, mantenidos y documentados por algún desarrollador voluntario. 13 En una distribución hay todo el software necesario para instalar en un ordenador personal; servidor, correo, ofimática, fax, navegación de red, seguridad, etc. 1.2.1.3. Linux frente a los otros sistemas operativos Linux es una muy buena alternativa frente a los demás sistemas operativos. Más allá de las ventajas evidentes de costo, ofrece algunas características muy notables. En comparación con las otras versiones de Unix para PC, la velocidad y confiabilidad de Linux son muy superiores. También está en ventaja sobre la disponibilidad de aplicaciones, ya que no hay mucha difusión de estos otros Unixes (como Solaris, XENIX o SCO) entre los usuarios de PC por sus altos costos (Daniel L. Morril 2002). Comparado con los otros sistemas operativos como Microsoft Windows, Linux presenta mayores ventajas. Por los requisitos de hardware bajos, permiten hacer un sistema potente y útil de aquel Pentium III que ya no se usan. Esta misma característica permite aprovechar al máximo las capacidades de las computadoras más modernas. Es poco práctico tener una PC con 256 Mb de RAM y ponerle un sistema operativo que ocupa 128 MB (que es lo que reporta sobre Windows 98 el System Information de Symantec). No solo es superior respecto a el sistema de multitarea y de administración de memoria, sino también en la capacidades de networking (conectividad a redes) y de multiusuario (aún comparando con sistemas multiusuario como NT). La única desventaja de Linux frente a estos sistemas, es la menor disponibilidad de software, y la elevada curva de aprendizaje que se requiere, pero este problema disminuye con cada nuevo programa que se escribe para el proyecto GNU, y con algunas empresas que están desarrollando software comercial para Linux (por ej., Corel). 14 1.2.2. Asterisk Es un software PBX que usa el concepto de software libre (GPL), el asterisk permite conectividad en tiempo real entre las redes PSTN (red telefónica del servicio público) y redes Voip (Jim Van Meggelen 2005) . 1.2.2.1. Funcionalidades Generales La (Figura 1-5) representa un esquema conceptual de Asterisk el cual es capaz de trabajar con prácticamente todos los estándares de telefonía tradicional como Líneas analógicas, Líneas digitales (E1, T1, accesos básicos). Soporta casi todos los protocolos de VozIP como SIP, IAX2 , MGCP, Cisco Skinny. (Gorka Gorrotxategui-Iñaki Baz 2006). Figura 1-5. Esquema conceptual de Asterisk [4] Asterisk es mucho más que un PBX central. Se puede crear cosas nuevas en telefonía como: – Conecta empleados trabajando desde casa para un PBX de la oficina sobre conexiones de banda ancha. 15 – Conectar oficinas en varias provincias sobre IP. Esto puede ser hecho por Internet o por una red IP privada. – Dar a los funcionarios, buzón de voz, integrándolo con una “web” y sus e-mail. – Construir aplicaciones de respuesta automática por voz, que puede conectarlo a un sistema de pedidos, por ejemplo, o a otras aplicaciones internas. – Dar acceso al PBX de la compañía para usuarios que viajan, conectando sobre la red privada virtual (VPN) de un aeropuerto o un hotel. Incluye muchos recursos que solo eran encontrados en sistemas de mensajería unificada como: – Música en espera para clientes en filas de espera, soportando streaming de media así como música en MP3. – Filas de llamadas donde agentes de forma conjunta atienden las llamadas y monitorean dicha fila. – Integración para la sintetización de la conversación (text-to-speech). – Registro detallado de llamadas (call-detail-records) para integración con sistemas de tarificación. – Integración con reconocimiento de voz. – La habilidad de interfaces con líneas telefónicas normales. 1.2.2.2. Funcionalidades Avanzadas de Asterisk. – IVR: Interactive Voice Response, gestión de llamadas con menús interactivos. – LCR: Least Cost Routing, encaminamiento de llamadas por el proveedor VoIP más económico. – AGI: Asterisk Gateway Interface, integración con todo tipo de aplicaciones externas. – AMI: Asterisk Management Interface, gestión y control remoto de Asterisk. – Configuración en base de datos: usuarios, extensiones, proveedores, etc. 16 1.2.2.3. Aspectos Generales Asterisk es un demonio (¿daemon=demonio?) que se ejecuta en segundo plano. Al igual que el resto de servidores conocidos (apache, openssh, proftpd,). La configuración normalmente se almacena en varios ficheros de texto editables de forma tradicional. Se distribuye como código fuente para ser compilado e instalado. Aunque existen versiones 'paquetizadas' para las distribuciones GNU/Linux más comunes. 1.2.2.4. Reducción Extrema de Costos Normalmente los sistemas de PBX digitales tienen costos elevados y para agregar recursos avanzados como voz sobre IP, Buzón de mensajes, unidad de respuesta audible (URA), distribución automáticas de llamadas (DAC), etc, estos componentes son hechos de forma separada y muchas veces de diferentes fabricantes, los costos de adquisición de cada uno de estos componentes son elevados y la integración muchas veces es difícil. Asterisk solo puede ser comparado con PBX digital, y se puede agregar recursos avanzados con una gran facilidad (Flavio E 2007). 1.2.2.5. Limitaciones de la Arquitectura Asterisk Asterisk usa una CPU como servidor para procesar los canales de voz, en vez de tener un procesador de señales digitales (DSP) dedicado a cada canal. Esto permite que el costo sea reducido para las placas E1/T1, el sistema es muy dependiente del performance del CPU. Por lo que es recomendable preservar al máximo la CPU de asterisk, correrlo siempre en una maquina dedicada y sobre todo probar el dimensionamiento antes de implantarlo (Flavio E 2007). 17 1.2.2.6. Requisitos Técnicos del sistema Dependen directamente de: – Llamadas concurrentes. – Conferencias y Aplicaciones complejas simultáneas. – Transcodifcaciones necesarias (recodificación). Principalmente, Asterisk requiere microprocesador. Según Digium Ink (2007): Equipo Dual Intel Xeon 1.8 Ghz 1 Gb Ram soporta 60 llamadas concurrentes codificando con el codec G.729. Es difícil determinar con exactitud, y es mejor apuntar alto para poder escalar. 1.2.2.7. Arquitectura Base de Asterisk La (Figura 1-6) nos muestra la arquitectura básica de Asterisk. Para lo cual necesitaremos explicar los conceptos relacionados con este esquema como los canales, codecs, y las aplicaciones entre otros. Figura 1-6. Arquitectura de Asterisk [4] 18 Canal: Es una conexión que conduce una llamada entrante o saliente en el sistema Asterisk. La conexión puede venir o salir hacia telefonía tradicional analógica o digital o VozIP (Figura 1-7). Figura 1-7. Concepto de canal [4] Por defecto, Asterisk soporta una serie de canales, los más importantes: – H.323, IAX2, SIP, MGCP: Protocolos VozIP – Console: GNU Linux OSS/ALSA sound system. – Zap: Líneas analógicas y digitales. Codecs y conversores de Codecs: Se utiliza para codificar de forma que se emplee el menor ancho de banda permitiendo colocar muchas llamadas como sea posible en una red de datos. Algunos Codecs como el G.729 permite codificar a 8 kilobites por segundo, una compresión de 8 para 1. Otros ejemplos son ULAW, ALAW, G.711, GMS, SPEEX. Protocolos: Enviar datos de un teléfono a otro sería fácil si los datos encontrasen su propio camino para el otro teléfono destino. Desafortunadamente esto no sucede así, es preciso un protocolo de señalización para establecer las conexiones, determinar el punto de destino, y también cuestiones relacionadas a señalización de telefonía como el 19 tono y tiempo de campanilla, identificador de llamadas, desconexión, etc. Hoy es común el uso del SIP ( Session Initiated Protocol), y otros protocolos también muy en auge en el mercado como lo es el H.323, ZAPATA, MGCP, y el más reciente el IAX que es excepcional cuando se trata de Trunking y Nat (Network Address Traslation). Dialplan: Se trata de la configuración de la centralita Asterisk que indica el itinerario que sigue una llamada desde que entra o sale del sistema hasta que llega a su punto final. Se trata en líneas generales del comportamiento lógico de la centralita. Extension: En telefonía tradicional, las extensiones se asocian con teléfonos, interfaces o menús. En Asterisk, una extensión es una lista de comandos a ejecutar. Las extensiones se acceden cuando: – Se recibe una llamada entrante por un canal dado. – El usuario que ha llamado marca la extensión. – Se ejecuta un salto de extensiones desde el Dialplan de Asterisk. Contexto (Context): El Dialplan o lógica de comportamiento de Asterisk se divide en uno o varios contextos. Un contexto es una colección de extensiones. Los contextos existen para poder diferenciar el 'lugar' donde se encuentra una llamada, para: – Aplicar políticas de seguridad: Asterisk no se comporta igual cuando llama un usuario y marca el 1 y cuando un usuario local marca el mismo 1. – Menús y submenús diferenciados. – En general, es una forma de diferenciación. Aplicación (Application): Asterisk ejecuta secuencialmente los comandos asociados a cada extensión. Esos comandos son realmente aplicaciones que controlan el comportamiento de la llamada y del sistema en sí. Algunos ejemplos: 20 – Hangup: Colgar la llamada. – Monitor: Comenzar la grabación a disco de la llamada. – Dial: Realiza una llamada saliente. – Goto: Salta a otra extensión o contexto. – PlayBack: Reproduce un fichero de sonido. 1.2.3. IVR IVR son las siglas de Interactive Voice Response, que se traduce del inglés como Respuesta de Voz Interactiva. También se utiliza el término VRU (Voice Response Unit). Consiste en un sistema telefónico que es capaz de recibir una llamada e interactuar con el humano a través de grabaciones de voz. Es un sistema de respuesta interactiva, orientado a entregar y/o capturar información automatizada a través del teléfono permitiendo el acceso a los servicios de información y operaciones autorizadas, las 24 horas del día. 1.2.3.1. Servicios El IVR es la típica máquina que nos responde con una voz grabada cuando llamamos a una central o que nos recibe en la banca telefónica. Según las opciones que el usuario le ingresa lo deriva a un centro de atención telefónica o a otra central telefónica. Las empresas suelen usar la tecnología de IVR para enrutar una llamada entrante hacía un departamento u otro, sin la necesidad de intervención humana, así reduciendo el tiempo de espera de sus clientes. En los centros de atención telefónico al cliente, se usan los IVR's para guiar el llamante hacia los agentes con mayor conocimiento de una materia especifica, reduciendo así el tiempo de la llamada y evitando la necesidad de hacer transferencias entre agentes. 21 Puede combinarse con servicios de mensajes cortos (SMS) para prestar cualquier clase de servicio: tele votación, encuestas, sorteos, acceso a bases de datos, servicios informativos, etc. El usuario realiza una llamada a un número de teléfono, el sistema de audiorespuesta contesta la llamada y le presenta al usuario una serie de acciones a realizar, esto se hace mediante mensajes (menús de opciones) previamente grabados en ficheros de audio (Por ejemplo "Pulse uno para ventas, dos para administración"). El usuario elige la opción a realizar introduciendo un número en el teclado del teléfono y navega por los diferentes menús hasta encontrar la información solicitada o que el sistema enruta la llamada al destinatario elegido. 1.2.3.2. Tecnología Involucrada El IVR para brindar mejores servicios involucra otras tecnologías como: DTMF (Dual Tone Multi Frequency): Propia de la telefonía, es la tecnología de tonos utilizada para el marcado. TTS (Text To Speech): Iniciada en la informática, le da capacidad de transformar texto a audio que escucha el operador. ASR (Reconocimiento de Voz): Iniciada por la informática. Le da la capacidad de reconocer las palabras del usuario y aceptarlas como órdenes. 22 Capítulo 2. Introducción De acuerdo a la Norma de calidad del servicio de valor agregado de internet expedida mediante RESOLUCIÓN 534-22-CONATEL-2006, el ente regulatorio de nuestro país es decir la superintendencia de telecomunicaciones solicita se provea un servicio de soporte técnico las 24 horas del día durante los 365 días del año, en este sentido una solución automatizada va a permitir una importante reducción de costos e incrementar los niveles de satisfacción del cliente. Un proveedor de internet requiere proveer de un soporte técnico de calidad, muchas de las veces es difícil encontrar técnicos de soporte calificados que sepan diagnosticar en forma expedita los problemas que un cliente puede tener, la curva de aprendizaje suele ser medianamente larga, y síntomas obvios muchas de las veces son pasados por alto. Para la resolución de cada problema el técnico de soporte sigue una rutina preestablecida y con pasos predefinidos, entonces cada problema se puede clasificar y luego de ello seguir un procedimiento rutinario de solución, por este motivo, sí es factible una solución automatizada que pueda trabajar en forma independiente o en conjunto con los técnicos de soporte. De hecho una solución inteligente podría en promedio encontrar el problema mucho más rápido que cualquier técnico con mediana experiencia. Los autores del presente proyecto no hemos encontrado implementaciones de soporte técnico en forma totalmente autónoma; es decir que un software ejecutándose en un ordenador pueda encontrar la posible avería y pueda sugerirle la solución al cliente. No obstante el presente estudio va a ser el punto de partida para otros trabajos que pretendan automatizar problemas de soporte técnico en línea y que puedan ser resueltos por la lógica de un ordenador. El presente proyecto será de mucha utilidad para los ISPs inalámbricos pequeños que 23 no tienen los recursos económicos como para costear un staff de técnicos las 24 horas del día durante los 365 días del año. A demás puede ser un referente para futuros estudios de reingeniería en la automatización de servicios de soporte técnico para empresas de un tamaño similar o mayor al propuesto, tomando en cuenta los servicios que se pueden implementar hoy en día en una red convergente. Los equipos y servicios que se propone se ajustan a la realidad del país. Puesto que se comercializan en el Ecuador. 2.1. ANÁLISIS DE LOS PROBLEMAS MÁS COMUNES EN EL ÁREA DE HELP DESK DE UN ISP INALÁMBRICO Evidentemente el hecho de que un usuario tenga un problema técnico, significa una pérdida tanto para el cliente que no puede realizar su actividad o tarea a tiempo como para el proveedor de Internet que ve disminuida su imagen como empresa y posiblemente tenga que descontar por un servicio que no fue provisto adecuadamente. Se ha realizado a cabo una investigación para determinar los problemas más comunes por los que el cliente llama al departamento de servicio técnico de los proveedores de internet inalámbrico. Esta información permitirá más adelante determinar que problemas serían posibles de detectar y solucionar utilizando la lógica de un computador y cuáles serían simplemente registrados para que un técnico en el tiempo más corto posible pueda contactar al cliente o visitarle para diagnosticar la falla. Es importante destacar que este software de soporte automático no pretende solucionar el 100% de problemas, sino más bien será una herramienta más para el departamento de soporte técnico. Con el fin de conocer de primera fuente los problemas de soporte más comunes que 24 atienden los proveedores de Internet inalámbrico se contactó a varios de ellos; tanto de la ciudad de Loja como de Machala y se les solicitó que llenaran una encuesta, con lo cual se obtuvo la tabla de los problemas de soporte más comunes de un ISP inalámbrico como figura en el apéndice Nº 2. El modelo de la encuesta consta en el apéndice Nº 1. La estrategia que utilizan los técnicos para resolver un problema de soporte es básicamente enviar paquetes de solicitud de eco ICMP1 o ping tanto al enlace inalámbrico de radio como a la computadora o servidor del cliente, con ello se obtiene el porcentaje de paquetes perdidos y la latencia o tiempo de respuesta del enlace. Por ejemplo en un supuesto que tanto el radio como el computador del cliente no responden; lo más probable es que el radio está apagado o inhibido y lo que el técnico recomendaría sería que se revise si el equipo está encendido o que lo reinicie en el caso de que estuviera inhibido. Ahora, en el caso que el equipo inalámbrico tuviera un 10% de paquetes perdidos, allí habría un problema del enlace de radio y un técnico debería realizar una visita donde el cliente; pero al contrario, si el radio NO tiene paquetes perdidos, y el computador o el servidor SI, en ese caso habría una saturación de su ancho de banda y el cliente está consumiendo toda su capacidad contratada. Un caso especial se presenta cuando el radio responde y el equipo no responde pero si tiene una dirección MAC2 en la tabla ARP3, este se da cuando la computadora o el servidor del cliente tiene bloqueado el protocolo ICMP y las peticiones ping no tienen respuesta; esto generalmente debido a un firewall instalado. En este caso con lo único que se cuenta para hacerse una idea del problema es con la latencia del radio y con el porcentaje de paquetes perdidos, puesto que solamente se conoce que el computador del cliente está conectado. En relación con la calidad del servicio es necesario acotar que es un tema bastante subjetivo puesto que lo que un usuario puede percibir como una navegación rápida, 1 ICMP es un mensaje que se envía a un host para que éste le responda con un Echo Reply MAC identificador de 48 bits que se corresponde de forma única con una interfaz de red 3 Address Resolution Protocol (protocolo de resolución de direcciones) 2 25 otro usuario podría pensar que es sumamente lento, en otras ocasiones la computadora podría estar descargando una actualización del sistema operativo o de algún programa antivirus y el usuario experimenta una degradación de la velocidad. También podría darse el caso que la computadora tenga algún software espía o virus que empieza a enviar en forma masiva información desde la computadora del cliente, en este sentido seria un tanto difícil para un software discriminar tráfico normal de tráfico malicioso. También hay que tomar en consideración que a muchas personas les pueda incomodar que una “maquina” detrás de la línea les ayude con un problema que se les presenta. 2.2. SOLUCIÓN PROPUESTA El esquema planteado para resolver un problema de soporte técnico sería sintetizar en un algoritmo los pasos que un técnico de soporte sigue para solucionar un problema. Esta tarea que al principio puede parecer bastante complicada, si es posible llevarla a cabo puesto que son cuatro variables que se necesita para poder realizar un diagnóstico muy aproximado: latencia tanto del radio como del computador o servidor del cliente y porcentaje de paquetes perdidos tanto del radio como del computador o servidor del cliente. El algoritmo mencionado se realizará mediante el diagrama de flujo de datos descrito en la (Figura 2-1). 26 inicio Cliente realiza llamada de Soporte Técnico e ingresa codigo no usuario. Existe? si Revisión de radio y computador cliente Mientras se realiza el test, el cliente permanece escuchando un mensaje Calcular latencia y % de paquetes perdidos del radio y del PC Se informa al cliente que su enlace es NORMAL si 0 al 2 % Paquetes perdidos en el PC ? no 100% Paquetes perdidos en el PC Informar “El cliente esta congestionado” si si PC no tiene MAC en tabla ARP ? no si (Latencia radio < 3 ) y (Latencia_equipo latencia_radio > 3) Paquetes perdidos radio < 100% Informar “equipo no responde a peticiones ping” no no si Informar “radio responde pero equipo no responde” no Informarle al cliente estado del enlace de radio Fin Figura 2-1. Diagrama de flujo de datos para la resolución de un problema de soporte técnico. En conclusión un software debería ejecutar los mismos procedimientos que un técnico calificado seguiría para resolver un problema, es decir calcular primero la latencia y 27 porcentaje de paquetes perdidos tanto del radio como del computador o servidor del cliente, luego procesar esa información e inmediatamente informarle al usuario la posible solución a su problema de acuerdo a la (Figura 2-1). Para implementar el sistema de soporte técnico automatizado se deberá integrar el algoritmo descrito en la (Figura 3-1) con el servidor de VOIP. Esto se lo hace mediante el desarrollo de una interfaz AGI que ejecutará en forma remota el respectivo monitoreo dentro del servidor que provee de Internet a los clientes. Cuando se habla de un servidor que provee de Internet a los clientes, debe de entenderse como un Proxy o un equipo que haga traducción automática de direcciones NAT. Es importante destacar que se podría implementar dentro del servidor de VOIP los respectivos servicios para repartir el Internet, en cuyo caso la interfaz AGI no realizaría el monitoreo en forma remota si no en el mismo equipo. La (Figura 2-1) explicará de mejor manera la idea propuesta: 28 Inicio llamada telefonica Cliente realiza llamada y esta es contestada por servidor de VOIP no Cliente necesita soporte automatizado si Llamada es contestada de acuerdo a plan de discado Servidor de VOIP solicita codigo de usuario y transfiere control a interfaz AGI Interfaz AGI se introduce en servidor proxy¹, realiza monitoreo y provee soporte al cliente Se almacena en bitacora resultados de soporte para efectos de control Fin llamada telefonica Figura 2-2. Diagrama de flujo de datos para integrar el Servicio técnico automatizado de un servidor VOIP1 1 En este momento es cuando se ejecuta el algoritmo descrito en la (Figura 2-1) 29 Capítulo 3. Implementación y Pruebas del Sistema 3.1. IMPLEMENTACIÓN La fase de implementación consta de las siguientes partes: 1. Instalar el sistema operativo Linux en el futuro servidor de VOIP. 2. Instalar Asterix: colocar y compilar las fuentes en el servidor de VOIP, Modificar los archivos de configuración del Asterix con el objeto de implementar el plan de discado y copiar script AGI. 3. Implementar acceso de consola segura sin contraseña hacia el servidor IPCOP. 4. Instalar script de monitoreo en el servidor IPCOP. Para la implementación del servidor de VOIP se ha escogido trabajar en el sistema operativo GNU/Linux - Distribución Debian, puesto que este ambiente es Open Source, tiene muchas ventajas en relación al software privativo entre ellas documentación abundante, disponibilidad de código fuente, una comunidad de desarrollo madura y consolidada y sobre todo el coste económico sumamente reducido. En relación con el servidor de VOIP Asterix es necesario recalcar que si bien es cierto existen distribuciones muy sencillas de utilizar y que se instalan en cuestión de minutos tales como elastix y asterisknow, estas solamente son recomendables cuando se van a utilizar las funciones básicas de un PBX, más no cuando se piensa trabajar directamente sobre el dialplan y con interfaces AGIs. Para el sistema que va a ser monitoreado por el servidor de VOIP se ha escogido la distribución IPCOP; puesto que es la primera opción que escogen muchos ISPs 30 inalámbricos pequeños cuando inician operaciones. No se ahondará en detalles de instalación del servidor IPCOP, puesto que no es materia del presente trabajo de investigación, se asumirá que está habilitado el servicio SSH y que está configurado correctamente para proveer servicio de internet a un grupo de usuarios. Para fines de este proyecto se ha configurado el servidor IPCOP con las interfaces GREEN, RED y BLUE. 3.1.1. Instalación de Linux Debian Esto se discutirá en el manual de instalación de Linux-Debian adjunto; se utilizará Debian con kernel 2.6 para la instalación de asterisk con linux. Se ha escogido esta distribución por la gran aceptación que tiene. Se recomienda usar el kernel mencionado previamente puesto que hay mayor soporte para hardware de telefonía sobre esta versión. 3.1.2. Instalación y Configuración del Asterisk Igualmente para la instalación de asterix se deberá referir al manual de instalación adjunto, de todas maneras la instalación de asterisk en un sistema GNU/Linux sigue los siguientes pasos: – Instalación de paquetes y librerías dependientes. – Descarga del código fuente de asterisk. – Compilación de asterisk. – Instalación en el sistema y copia de archivos de configuración de ejemplo. – Creación del plan de discado y de voces personalizadas. 3.1.2.1. Plan de discado El plan de discado es lo más importante en el asterisk en la medida que este define 31 como asterisk irá gestionando las llamadas. Este consiste en una lista de instrucciones o pasos que asterisk debería seguir, las mismas que son activadas a partir de los dígitos recibidos de un canal o aplicación. La mayor parte del plan de discado está contenida en el archivo “extensions.conf” que está en el directorio “/etc/asterix”. Adicionalmente los archivos de sonido que se utilizan en el plan de discado deben ser copiados en el directorio respectivo. 3.1.2.2. Instalación de un Softphone para las pruebas del IVR. Softphone es un software que hace una simulación de teléfono convencional por computadora. Es decir, permite usar la computadora para hacer llamadas a otros softphones o a otros teléfonos convencionales. Para estas pruebas se utilizará el softphone XLITE que es gratuito, el cual se lo ha descargado de la web en una computadora portátil con Windows XP. En el menú “ opcion system settings “ se deberá colocar la dirección IP del servidor de VOIP junto con el nombre de usuario y contraseña asignado. Luego se deberá verificar en la consola del Asterix que se registre el Xlite, y que todo está listo para las pruebas, adicionalmente se puede conectar un ATA con un teléfono convencional o un teléfono IP los cuales se configuraran como otras extensiones ejemplo (ext101, ext102, ..etc). 3.1.3. Implementar acceso a consola SSH sin contraseña SSH1 es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la 1 Secure Shell (Intérprete de órdenes seguro) 32 computadora mediante un intérprete de comandos. Además de la conexión a otras máquinas, SSH nos permite copiar datos de forma segura, gestionar claves RSA1 para no escribir claves al conectar a las máquinas y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH. Puesto que el servidor de VOIP necesita acceso al equipo que entrega el internet, se necesita acceder al mismo mediante una consola segura pero sin contraseña. Se puede solucionar este problema haciendo que un equipo confíe en el otro. Lo primero, en la máquina cliente, es decir el servidor de voip que tendrá acceso al servidor Proxy se deberá generar una clave RSA pública local que posteriormente se exporta al ordenador remoto usando el comando Linux: ssh-keygen TesisVoIP:~# ssh-keygen -t rsa La ejecución de este comando presenta lo siguiente en la pantalla: Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 8b:44:6b:d0:0d:8e:cb:78:f0:12:60:df:52:16:ac:ab root@Tesis.localdomain La “passphrase” se la deja en blanco, el objetivo es poder ingresar mediante consola segura SSH sin digitar la contraseña. Una vez hecho esto, se genera el archivo “~/.ssh/id_rsa.pub” el cual se debe copiar en forma segura al servidor al cual se desee tener acceso sin contraseña: scp ~/.ssh/id_rsa.pub 192.168.0.254:~/.ssh/authorized_keys2 1 RSA es un algoritmo asimétrico cifrador de bloques, que utiliza una clave pública 33 De esta manera el servidor o servidores que proveen servicio al servidor de VOIP ya no pedirán contraseña cada vez que se necesite realizar un monitoreo. 3.1.4. Instalar script de monitoreo en el servidor IPCOP Este es un procedimiento bastante trivial como copiar mediante un software de consola segura tal como winscp en el caso de windows o scp en el caso de linux y colocarlo en la carpeta “/usr/local/sbin” 3.2. DETALLES DE IMPLEMENTACIÓN 3.2.1. Arquitectura del Sistema de Soporte Automático Este sistema fue diseñado en base a dos capas o niveles de abstracción en donde la capa superior no necesita conocer detalles específicos de implementación del nivel inferior tal como se muestra en el (Figura 3-1). ( USUARIO REALIZA LLAMADA SOPORTE Asterisk Tescli.agi SERVIDOR VOIP PROTOCOLO SSH probarcliente comprueba REINICIA SERVICIOS ENVIA ALERTAS POR SMS O EMAIL SERVIDOR INTERNET Figura 3-1. Arquitectura del sistema de soporte 34 A). NIVEL 1.- Servidor VOIP Esta es la capa de abstracción superior y con la cual interactúan los usuarios vía telefónica, consta del servidor de código abierto asterisk y la interfaz AGI “testcli”. En este nivel se procesan las llamadas telefónicas de los clientes y en caso de requerir soporte automático se realiza una llamada hacia un módulo de software localizado en el servidor de internet de los clientes. Este nivel no conoce detalles de implementación ni formas de acceso a la información de los clientes, solo hace una llamada especificando el servidor y el código del usuario. Consta a su vez de dos módulos: Servidor Asterisk.- Hace las veces de centralita telefónica y realiza llamadas a la interfaz AGI “testcli” cuando el usuario necesita soporte automatizado. Interfaz testcli.agi.- Esta es una interfaz AGI, la misma que mediante el protocolo ssh ejecuta remotamente el script “probarcliente” que reside dentro del servidor que provee servicio de internet a los clientes. Los parámetros que envía son la dirección IP del servidor y el código del cliente. B). NIVEL 0 .- Servidor de internet de los clientes Este es el nivel de abstracción inferior y trata con detalles específicos de acceso a funciones del sistema operativo y con detalles de implementación del ISP inalámbrico tales como autenticación, autorización y registro de información de los clientes. El código que controla este nivel de abstracción reside en el servidor que provee internet a los clientes. En este nivel se especifican detalles relacionados con la forma de acceso a la información de los clientes, como por ejemplo a que dirección IP pertenece que cliente, si el cliente esta deshabilitado. Este código es implementado de acuerdo a como tiene organizada la información el ISP inalámbrico, por ejemplo: si los servicios están funcionando sobre distintos servidores, que distribución usan, que métodos de validación tienen los usuarios. Para implementar este nivel se ha escogido el servidor IPCOP como solución modular y sencilla que muchos ISPs inalámbricos utilizan en nuestro país. 35 Esta parte consta de dos módulos. Script probarcliente Este provee funciones de monitoreo a los clientes y les sugiere una posible solución. Este código que reside en el servidor que provee servicio a los clientes recibe como parámetro el código que provee el usuario, Script comprueba Este módulo provee funciones de monitoreo y auto reparación a los servicios y funciones del servidor y realiza una comprobación periódica de los servicios corriendo sobre el mismo tales como: dns, smtp, pop3, Proxy, etc, y en caso de que haya un servicio inhabilitado o que funcione en forma incorrecta trata de solucionar el problema y notifica al administrador vía email o mensaje de texto. 3.2.2. INTEGRACION DEL SISTEMA El sistema será utilizado por tres entidades: los clientes que requieren soporte automático, el personal del área de soporte y el servidor que será monitoreado por el sistema. Clientes. El cliente solicita soporte automático. El servidor de VOIP hace una llamada al interfaz AGI “testcli”. “testcli” ejecuta mediante SSH el script “probarcliente” que reside en el servidor que provee internet a los clientes. 36 “probarcliente” realiza las respectivas pruebas y envía información al usuario mediante el protocolo de comunicaciones AGI. Cuando el script termina, el servidor de VOIP continúa ejecutando el plan de marcado. Personal del área de soporte El Administrador necesita ejecutar alguna instrucción en algún servidor del ISP. El servidor de VOIP hace una llamada al AGI “testcli”. “testcli” mediante SSH ejecuta la instrucción solicitada en el servidor solicitado. Servidor El script de auto-monitoreo “comprueba”, detecta un servicio inhabilitado o que funciona en forma incorrecta. Si es una falla que se puede corregir, el script trata de hacerlo y notifica mediante un correo electrónico y/o un mensaje de texto al administrador. 3.3. PRUEBAS DEL SISTEMA La primera fase de pruebas de la efectividad del sistema se utilizó dos computadoras con el sistema operativo Windows XP instalado, cada uno de ellos conectado a un bridge inalámbrico y estos se asociaron a un Access Point conectado mediante ethernet a la interfaz blue del servidor IPCOP. Luego de ello se simularon las distintas condiciones que pueden suceder en una red inalámbrica, tal como se muestra en la (Figura 3-2). 37 Figura 3-2. Hardware utilizado con el fin de realizar pruebas del sistema Intencionalmente se desconectó el cable de red del bridge inalámbrico conectado a la computadora y el sistema informó que posiblemente el cable de red estaría desconectado. Se apagó deliberadamente el bridge inalámbrico relacionado con un usuario y se procedió a monitorearlo, en este caso el sistema siempre informó: “el equipo inalámbrico no responde, posiblemente porque este trabado o porque este sin energía eléctrica, le recomendamos desconectar brevemente el adaptador de corriente y verificar que este con energía”. Se deshabilitó la respuesta a paquetes de solicitud de eco ICMP o ping en las computadoras de prueba y el sistema pudo determinar que el equipo inalámbrico si estaba encendido pero no podía determinar la latencia hacia el computador; este comportamiento es normal puesto que un técnico tampoco podría determinar el tiempo de respuesta hacia un cliente inalámbrico, si las peticiones ping están deshabilitadas. Se suspendió el servicio de internet a una de las computadoras y el sistema supo determinar que el cliente tenía el servicio suspendido y por ende no había que proceder con el diagnostico. 38 Posteriormente se asignaron códigos a ciertos usuarios en la empresa Lojasystem con el fin de evaluar la efectividad del sistema. Como fase final de las pruebas se lo implemento en la empresa Lojasystem y se lo monitoreo al sistema durante un periodo de 4 meses, durante este periodo se hicieron los correctivos necesarios al sistema, así mismo se monitorio el registro o bitácora de los problemas que se fueron presentando, para sacar estadísticas y resultados. 3.3.1. Escalabilidad Durante las pruebas que se realizó, los recursos del sistema estuvieron bastante holgados, este sistema es lo suficientemente escalable como para manejar algunos cientos de llamadas simultáneas; puesto que el código para diagnosticar un problema consume muy pocos ciclos del procesador y se utiliza el mismo códec en todas las llamadas entrantes, es decir no se requiere transcoding. De todas formas cuando el sistema escale a algunas decenas de llamadas simultáneas sería recomendable colocar el sistema en un equipo más poderoso: por ejemplo un computador Pentium 4 o superior con 512 MB de memoria RAM o más. 3.4. RESULTADOS OBTENIDOS Como antecedentes se tiene que en la empresa donde fue implantado el sistema para las pruebas “Lojasystem”, el soporte técnico brindado a sus clientes cubría el horario de 8:30 a 19:30, pero no las 24 horas como lo exige la Superintendencia de Telecomunicaciones. Con el fin de no incrementar demasiado la carga laboral en los técnicos de soporte y de reducir costos, lo más práctico y lo que más se ajustaba a dicha empresa para solucionar tal requerimiento era proporcionar a sus clientes el número celular de un encargado de soporte técnico para cuando tuvieran algún inconveniente fuera de horario normal de trabajo. 39 La pérdida de recursos humanos era inevitable debido a que muchos de los técnicos les incomodaba responder llamadas a cualquier hora de la noche y muchas de las veces llamadas más tarde de las doce de la noche no eran contestadas y si respondían lo hacían de mala gana puesto que interrumpían su descanso. Esta situación ocasionaba insatisfacción tanto en los clientes como el personal de soporte de la compañía. Inclusive algunos clientes habían suspendido su contrato puesto que no habían recibido soporte técnico en forma oportuna. En este contexto el software de monitoreo y auto reparación de los servicios del servidor resultó sumamente oportuno y ya no se presentaron llamadas por causa de un servidor trabajando incorrectamente puesto que éste sin la intervención de ningún técnico reinicia servicios que no están trabajando correctamente y alerta en forma sonora cuando ello sucede; si esto no fuera suficiente se podría reiniciar remotamente el servidor mediante una llamada desde un teléfono fijo o móvil. Cabe destacar que nunca se ha hecho necesario reiniciar remotamente el servidor puesto que el software realiza su función en forma bastante eficiente. De acuerdo a los registros en bitácora, a nivel de servidor el sistema resuelve mensualmente en promedio 5 problemas relacionados con la provisión del servicio a todos los clientes y que necesitarían de la intervención de un técnico para solucionarlo, los más comunes son relacionados con el servicio squid que es el encargado de realizar el cacheo de las paginas y con el servicio dnsmasq que es el modulo encargado de la resolución de los nombre de dominio. De todos los casos presentados el sistema ha resuelto el 100%, exceptuando aquellos casos en donde no esté a su alcance la solución de un problema como por ejemplo si hay una defectuosa provisión del Internet por parte del proveedor; en este caso lo único que hace es registrar en bitácora el incidente y emitir una alerta. En relación con las llamadas que eran realizadas por los clientes a altas horas de la noche, era complicado para la empresa llevar un registro de esas llamadas puesto que los técnicos no las reportaban. Lo que si se podría manifestar que ahora en promedio el sistema atiende alrededor de 10 llamadas semanales, las cuales si nos remitimos a la 40 encuesta de la tabla 3-1 tiene una exactitud del 81% para diagnosticar los problemas. En la empresa que fue implementado el sistema, éste empezó a ser utilizado en una fase progresiva, es decir se les entregó códigos de monitoreo solamente a ciertos usuarios; en su mayoría corporativos y a unos pocos clientes residenciales. La idea fue ir evaluando el nivel de satisfacción de los clientes para poder hacer cambios o mejoras. Los directivos de la compañía no han creído pertinente que el sistema responda llamadas de soporte en horas laborables sino mas bien en horas fuera de oficina. Si bien es cierto el sistema todavía no ha sido implantado en un ciento por ciento se puede decir que: • Se cumplió con el requerimiento de las autoridades regulatorias de proveer servicio técnico las 24 horas del día, los 365 días del año. • Se redujo a 0% el número de llamadas relacionadas con fallas en el “servidor” que provee Internet a los clientes. • Se está cumpliendo con las expectativas de los clientes de poder proveerles un servicio técnico a cualquier día de la semana y a cualquier hora. Con tal objetivo se realizó una encuesta a los clientes que habían requerido soporte automatizado, La (Tabla 3-1) refleja la exactitud para diagnosticar los problemas en un 81%, lo cual está por sobre el 21% del objetivo propuesto en esta tesis. El modelo de encuesta esta descrito en el apéndice Nº 6. 41 Tabla 3-1 Exactitud en el diagnostico desde el punto de vista del usuario1 PROBLEMA DIAGNOSTICADOS POR EL SISTEMA OPINION DEL USUARIO El sistema reporta que el equipo posiblemente está congelado o sin energía eléctrica 100% El sistema no detecta ningún problema 43% El sistema informa que hay problemas de calidad en el 100% 2 enlace El sistema reporta que el usuario posiblemente está consumiendo toda su capacidad 68% Posiblemente cable de red desconectado 76% El sistema reporta que el usuario está suspendido su servicio por falta de pago 100% PROMEDIO 81% Que el sistema diagnostique un problema no significa que el cliente esté de acuerdo con ese diagnóstico, esto se puede evidenciar en una forma más acentuada cuando el sistema le manifiesta al usuario que el problema no atañe a la empresa proveedora del servicio; por ejemplo un cliente corporativo experimentó congestión en la señal pero estuvo ocupando todo su ancho de banda disponible, entonces ese usuario supo manifestar que el sistema le estaba dando información sesgada a favor del proveedor de Internet. Además se pudo determinar lo siguiente: El sistema detecta un problema más rápidamente que un técnico de soporte, y siempre la información presentada es exacta, pero existen problemas que si requieren del conocimiento de un técnico especializado por ejemplo; sería muy difícil para un software determinar cuando un equipo inalámbrico ha perdido su 1 Lo que diagnosticó el sistema fue contrastado con lo que el usuario reportó posteriormente en la encuesta Esto es perfectamente comprensible según lo que analizábamos en el apartado 2.1, es decir la calidad de la navegación es un aspecto un tanto subjetivo. 2 42 configuración y está con los valores de fábrica, de todas maneras son excepciones que las debería responder un técnico calificado en la siguiente jornada laborable de acuerdo al registro en bitácora de problemas no resueltos por el sistema. Muchos posibles usuarios se mostraron renuentes a que un software interactivo intente proveerles una solución por lo que habría que tomar bastante atención a este punto cuando se desee implementar el sistema. De acuerdo a la (Tabla 3-2), la mayor cantidad de llamadas se da por que el equipo inalámbrico del cliente se quedó congelado o detenido, puesto que el sistema le indicó al cliente que debería reiniciar este equipo la mayoría de veces este problema fue resuelto. Tabla 3-2 Llamadas según el tipo de problema diagnosticado TIPO DE PROBLEMA DIAGNOSTICADO PORCENTAGE El sistema reporta que el equipo posiblemente está congelado o sin energía eléctrica 46% El sistema no detecta ningún problema 15% El sistema informa que hay problemas de calidad en el enlace 12% El sistema reporta que el usuario posiblemente está consumiendo toda su capacidad 17% Posiblemente cable de red desconectado 3% El sistema reporta que el usuario está suspendido el servicio por falta de pago 6% Otros 1% 100% 43 Capítulo 4. Conclusiones y Recomendaciones 4.1. CONCLUSIONES Luego de haber desarrollado la presente investigación se concluye que el futuro de la telefonía será desarrollada sobre tecnología IP y basada principalmente sobre proyectos open source como Asterix; por ende un sistema de computación con recursos modestos podría correr soluciones bastante sofisticadas las mismas que en sistemas comerciales costarían decenas de miles de dólares. Eso significa trabajo para nuestros profesionales y que el dinero invertido en tecnologías de la información no salga de nuestro país. En este contexto desarrollar aplicaciones que antes tenían costo de varios cientos de miles de dólares se vuelven económicas; por ejemplo un sistema de información electoral vía telefónica incluido hardware y costo de desarrolladores estaría por alrededor de USD 8.000.1 Esto demuestra que en este universo globalizado el activo más valioso llega a ser el conocimiento. En relación con el objetivo del presente proyecto se podría decir que este sistema pudo solucionar un problema que es el hecho de proveer soporte en horas no laborables y días feriados, reduciendo con ello costos operativos e incrementando la satisfacción de los clientes que saben que en cualquier día y hora del año pueden tener soporte de la empresa proveedora de internet. Es necesario acotar que una gran cantidad de llamadas de soporte se presentó por que el suscriptor inalámbrico se quedaba detenido o bloqueado, esto debido a que el proveedor había colocado equipos no apropiados o de poca calidad. 1 Se estima un servidor con 4 tarjetas de 8 slots E1 procesando 32 llamadas simultáneas. 44 Además este trabajo puede ser el punto de partida para dar solución a otras aplicaciones comerciales que requieren del acceso a una base de datos y de una persona que entregue una información en forma telefónica por ejemplo; autorizaciones de tarjeta de crédito, información de servicios básicos como agua, luz o teléfono, etc. 4.2. RECOMENDACIONES Como Recomendaciones para la escuela se podría sugerir lo siguiente: Incentivar en la UTPL el desarrollo de proyectos de investigación de voz sobre el protocolo IP bajo plataformas de código abierto. Como recomendaciones para los ISPs inalámbricos se podría recomendarles lo siguiente: Incrementar la calidad de los suscriptores utilizados por cada cliente. Implementar este sistema en las empresas proveedoras que no tienen opción de contratar un staff de soporte las veinticuatro horas. 45 Capitulo 5 Bibliografía Netkrom Tecnologies (2005), Soluciones Wireless ISP, [web en línea]. Disponible desde internet en: <http://www.netkrom.com/es/sol_wisp.html> [con acceso el 6-10-2008]. [1] Román S. Francisco (2008) Reingeniería de la intranet de la empresa Tecnomega C.A., Tesis de Ingeniería y Redes de Información, Escuela Politécnica Nacional, Quito, Ecuador. [2] Michael K. Johnson (1996), Linux Information Sheet, Características de Linux, [web en línea]. Disponible desde internet en: <http://www.grulic.org.ar/comos/infosheet/InfoSheet-Como-2.html> [con acceso el 12-10-2008]. [3] Gorka Gorrotxategui-Iñaki Baz, (2006) Curso Voz sobre IP y Asterisk v1.0 Modulo III, Bilbao, España. IRONTEC. [4] Colaboradores de Wikipedia. IPCop (2009) Wikipedia, La enciclopedia libre [web en línea]. Disponible desde internet en: <http://es.wikipedia.org/w/index.php?title=IPCop&oldid=24480566> [con acceso el 1202-2009]. [5] Francisco Omil. (2003) Manual de estilo en la redacción de tesis/dea, [web en línea]. Disponible desde internet en: <http://www.usc.es/biogrup/manestilodea.htm> [con acceso el 1-10-2008]. Daniel L. Morrill. (2002) Configuración de sistemas Linux. Ed. Anaya Multimedia, ISBN: 84-415-1465-8 Dee-Ann Leblanc, (2001) La Biblia de Administración de sistemas Linux. col. La Biblia de, Ed. Anaya Multimedia, , ISBN: 84-415-1126-8. Matt Welsh, Matthias Kalle Dalheimer y Lar Kaufman (2000) Linux. Guía de referencia y aprendizaje., col. O'Reilly, Ed. Anaya Multimedia, , ISBN: 84-415-1071-7. Jim Van Meggelen, Jared Smith, and Leif Madsen, (2005) Asterisk: The Future of Telephony. Media lnc.,O'Reilly CA, USA. Flavio E. Goncalves, (2007), Asterisk PBX, Guía de la configuración, florianópolis, tercera edición.Janeiro, Brasil. Mark Spencer, Mack Allison, Christopher Rhodes. (2003) The Asterisk Documentation Team: The Asterisk Handbook. Digium, Inc., USA. 46 VOIP WIKI, (2008) a reference guide to all things VOIP, PBX and Servers -VOIP PBX and Servers [web en línea]. Disponible desde internet en: <http://www.voip-info.org/>. [con acceso el 15-08-2008] Digium Inc, (2007) Asterisk: An Open Source PBX and telephony toolkit [web en línea]. Disponible desde internet en: <http://www.asterisk.org> [con acceso el 05-09-2008] Digium lnc, (2007) Asterisk Guru, Tutorials and howto's for the asterisk PBX and voip in general, [web en línea]. Disponible desde internet en: <http://www.asteriskguru.com/> [con acceso el 10-09-2008] Stopford, Andrew. (2002) Proyectos profesionales: con PHP, Anaya Multimedia-Anaya Interactiva,. ISBN: 84-415- 1418-6 Perl Apache: proyectos de integración de Perl y Apache [web en línea]. Disponible desde internet en: < http://perl.apache.org/> [con acceso el 18-10-2008] 47 Apéndice 1 Encuesta realizada a ISPs Inalámbricos Estimado proveedor de Internet, estamos recabando información con el fin de implementar un “Sistema de soporte telefónico autónomo para ISPs inalámbricos”, es decir un software que en forma autónoma y sin la intervención de ningún ser humano conteste las líneas telefónicas de soporte técnico; sea capaz de detectar la posible avería del cliente y le sugiera una posible solución en manera similar a como lo haría un técnico calificado. Esta investigación la estamos realizando como parte de nuestra tesis de grado y por lo tanto desearíamos conocer los problemas más comunes que su departamento de soporte técnico soluciona; es necesario aclarar que esta encuesta es totalmente anónima. 1. ¿Cuál es el horario de soporte técnico de su empresa? ______________________________________________________ 2. ¿Tiene soporte técnico automatizado, es decir que lo provee un sistema informático en forma totalmente independiente que pueda solucionar en parte los problemas más comunes de los usuarios? Si ( ) No ( ) Si contesta afirmativamente, ponga el nombre del sistema: ……………………………………… 3. ¿Cuántas llamadas de soporte técnico promedio tiene al día? ___________________________ 4. ¿Usted cree conveniente que se implemente en su empresa un sistema que le provea de soporte técnico en horas fueras de oficina o cuando no están trabajando sus técnicos de soporte? Si ( ) No ( ) 5. ¿Indique en promedio el porcentaje de llamadas por las que el cliente solicita soporte técnico? a. b. c. d. e. f. El equipo inalámbrico del cliente se le quedo congelado o inhibido Equipo inalámbrico perdió configuración (se reseteo) Computador personal perdió configuración de red Navegación lenta o deficiente Navegación lenta debido a que está consumiendo todo su ancho de banda asignado Otros ¿Cuáles?: ______________________________________________ ( ( ( ( ( )% )% )% )% )% ( )% Muchas gracias por su valioso aporte a esta investigación. Atentamente: los autores 48 Apéndice 2 Tabla de los problemas de soporte más comunes de un ISP inalámbrico PROBLEMA SOLUCION DIFICULTAD DE IMPLEMENTACION El equipo inalámbrico del cliente se Solicitarle al cliente que reinicie el Sencillo quedó congelado: Esto puede ser por equipo inalámbrico desconectando el saturación del equipo, por un defecto de adaptador de corriente hardware o por un problema de sobrevoltaje que congeló al adaptador de corriente. El cliente perdió su configuración de red: Esto se da principalmente cuando el cliente formatea, o actualiza su computador. Paso a paso indicarle al cliente como restaurar su configuración de red, esto depende de su sistema operativo y la versión. Para esta solución influye mucho el nivel de conocimientos del cliente El equipo inalámbrico del cliente no responde por un problema en la infraestructura del ISP: Generalmente este problema es causado en el multipunto al que está conectado el cliente y la mayoría del tiempo es debido a problemas de suministro de energía eléctrica y el sistema de respaldo de energía se ha agotado. En el lado del cliente no hay nada que Sencillo hacer, y lo único que se puede hacer es notificarle al cliente que el problema se origina en el proveedor de internet PORCENTAJE DE FALLAS 65% 6% Medio Lo más aconsejable seria implementar una solución para los sistemas operativos más comunes y para las versiones más populares de estos sistemas operativos. 3% 49 problema normalmente se Este es un problema que muy rara 1% El equipo inalámbrico del cliente perdió Este su configuración: Este es un problema soluciona con la visita del técnico al vez se presenta y no se recomienda que se presenta en raras ocasiones que se domicilio del cliente su automatización, lo más ocasiona por sobrevoltaje y/o un equipo recomendable es la visita de un defectuoso técnico donde el cliente. El cliente reporta lentitud en su señal debido a problemas de calidad del enlace Lo más probable que cambiaron las condiciones de línea de vista del enlace ejemplo una construcción nueva que obstruye la señal, árboles que crecieron con el tiempo o que el equipo inalámbrico pudo haberse movido de su ubicación original. Este problema se soluciona 12% únicamente con la visita de un técnico y lo único que se puede hacer es notificarle al cliente del problema y registrar la llamada para una urgente solución En este caso no hay nada que se pueda Medio hacer más que informarle al cliente que está consumiendo todo su ancho de banda contratado Problemas varios o que se presentan muy En este caso se tendría que registrar la Sencillo rara vez y que no se pueden catalogar llamada para que un técnico le visite al fácilmente cliente lo más pronto posible. El cliente reporta lentitud pero está consumiendo todo su ancho de banda contratado 12% 1% 50 Apéndice 3 Distribución Linux IPCOP De acuerdo a la wikipedia [5] IPCop es una distribución Linux que implementa un cortafuego (o firewall) y proporciona una simple interfaz web de administración basándose en una computadora personal. IPCop tiene como objetivos ser un cortafuegos sencillo, con pocos requerimientos hardware orientado a usuarios domésticos o a pequeñas empresas (SOHO), administrado a través de una interfaz web, con funcionalidades básicas y avanzadas, yendo (a manera de ejemplo) desde el simple filtrado de paquetes hasta la asignación de ancho de banda fijo a cada puesto de trabajo o la configuración de redes virtuales VPN. IPCop se actualiza desde el Interfaz Web de manera muy sencilla, incluyendo actualizaciones del Kernel. La distribución Linux se puede bajar desde el sitio oficial en inglés, consiste de una imagen ISO de menos de 100Mb la cual puede ser grabada en un CD e instalada en cualquier PC que tenga al menos dos interfaces de red. Topologías de red soportadas: Permite la implementación de diferentes topologías de red, ya sea desde la simple LAN que sale a internet, hasta la creación de una zona desmilitarizada (DMZ), soportando también la inclusión de una red inalámbrica. Las diferentes zonas las divide en colores, siendo: 51 * ROJA (o Red) = zona de Internet, * VERDE (green) = Red de Área Local (LAN) cableada, * NARANJA (Orange) = zona desmilitarizada (DMZ, para la granja de servidores), * AZUL (Blue) = zona inalámbrica (Wireless). Esta distribución es bastante utilizada por los ISPs inalámbricos puesto que implementa entre otros servicios: un servidor proxy, DNS, firewall, autenticación por dirección IP/dirección Mac y la mayoría de funciones son administradas mediante una interfaz web. Puesto que la principal función del IPCOP es ser utilizado como firewall; este tiene cierta analogía con los colores de un semáforo de transito: la interfaz conectada directamente al Internet se denomina RED (roja), la cual tiene un nivel de protección máxima mientras que la interfaz GREEN es la conexión a la que se conectan los usuarios mediante la red de área local y la que tiene menores restricciones de seguridad. La interfaz BLUE (azul) tiene un nivel de protección media y es a la que se conectan los usuarios inalámbricos. 52 Apéndice 4 Hardware a utilizar Un computador marca DELL procesador Pentium III 1 ghz, 512 memoria ram, disco duro 13 GB capacidad. Tarjeta PCI con puerto FXO para las funciones de telefonía, es decir el dispositivo que conectara el servidor de VOIP con las redes públicas de teléfono tales como pacifictel, alegro, porta, movistar Equipo ATA, es decir el equipo que va a permitir conectar cualquier equipo telefónico tradicional o fax, a la LAN y por ende a la central de VOIP Diadema para conectarle al equipo en el que va a ir instalado el softfone Teléfono IP Teléfono convencional, el mismo que va a ser conectado al ATA Acess point Conexión a Internet para instalar actualizaciones, descargar paquetes y programas necesarios. Software adicional. Softfone XLITE es un programa que corre bajo la plataforma WINDOWS y que permite conectarse a la central de VOIP y realizar llamadas tal como lo se lo haría desde un teléfono convencional, utilizando para ello los auriculares y el micrófono de la computadora o una diadema. 53 Apéndice 5 Código fuente ******************************************* Archivo testcli.agi ******************************************* #!/bin/bash #el servidor a revisar, en el caso de los IPCOPs usan el puerto 222 para ssh SERVIDOR="ssh -p 222 192.168.0.254" declare -a array while read -e ARG && [ "$ARG" ] ; do array=(` echo $ARG | sed -e 's/://'`) # export ${array[0]}=${array[1]} done # Las siguientes variables están disponibles desde Asterisk echo $2 >> $RUTA checkresults() { while read line do case ${line:0:4} in "200 " ) echo $line >&2 return;; "510 " ) echo $line >&2 return;; "520 " ) echo $line >&2 return;; * ) echo $line >&2;; # si el comando invalido # "520 End ..." 54 esac done } #envía a reiniciar el servidor if [ "$1" = "71103012751" ]; then echo "EXEC Playback p/reiniciar-servidor" $SERVIDOR /sbin/reboot exit fi # reinicia servicios de red if [ "$1" = "71103012752" ]; then echo "EXEC Playback p/reiniciar-servicios" $SERVIDOR /etc/rc.d/rc.network restart exit fi #Le pasa como argumento restado el primer número y sin ceros TMP=$1; i=${TMP:1};PARAM=${i#"${i%%[!0]*}"} $SERVIDOR /usr/local/sbin/probarcliente $PARAM #checkresults #echo "SAY NUMBER 777 \"\"" echo "=================== Completo ====================" >&2 55 ******************************************* Archivo sip.conf ********************************************* [general] language=es [sets](!) type=friend context=internal host=dynamic disallow=all allow=ulaw dtmfmode=rfc2833 secret=1234 [101](sets) maibox=101 [102](sets) maibox=102 [103](sets) maibox=103 [104](sets) maibox=104 [105](sets) maibox=105 56 ******************************************* Archivo extensions.conf ******************************************* ; extensions.conf - DialPlan de Asterisk ; ; This configuration file is reloaded ; - With the "dialplan reload" command in the CLI ; [general] [globals] CONSOLE=Console/dsp ; Console interface for demo ;CONSOLE=DAHDI/1 IAXINFO=guest ; IAXtel username/password TRUNKFIJA=DAHDI/g1 ; Trunk interface TRUNKCELL=DAHDI/4 TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0) ;TRUNK=IAX2/user:pass@provider ; ignorepat => 9 ; [internacional] ignorepat => 9 exten => _900.,1,Dial(${GLOBAL(TRUNKFIJA)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [trunkld] exten => _90NXXXXXXX,1,Dial(${GLOBAL(TRUNKFIJA)}/${EXTEN:${GLOBAL(TRUNKM SD)}}) 57 [trunklocal] exten => _925[78]XXXX,1,Dial(${GLOBAL(TRUNKFIJA)}/${EXTEN:${GLOBAL(TRUNKMS D)}}) [trunktollfree] exten => _91800XXXXXX,1,Dial(${GLOBAL(TRUNKFIJA)}/${EXTEN:${GLOBAL(TRUNK MSD)}}) [trunk-notollfree] exten => _91877XXXXXX,1,Dial(${GLOBAL(TRUNKFIJA)}/${EXTEN:${GLOBAL(TRUNK MSD)}}) [trunkregional] exten => _92NXXXXX,1,Dial(${GLOBAL(TRUNKFIJA)}/${EXTEN:${GLOBAL(TRUNKMSD )}}) [trunknacional] exten => _90NNXXXXXX,1,Dial(${GLOBAL(TRUNKFIJA)}/${EXTEN:${GLOBAL(TRUNKM SD)}}) [trunkcelular] exten => _90[89]XXXXXXX,1,Dial(${GLOBAL(TRUNKCELL)}/${EXTEN:${GLOBAL(TRUN KMSD)}}) [largadistancia] ignorepat => 9 include => local 58 include => trunkld [local] ignorepat => 9 include => default include => trunklocal include => trunktollfree ;Include parkedcalls (or the context you define in features conf) ;to enable call parking. include => parkedcalls ; [macro-trunkdial] ; ; Standard trunk dial macro (hangs up on a dialstatus that should ; terminate call) ; ${ARG1} - What to dial ; exten => s,1,Dial(${ARG1}) exten => s,n,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Hangup exten => s-BUSY,1,Hangup exten => _s-.,1,NoOp [macro-stdexten] ; Standard extension macro ; ${ARG1} - Voicemail box ; ${ARG2} - Device extension(s) to ring ; 59 exten => s,1,Dial(${ARG2},20) ; Ring the interface, 20 seconds maximum exten => s,2,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) exten => s-BUSY,1,Voicemail(${ARG1},b) ; If busy, send to voicemail w/ busy announce ;exten => s-BUSY,2,Goto(public,s,1) ; If they press #, return to start exten => s-NOANSWER,1,Voicemail(${ARG1},u) ; If unavailable, send to voicemail w/ unavail announce ;exten => s-NOANSWER,2,Goto(public,s,1) ; If they press #, return to start exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answ [repetir-soporte] exten => s,1,Background(p/repetir-test) ; si desea repetir esta prueba presione ... exten => s,n,Background(p/1h) exten => s,n,Background(p/buzom-sop) ; Si desea dejar un mensaje en el departamento técnico presione .. exten => s,n,Background(p/2h) exten => 1,1,AGI(testcli.agi,${COD_USER}) exten => 1,n,Goto(s,1) exten => 2,1,Voicemail(102) exten => i,1,Wait(2) exten => i,n,Playback(p/invalid-opc) ; Usted ha escogido una opción inválida exten => i,n,Wait(1) exten => i,n,Goto(s,1) exten => t,1,Playback(goodbye) ; adios exten => t,n,Hangup 60 [soporteauto] exten => s,1,Background(p/intro-sop) ; Bienvenido al sistema de soporte automático exten => s,n,Background(p/codigo) ; por favor digite su código de usuario exten => s,n,Background(p/buzom-sop) exten => s,n,Background(p/3h) exten => s,n,Waitexten(p/10) exten => _1XXX,1,Set(COD_USER=${EXTEN}) ; leer código exten => _1XXX,n,AGI(testcli.agi,${COD_USER}) exten => _1XXX,n,Goto(repetir-soporte,s,1) exten => _7110301275X,1,AGI(testcli.agi,${EXTEN}) exten => 3,1,Voicemail(102) exten => i,1,Wait(2) exten => i,n,Playback(p/invalid-cod) ; Usted ha presionado un código invalido exten => i,n,Wait(1) exten => i,n,Goto(s,2) exten => t,1,Playback(goodbye) ; adios exten => t,n,Hangup [incoming] exten => s,1,Answer exten => s,n,GotoIfTime(09:00-17:59|mon-fri|*|*?,7) exten => s,n,GotoIfTime(09:00-11:59|sat|*|*?,7) ; modificar sí se agregan ; prioridades en estas extens. exten => s,n,Wait(1) exten => s,n,Background(p/cerrado) exten => s,n,Goto(13) ; aquí también modificar exten => s,n,Background(p/graciasporllamar) exten => s,n,Background(p/siconocelaext) exten => s,n,Background(p/conlaoperadoraofax) 61 exten => s,n,Background(p/0h) exten => s,n,Background(p/soprtetecnico) exten => s,n,Background(p/1h) exten => s,n,Background(p/soprtetecnicoauto) exten => s,n,Background(p/2h) exten => s,n,Wait(2) exten => s,n,Background(p/mmntollamadatransf) exten => s,n,Dial(SIP/101,10) ; si nadie responde suena el sip 101 exten => s,n,WaitExten(10) ;include => empleados exten => 0,1,Macro(stdexten,101,SIP/101) exten => 1,1,Macro(stdexten,102,SIP/102) exten => 2,1,Goto(soporteauto,s,1) exten => i,1,Playback(invalid) exten => i,n,goto(s,5) exten => t,1,Playback(goodbye) [internal] ignorepat => 9 include => local include => trunkcelular include => empleados exten => _81X,1,Dial(DAHDI/${EXTEN:2}) [empleados] exten => 101,1,Macro(stdexten,101,SIP/101) exten => 102,1,Macro(stdexten,102,SIP/102) exten => 103,1,Macro(stdexten,103,SIP/103) exten => 104,1,Macro(stdexten,104,SIP/104) exten => i,1,Playback(beep) exten => i,1,Hangup [default] 62 ******************************************* Archivo chan_dahdi.conf ******************************************* [trunkgroups] [channels] language=es usecallerid=yes hidecallerid=no callwaiting=no threewaycalling=yes transfer=yes echocancel=yes echotraining=yes immediate=no ; define channels context=internal signalling=fxo_ks channel => 1 busydetect=yes busycount=6 ; para que la línea no se quede colgada ; para que la línea no se quede colgada context=incoming signalling=fxs_ks ; Incoming calls go to [incoming] in extensions.conf ; Use FXS signalling for an FXO channel group => 1 channel => 2-3 63 ******************************************* Archivo crontab.txt ******************************************* #En Linux el commando “contrab” se ejecuta periódicamente #ejecuta el script de comprobación de servicios cada 2 minutos */2 * * * * /usr/local/sbin/comprueba ******************************************* Archivo voces.txt ******************************************* # Son voces personalizadas que son invocadas en el dialplan y en la interfaz # AGI, están colocadas en el directorio /var/lib/asterisk/sounds/es <intro-sop> bienvenido al sistema de soporte automático <codigo> por favor digite su código de usuario <buzom-sop> si prefiere dejar un mensaje al departamento técnico presione... <error-mac> le informamos que su equipo no está respondiendo peticiones ping pero... <r-normal> tenemos muy buena conexión con su enlace inalámbrico, es decir su antena de radio <radio5> hay una pequeña perdida de paquetes de datos de su equipo inalámbrico es decir su antena de radio hacia nuestro servidor lo cual puede ser normal <radiomayor5> hay una importante pérdida de paquetes de datos de su equipo inalámbrico es decir su antena de radio hacia nuestro 64 servidor, este problema está siendo notificado a soporte técnico <r-resp-eq-noresp> le sugerimos revise la conexión del cable de red que viene de la antena hacia su computadora o servidor puesto que no tenemos respuesta de su equipo además.... <asimismo> asimismo denominamos equipo a la computadora o al servidor que recibe el internet <fin-pruebas> pruebas terminadas <r-no-resp> le informamos que su equipo inalámbrico no responde, posiblemente porque este trabado o porque este sin energía eléctrica, le recomendamos desconectar brevemente el adaptador de corriente y verificar que este con energía <repetir-test> si desea repetir el diagnostico presione... <mientras> Mientras revisamos tanto su equipo inalámbrico como su computadora o el servidor que recibe el internet, permítanos informarle que usted puede repetir esta prueba con el fin de obtener un diagnostico mas exacto <corte> Desafortunadamente hemos tenido inconvenientes en debitar de su cuenta el valor del servicio, le ruego se acerque a nuestras oficinas para solucionar este inconveniente <cerrado> Estimado cliente, nuestro horario de atención es de 9 de la mañana a seis de la tarde y los días sábados de 9 a una <suspendido> Estimado cliente, su cuenta ha sido deshabilitada, favor comunicarse con el departamento de contabilidad 65 <congestion-eq> Estimado cliente, hemos detectado, que la red inalámbrica esta normal, pero si hay pérdida de datos desde nuestros servidores hacia su equipo, posiblemente este consumiendo todo su ancho de banda de banda asignado <conlaoperadoraofax> Para comunicarse con la operadora o enviar un fax digite <err_no_cli> Error, código o contraseña de usuario incorrecta <err_sin_args> <espere> Error interno, cancelando revisión En este momento, se está evaluando su enlace y determinando la posible causa de su problema, por favor tenga la bondad de esperar un momento <finish> prueba terminada <goodbye> hasta pronto <graciasporllamar> gracias por llamar <invalid-cod> Usted ha presionado un código inválido <invalid-opc> Usted a escogido una opción inválida <lentitud> Si su servicio de internet esta deficiente, presione <mmntollamadatransf> <normal> Momento, su llamada está siendo transferida le informamos, que no se ha detectado ningún inconveniente en su enlace, de persistir los problemas, se le recomienda reiniciar su computador, reiniciar su equipo inalámbrico y probar con otro navegador diferente de internet explorer, por ejemplo el mozilla firefox 66 <prompt601> hasta pronto <reiniciar-servicios> Reiniciando servicios de Red <reiniciar-servidor> El servidor está siendo reiniciado <repetir-msm> Si desea escuchar de nuevo este mensaje presione <siconocelaext> Si conoce la extensión, márquela ahora, caso contrario por favor espere <sin-internet> Si no tiene internet presione <soportetecnico> Con Soporte Técnico y solución de averías digite <soprtetecnicoauto> Para recibir Soporte Técnico automatizado digite 67 ******************************************* Archivo verlogsoporte.log ******************************************* #!/bin/sh LOG="/var/log/probarcliente.log" if [ "$1" == "" ]; then tail $LOG else grep $1 $LOG fi ******************************************* Archivo probarcliente.log ******************************************* #!/bin/bash #en este archivo el IPCOP almacena la configuración de los clientes RUTA="/var/ipcop/wireless/config" #la subred sobre la que se realizara el monitoreo SUBRED="192.168" #en este archivo se registrara los eventos de soporte LOG="/var/log/probarcliente.log" if [ "$1" == "" ]; then echo "EXEC Playback p/err_sin_args" # error interno, cancelando revisión exit fi 68 TMP=$1 IP=$(awk -F , '{if ($1=='$TMP') {print$2} }' $RUTA) if [ "$IP" == "" ]; then echo "EXEC Playback p/err_no_cli" #error cliente no existe exit fi if grep -w $IP $RUTA | grep off > /dev/null ; then echo "EXEC Playback p/suspendido" #cuando el cliente ha sido deshabilitado exit fi OCT4=${IP##*.} #cuarto octeto de la IP OCT4R=$[OCT4-1] #cuarto octeto del radio TEMP=${IP%.*}; OCT3=${TEMP##*.} # tercer octeto cd /tmp ping -c 20 $SUBRED.$OCT3.$OCT4R > tmp_r.$1 & ping -c 20 $IP > tmp_eq.$1 & echo "EXEC Playback p/mientras" X=$(grep -w $IP $RUTA | awk -F , '{print$5 }') #Esperar a que se termine el ping while ! [ -s tmp_r.$1 ] || ! [ -s tmp_eq.$1 ]; do sleep 1 done i=$(grep "packet loss" tmp_r.$1 | awk '{print$7}' ) let laten_radio=${i%"%"} i=$(grep "packet loss" tmp_eq.$1 | awk '{print$7}' ) 69 let laten_eq=${i%"%"} MAC=$(arp $IP | grep -Eo '([0-9A-F]{2}:){5}[0-9A-F]{2}') #loguear FECHA=$( date +%e-%m/%H:%M ) echo "$FECHA, Codigo: $TMP, IP $IP, latencia equipo:$laten_eq, latencia radio:$laten_radio, mac $MAC" >> $LOG ########################################################## function showradio() { # muestra información de acuerdo a la latencia radio y del equipo case "$1" in 100) echo "EXEC Playback p/r-no-resp";; [0-2] ) echo "EXEC Playback p/r-normal";; [3-5] ) echo "EXEC Playback p/radio5";; * ) echo "EXEC Playback p/radiomayor5";; esac } echo "EXEC Playback beep" case "$laten_eq" in 100) if [ "$MAC" == "" ]; then [ $laten_radio -lt 100 ] && echo "EXEC Playback p/r-resp-eq-noresp" #equipo y radio no responden else echo "EXEC Playback p/error-mac" #equipo no responde por que el ping esta bloqueado fi showradio $laten_radio;; #como no se conoce latencia del equipo entonces probar con el radio [0-2]) echo "EXEC Playback p/normal";; 70 * ) let "DIFF=$laten_eq - $laten_radio" if [ $laten_radio -lt 3 ] && [ $DIFF -gt 3 ]; then echo "EXEC Playback p/congestion" else showradio $laten_radio fi;; esac echo "EXEC Playback p/fin-pruebas" rm tmp_* ******************************************* Archivo getcli.log ******************************************* #!/bin/sh if [ "$1" == "" ]; then cat /var/ipcop/wireless/config else grep -i $1 /var/ipcop/wireless/config grep -w $1 /var/log/reportenavcli/abuse.txt fi 71 ******************************************* Archivo enviarmail.log ******************************************* #!/bin/sh if [ $# -ne 3 ]; then echo "Uso: $0 Para Asunto Texto" exit 1 fi from="info@lojasystem.net" domain="ipcopbak.localdomain" mailserver="192.168.2.251" to=$1; subject=$2 mailtext=$3 exec 9<>/dev/tcp/$mailserver/25 echo "HELO $domain" >&9 read -r temp <&9 echo "$temp" echo "Mail From: $from" >&9 read -r temp <&9 echo "$temp" echo "Rcpt To: $to" >&9 read -r temp <&9 echo "$temp" echo "Data" >&9 # echo "From: $from" >&9 # echo "To: $to" >&9 # echo "Subject: $subject" >&9 read -r temp <&9 # echo "$temp" echo $mailtext >&9 echo "." >&9 72 read -r temp <&9 echo "$temp" echo "quit" >&9 read -r temp <&9 echo "$temp" 9>&9<&echo "Echo, revisar mensajes previos para ver si hay errores" exit 0 ******************************************* Archivo comprueba.log ******************************************* #!/bin/sh eval $(/usr/local/bin/readhash /var/ipcop/ethernet/settings) ROJO="\033[31m" VERDE="\033[32m" function alarma(){ presenta "$1" /usr/bin/beep -f 659 -l 460 -n -f 784 -l 340 -n -f 659 -l 230 -n -f 659 -l 110 -n -f 880 -l 230 -n -f 659 \ -l 230 -n -f 587 -l 230 -n -f 659 -l 460 -n -f 988 -l 340 -n -f 659 -l 230 -n -f 659 l 110 -n -f 1047 -l \ 230 -n -f 988 -l 230 -n -f 784 -l 230 -n -f 659 -l 230 -n -f 988 -l 230 -n -f 1318 -l 230 -n -f 659 -l 110 \ -n -f 587 -l 230 -n -f 587 -l 110 -n -f 494 -l 230 -n -f 740 -l 230 -n -f 659 -l 460 } 73 function presenta(){ enviarmail lojasys@gmail.com "revisar" "$1" > /dev/null echo -ne $ROJO echo "$1" fecha=$(date +%F/%r) echo $fecha >> /var/log/comprueba.log echo $1 >> /var/log/comprueba.log } ulimit -HSn 4096 echo -n Verificando interfaz BLUE: if mii-tool $BLUE_DEV | grep "link ok" > /dev/null then echo OK else alarma "Interfaz BLUE desconectada, posiblemente los clientes estén sin internet" echo "echo compruebe cables y conexiones dese el servidor hacia el switch de los clientes" fi #echo -n Verificando interfaz GREEN: #if mii-tool $GREEN_DEV | grep "link ok" > /dev/null #then # echo OK #else # alarma "Interfaz GREEN desconectada, posiblemente los clientes estén sin internet" # echo "compruebe cables y conexiones dese el servidor hacia el switch de los clientes" #fi echo -n Verificando interfaz WAN: if mii-tool $RED_DEV | grep "link ok" > /dev/null 74 then echo OK else alarma "Interfaz WAN desconectada" echo compruebe cables y conexiones hacia el equipo que conecta el internet echo Pruebas terminadas exit fi echo -n "Verificando Default gateway:" if ping -qc 3 $DEFAULT_GATEWAY > /dev/null then echo OK else alarma "default gateway $DEFAULT_GATEWAY no responde" echo Pruebas terminadas exit fi echo -n haciendo ping a una ip de yahoo: if ping -qc 4 209.191.93.52 > /dev/null then echo OK else echo -n "...no responde, reintentando:" sleep 5 if ping -qc 10 64.233.161.104 > /dev/null then echo OK else alarma "NO responden ips del google" echo "reiniciando servicios de red" /etc/rc.d/rc.network > /dev/null echo "comprobando nuevamente:" sleep 5 75 if ping -qc 4 64.233.161.103 > /dev/null then presenta "problema se resolvió reiniciando servicios de red" else alarma "NO responden ips del google, posible falla del core router o del proveedor" echo pruebas terminadas exit fi fi fi echo -n verificando si resuelve el servidor: if host www.google.com > /dev/null then echo OK else alarma "servidor NO resuelve" echo "Reiniciando servicios de red" /etc/rc.d/rc.network > /dev/null echo "comprobando nuevamente:" sleep 5 if host www.google.com > /dev/null then presenta "problema se resolvió reiniciando servicios de red" else alarma "Problema NO se resolvió reiniciando servicios de red" echo pruebas terminadas, posiblemente necesite reiniciar el servidor para arreglar el problema exit fi fi if [ -e /var/ipcop/proxy/advanced/settings ] then 76 echo "Advanced proxy instalado" PATH_SQUID="/var/ipcop/proxy/advanced/settings" else PATH_SQUID="/var/ipcop/proxy/settings" fi eval $(/usr/local/bin/readhash $PATH_SQUID) if [ "$ENABLE_BLUE" == "on" ] && [ "$TRANSPARENT_BLUE" == "on" ] then echo " *** Nota: proxy habilitado en la interfaz blue y en modo transparente" echo -n Verificando que el proceso squid del proxy este cargado: if pidof squid > /dev/null then echo OK else alarma "squid proxy no levantado" echo a "restaurando squid" /usr/local/bin/restartsquid sleep 5 if pidof squid > /dev/null then presenta "problema se resolvió ejecutando restartsquid" else alarma "Problema NO se resolvió ejecutando restartsquid" echo pruebas terminadas, posiblemente necesite reiniciar el servidor para arreglar el problema exit fi fi else echo Proxy no está habilitado en interfaz web y por ende no se verifica fi echo -n verificando si el servidor navega: if /usr/local/sbin/wget -nv --delete-after www.google.com/index.html 2> /dev/null 77 then echo OK else alarma "servidor NO navega" echo "reiniciando servicios de red" /etc/rc.d/rc.network > /dev/null echo "comprobando nuevamente:" sleep 5 if /usr/local/sbin/wget -nv --delete-after www.google.com/index.html 2> /dev/null then presenta "problema se resolvió reiniciando servicios de red" else alarma "Problema NO se resolvió reiniciando servicios de red" echo pruebas terminadas, posiblemente necesite reiniciar el servidor para arreglar el problema exit fi fi echo pruebas terminadas #todo comprobar si interfaz blue esta habilitada #verificar bien squid cuando este habilitado el advanced proxy 78 Manual de Instalación y Configuración Linux y Asterisk 1 Instalación de Linux Debian. Usamos Debian con Kernel 2.6 para la instalación de Asterisk con Linux. Escogemos esta distribución por la gran aceptación que tiene y por ser una de las distribuciones soportadas por la Digium. Paso 1: Coloque el Cd de Debian en la lectora de Cd-rom e inicie el booteo en su PC Paso 2: Seleccione el idioma para la instalación. 2 Paso 3: Seleccione el país de idioma seleccionado anteriormente. Paso 4: Escoja ahora el mapa de teclado correspondiente. Paso 5: Escriba el nombre de host de la máquina. 3 Paso 6: Escriba el dominio al cual este equipo es parte. Paso 7: Será hecha la configuración de particionamiento de disco del equipo, apenas confirme las opciones presentadas. En este proceso todos los datos de su disco duro se perderán por eso es recomendable hacerlo en un computador nuevo o en uno que se pueda formatear. Paso 8: Confirme que usted va a formatear todo el disco. 4 Paso 9: Confirme que todos los archivos estarán en una partición. Paso 10: Acepte y finalicé las opciones de particionamiento. Paso 11: Confirme nuevamente. 5 Paso 12: Acepte la instalación de GRUB. Paso 13: La instalación está completa, digite <enter> para continuar. Paso 14: Ahora la máquina se reiniciara, remueva el CD. 6 Paso 15: Siga las opciones presentadas para la configuración del horario. Paso 16: Escoja América. Paso 17: Escoja “Other”. 7 Paso 18: Escoja su ciudad. Paso 19: Digite “asterisk” de contraseña para o usuário root. Paso 20: Reescriba la contraseña para confirmar. 8 Paso 21: Cree un usuario llamado asterisk. Paso 22: Escriba el nombre de usuario Asterisk nuevamente. Paso 23: Escriba “asterisk” como contraseña para el usuario asterisk. 9 Paso 24: Reescriba la contraseña para confirmar. Paso 25: Responda no a la pregunta para verificación del otro CD. Paso 26: Ya que utilizaremos esta máquina como servidor Asterisk PBX, no es necesario seleccionar ninguna opción de las presentadas aquí. 10 Paso 27: Apenas confirme la opción presentada para la terminación de las configuraciones de Debian. Paso 28: Use la cuenta Asterisk para el servidor de e-mail: Paso 29: Finalizando la Instalación de Debian. 11 Preparando Debian para Asterisk. La instalación de Debian está completa, vamos ahora instalar los paquetes necesarios para la instalación/compilación de los drivers de las placas zaptel y del propio Asterisk. Paso 1: Haga login como root. Paso 2: Agregar fuente para download de paquetes adicionales de Debian.- Verificamos que los repositorios estándar de debian estén instalados en caso contrario incluir la siguiente línea con cualquier editor de textos en el archivo /etc/apt/sources.list deb http://http.us.debian.org/debian stable main contrib non-free y saltar al paso 7, ó en caso contrario seguir con los siguientes pasos. Ejecutar el comando de Linux. #apt-setup Paso 3: Seleccionar ftp. Paso 4: Seleccione su país. 12 Paso 5: Seleccionar ftp.debian.org Paso 6: Seleccionar <no> para no insertar ninguna otra fuente. Paso 7: Instalar los Headers del Kernel en ejecución: Para ello debemos conocer cual es el kernel instalado con el comando. #uname –a Que dependiendo de la versión instalada muestra algo así como: Linux TESIS 2.6.18-6-686 #1 SMP Sun Feb 10 22:11:31 UTC 2008 i686 GNU/Linux Entonces pondríamos #apt-get install linux-headers-2.6.18-6-686 Una manera abreviada y directa de hacer lo anterior sería #apt-get install linux-headers-$(uname -r) 13 Ahora vamos a hacer una actualización de nuestro sistema con los siguientes comandos: #apt-get update #apt-get upgrade Nota: Aquí nos dice que va a instalar algunos paquetes solo le tenemos que presionar la “s” y listo comienza a actualizar y a instalar. Paso 8: Instalación de los paquetes necesarios para Asterisk: #apt-get install bison openssl libssl-dev libasound2-dev libc6dev libnewt-dev libncurses5-dev zlib1g-dev gcc g++ make 14 Instalación de Asterisk La instalación de Asterisk en un sistema GNU/Linux sigue los siguientes pasos: – Instalación de paquetes y librerías dependientes. – Descarga del código fuente de Asterisk. – Compilación de Asterisk. – Instalación en el sistema. – Instalación de ficheros de configuración de prueba. Instalación de librerías dependientes Asterisk necesita para su correcta compilación y funcionamiento los siguientes paquetes: – openssh-server: para acceso remoto seguro. – gcc,make: compilador de lenguaje C y herramientas – libc-dev, libssl-dev, libmysqlclient14-dev zlib1g-dev, libncurses5-dev, Descarga del código fuente de Asterisk El proyecto Asterisk se divide en las siguientes partes: – Asterisk: Núcleo (core) del sistema. – Asterisk-sounds: Voces de calidad pregrabadas. – Asterisk-addons: Software adicional. – Libpri: Librería para gestionar enlaces RDSI Primarios. – Libiax: Librería para utilizar el protocolo IAX. – Zaptel: Interfaz del Kernel para acceder a tarjetas de comunicaciones para líneas analógicas o digitales. Por el momento solo serán necesarios los dos primeros. Descarga del código fuente de Asterisk Ahora que ya se instalo Linux y las bibliotecas necesarias, vamos a obtener las fuentes de Asterisk y drivers de Zaptel para el uso con hardware. Primeramente baje los paquetes desde Digium, lo puede hacer desde Windows con Internet Explorer o directamente desde Linux Debian mediante el comando wget para lo cual debe crear el directorio /usr/src que este no existe mediante los siguientes comandos: #mkdir /usr/src 15 #cd /usr/src #wget http://ftp.digium.com/pub/zaptel/zaptel-1.4.9.2.tar.gz #wget http://ftp.digium.com/pub/libpri/libpri-1.4.3.tar.gz #wget http://ftp.digium.com/pub/asterisk/asterisk-1.4.18.1.tar.gz #wget http://ftp.digium.com/pub/asterisk/asterisk-addons-1.4.6.tar.gz Las voces pregrabadas de Asterisk están disponibles en castellano, gracias a la empresa Capatres SL: #wget http://www.capatres.com/asterisk-sonidos-es-0.4.tar.gz Luego Descomprimirlos los archivos usando: #tar -zxvf asterisk-1.4.18.1.tar.gz #tar -zxvf asterisk-addons-1.4.6.tar.gz #tar -zxvf libpri-1.4.3.tar.gz #tar -zxvf zaptel-1.4.9.2.tar.gz #tar –zxyf asterisk-sonidos-es-0.4.tar.gz Se crean los directorios asterisk-1.4.18.1 con el código fuente listo para ser compilado y asterisk-sounds con las voces y sonidos en español preparadas para ser instaladas. Compilando los Driver ZAPTEL Normalmente los drivers de zaptel se compilan con los siguientes comandos: #cd /usr/src/zaptel-1.4.9.2/ #make clean #./configure #make install #make config #update-rc.d zaptel defaults 16 Compilando Asterisk y sus librerías. La compilación se la hace de la misma manera para cada paquete de Libpri, Asterisk y Asterisk-Addons. La herramienta make se encarga de compilar y enlazar todos los ficheros fuente necesarios, a partir del Makefile. Se invoca con 'make' desde el directorio correspondiente. En caso de error, se nos informará de las posibles librerías necesarias que no están instaladas (Generalmente: zlib1g- dev, libssl-dev). #cd /usr/src/libpri-1.4.3/ #make clean #make install #cd /usr/src/asterisk-1.4.18.1/ #make clean #./configure #make install #make samples #make config Nota: la línea de comando make config permite que el programa se ejecute en el arranque del sistema operativo, y el comando make samples crea archivos 17 de configuración. Todos los ficheros .conf de ejemplo necesarios para correcto arranque de Asterisk. el #cd /usr/src/asterisk-addons-1.4.6/ #make clean ; make clean Configurar canales en drivers de Zaptel Un canal equivale a una línea telefónica en la forma de un circuito de voz digital. Este generalmente consiste de una señal analógica en un sistema de telefonía convencional (POST) o alguna combinación de CODEC y protocolos de señalización (GSM con SIP, U). Según el tipo de tarjeta que se este utilizando y después de encajarla en el slot PCI se configura editando los archivos zaptel.conf en el directorio /etc que es el archivo de configuración de la tarjeta zaptel., y zapata.conf en el directorio /etc/asterisk que es el archivo de configuración de los canales zapata de Asterisk. Esto es para integrar el Asterisk a la red de telefonía pública utilizando una placa o tarjeta tipo FXO (entrada de línea analógica al PC). Mediante los siguientes comandos procedemos a editar estos archivos. #cd /etc #vim zaptel.conf El archivo zaptel.conf tienen que costar las siguientes líneas básicas: fxsks=1 analógicas loadzone=us defaultzone=us ; entradas de líneas telefónicas ; locación o zona del servido ; locación o zona del servido y el archivo zapata.conf tienen que costar las siguientes líneas básicas: 18 [channels] context=default signalling=fxs_ks group=1 channel=>1 Luego de configurar estos archivos hay que cargar los drivers de zaptel en la línea de comandos: #modprobe zaptel #ztcfg –vvv #modprobe wcfxo Y para verificar si los drivers de la tarjeta se han cargado correctamente se puede utilizar el comando zttool el cual presentara el estado. Configuración de los teléfonos. Internamente en asterisk se utiliza canales de voz sobre IP los cuales utilizan el protocolo de señalización para establecer las conexiones de un teléfono a otro, el protocolo más usado es el SIP ( Session Initiated Protocol). SIP es configurado desde el archivo /etc/asterisk/sip.conf y contiene parámetros relacionados con la configuración de los teléfonos y operadoras SIP. Los clientes SIP deben estar configurados antes que puedan hacer y recibir llamadas. En nuestro ejemplo práctico crearemos 4 extensiones (ext101, ext102,ext103 y ext104). Editamos el archivo sip.conf y ponemos las siguientes líneas: #cd /etc/asterisk/ #vim sip.conf [general] context=internal srvlookup=yes 19 bindaddr=0.0.0.0 port=5060 [ext101] type=friend callerid="ext101" <101> secret=1234 quality=yes nat=no host=dynamic canreinvite=no [ext102] type=friend callerid="ext102" <102> secret=1234 quality=yes nat=no host=dynamic canreinvite=no [ext103] type=friend callerid="ext103" <103> secret=1234 quality=yes nat=no host=dynamic canreinvite=no [ext104] type=friend callerid="ext104" <104> secret=1234 quality=yes nat=no host=dynamic canreinvite=no 20 Plan de discado. El plan de discado es lo mas importante en el asterisk en la medida que este define como asterisk irá gestionando las llamadas. Este consiste en una lista de instrucciones o pasos que asterisk debería seguir, las mismas que son activadas a partir de los dígitos recibidos de un canal o aplicación. La mayor parte del plan de discado está contenida en el archivo extensions.conf que está en el directorio /etc/asterisk #cd /etc/asterisk/ #vim extensions.conf [internal] ; sección para salida de llamadas ignorepat =>9 ; se asigna Numero para salida automática comúnmente el 9 exten => 9,1,Dial(Zap/1) ; si se marca el 9 asterisk saldrá a la red de ; telefonía pública por el primer canal disponible exten => 9,n,Hangup exten => 81,1,Dial(Zap/2) ; para salir con un canal especifico se marca el 8 exten => 81,n,Hangup ; seguido del Nro del canal ejemplo 81. exten => 82,1,Dial(Zap/3) exten => 82,n,Hangup exten => 83,1,Dial(Zap/4) exten => 83,n,Hangup exten => 101,1,Dial(SIP/ext101) ; si marca 101 asterisk marcara a la extensión exten => 102,1,Dial(SIP/ext102) ; 100 (ext101) sin hacer uso de la red de exten => 103,1,Dial(Sip/ext103) ;telefonía publica ; [pstn] es la sección que maneja las entradas o marcaciones externas o sea que ; vienen desde la red de telefonía pública [pstn] include => internal exten => 0,1,Dial(SIP/ext101) exten => 1,1,Dial(SIP/ext102) exten => 2,1,Dial(Sip/ext103) exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,Background(graciasporllamar) exten => s,n,Background(siconocelaext) exten => s,n,Background(conlaoperadoraofax) exten => s,n,Background(0) exten => s,n,Background(soprtetecnico) exten => s,n,Background(1) exten => s,n,Background(soprtetecnicoauto) exten => s,n,Background(2) exten => s,n,Wait(2) exten => s,n,Background(mmntollamadatransf) exten => s,n,Dial(SIP/ext102) ; si nadie responde suena el sip 101 21 exten => s,n,Hangup Nota: los archivos de sonido que se utilizan con la función background() deben ser creados y copiados a directorio. /usr/src/asterisk-1.4.18.1/sounds Las funciones y aplicaciones de Asterisk se profundizaran según como se avance la tesis. Instalando un Softphone para las pruebas del IVR. Para estas pruebas utilizaremos el softphone XLITE que es gratuito y lo tenemos previamente bajado de la web en un laptop con Windows XP. Instalamos y configuramos el X-Lite en system settings en la cual en la línea SIP PROXY damos la dirección IP del servidor Linux, en la línea USER NAME ponemos “ext102” (será esta la extensión 102”, y en el Linux cargamos nuevamente el asterisk con la siguiente línea: #asterisk –vvvv Para verificar que se registre el Xlite, y estaremos listos para las pruebas, adicionalmente se puede conectar un ATA con un teléfono convencional o un teléfono IP los cuales se configuraran como otras extensiones ejemplo (ext101, ext102, ..etc). 22