Redes de Área Local e Interconexión de Redes Práctica de VoIP Instalación y administración de un servidor Asterisk INTRODUCCIÓN Asterisk es una aplicación de software libre que implementa los servicios de una centralita telefónica de VoIP. A la centralita se le pueden conectar teléfonos de VoIP (que también pueden ser programas de ordenador o “softphones”), fax, líneas RDSI, líneas telefónicas analógicas convencionales… Asterisk fue inicialmente desarrollada para Linux pero actualmente existen versiones para casi todas las plataformas. trixbox (con “t” minúscula) es una distribución Linux (en concreto de CentOS) que incluye Asterisk y FreePBX que es un entorno gráfico basado en WEB para una configuración cómoda y más sencilla de Asterisk. Esta práctica está basada en trixbox. Instalaremos desde cero la centralita de VoIP y se realizará la configuración básica para tener una red de VoIP operativa. La práctica no pretende (ni mucho menos) explicar los numerosos detalles de configuración de Asterisk. Los objetivos son mucho más modestos pero también importantes: 1) Conocer y tener una experiencia en la instalación (básica) de esta tecnología. 2) Saber hacer una instalación básica. 3) Conocer de la versatilidad de los servicios de valor añadido que este tipos de centralitas puede dar (Control total sobre las llamadas de la empresa, conferencias (múltiples interlocutores), IVR (recepcionista digital), reconocimiento de voz, grupos de llamada, Follow-me, …) 4) Saber hacer como interconectar una red de VoIP con la(s) red de telefonía analógica. 5) Saber hacer como interconectar dos centralitas Asterisk (reducción de costes de llamadas internacionales) 1 Introducción a los protocolos de VoIP SIP (Session Initiation Protocol ) Actualmente es el estándar más importante en desarrollos de VoIP, desplazando al pionero H.323. La premisa de SIP es que la comunicación es entre pares (peer-to-peer) y él se encarga de la negociación entre los dos (o más) interlocutores. SIP es un protocolo relativamente sencillo, con una sintaxis similar a protocolos como http y SNMP. SIP es un protocolo de señalización a nivel de aplicación que utiliza el puerto 5060. Los mensajes SIP pueden ir sobre TCP y sobre UDP aunque lo más usual es usar UDP. La función de SIP es la de establecer, modificar y terminar una sesión de VoIP entre dos interlocutores. SIP no se encarga de transportar datos entre los interlocutores. Para esa tarea se utiliza el protocolo RTP (Real Time Protocol). RTP utilizar otros puertos para realizar su tarea (normalmente en el rango 10.000 a 20.000) La figura muestra la topología más frecuente que ilustra la relación entre los protocolos SIP y RTP. Cuando un interlocutor quiere llamar al otro, se pone en contacto con su servidor Proxy y este intenta localizar al otro (que puede estar conectado al mismo o a otro servidor Proxy). Una vez que SIP ha puesto en contacto a ambos interlocutores, estos se comunican directamente entre ellos sin que el flujo de datos tenga que pasar por los servidores. SIP y NAT Probablemente el problema más importante de SIP es tener que negociar una sesión cuando los interlocutores (uno o los dos) están detrás de un NAT (Network Address Translation). SIP manda las direcciones (endpoints: port+IP) de los interlocutores en sus mensajes. Si el interlocutor está en una intranet, el NAT de salida cambia el valor endpoint desde el que es alcanzable el interlocutor PERO no modifica la información de los mensajes SIP. Por lo tanto SIP entrega al otro interlocutor un endpoint inalcanzable. Este problema tiene varias soluciones pero su discusión aquí excede el objetivo de esta introducción (consultar por Hole-punching, STUN, ICE, rport). Desgraciadamente el 2 comportamiento de los NATs no está normalizado, cada fabricante lo hace de una manera, lo cual complica la solución del problema. IAX (Inter-Asterisk eXchange) Actualmente en la versión 2 (IAX2) es un protocolo que aborda el problema de los NATs. La idea es utilizar el mismo puerto UDP para la señalización y para la transmisión de los datos (RTP). Esto supone simplificar el número de “agujeros” (holepunching) a realizar en el NAT para que el interlocutor en la intranet sea alcanzable desde Internet. Algunos autores abogan porque IAX será el futuro de VoIP y otros plantean que la regulación en tema de NATs, o incluso su desaparición con la entrada de IPv6 dejaran a SIP en su posición de liderato. H.323 H.323 es el pasado como estándar de VoIP. H.323 es una estándar de comunicaciones producido por la ITU, iniciado a finales de 1996, e impulsado por el crecimiento de la comunicación multimedia en redes de área local (LAN). H.323 fue inicialmente diseñado para aplicaciones de video conferencia (p.e. NetMeeting, CUseeMe, …). Dado que fue el primer estándar es también el más ampliamente soportado por conservar la “compatibilidad hacia detrás”. Está siendo desplazado por SIP y IAX Skinny/SCCP Skinny Client Control Protocol (SCCP) es propiedad de Cisco que lo utiliza como protocolo por defecto en sus productos de VoIP. Es pues un protocolo NO estándar. Cisco ofrece firmwares con SIP para sus productos por si el cliente decide no usar su protocolo. INSTALACIÓN SERVIDOR La distribución de trixbox podemos obtenerla de http://www.trixbox.org/ Se recomienda utilizar un PC para uso exclusivo del servidor Asterix. La instalación formatea el disco duro y dejar preinstalado un servidor de Asterix. El tiempo de instalación depende de las características del PC que utilicemos pero es relativamente rápido y requiere de poca intervención del administrador. 3 A continuación se muestran las pantallas que el sistema va mostrando en la instalación. A pie de cada figura se indica la acción a tomar. 1) Pulsar ENTER para continuar con la instalación 3) Seleccione la zona horaria. Puede marcar “System clock uses UTC” si desea que tenga en cuenta el horario de verano. 2) Seleccionar teclado ESPAÑOL 4) Introduzca un password para el usuario de consola “root”. Por favor utilice “ralirfi” Rearrancamos el PC, cargamos el trixbox y entramos en la consola de CentOS usando como usuario/password el que especificamos en la instalación (root/ralirfi). 4 Lo primero que debemos averiguar es cual es nuestra dirección IP. Tecleamos el comando ifconfig El comando help-trixbox nos muestra comandos de consola específicos de trixbox. Conviene que cambiemos el password del usuario maint (comando passwd-maint), que es el administrador cuando entramos vía WEB. Sugerimos que utilice el mismo password que para “root” (ralirfi) Con esto queda terminado el trabajo sobre la consola de nuestro servidor trixbox. El resto de la configuración lo realizamos vía WEB desde cualquier PC del laboratorio. Si necesitáramos volver a acceder a la consola, también se puede hacer de forma remota vía SSH CONFIGURACIÓN BÁSICA SERVIDOR Sea IP_trixbox la dirección IP del PC donde hemos instalado trixbox. Con cualquier Nos pedirá usuario/password. navegador vamos a: http://IP_trixbox/maint Introducimos maint/ralirfi Se muestra una pantalla como la de la figura (versión 2.6). Se observa una barra de menú donde aparece “PBX” por Private Branch Exchange (centralita telefónica). Pulsamos ahí 5 Nos aparece una pantalla como se muestra en la siguiente figura, con un menú vertical a la izquierda. Toda la configuración del servidor Asterix se realiza entrando en ese menú. Vamos a proceder a realizar una configuración básica que pasa por configurar un par de detalles en “General Settings” y dar de alta al menos un par de números de teléfono (Extensions). 6 General Settings En General Settings hay un parámetro que se debe ajustar: a) En la sección “International Settings” seleccione “Country Indications” a “Spain”. Esto hace que la centralita utilice el esquema de tonos adecuado a nuestro país. El resto de parámetros no son críticos para la prueba de funcionamiento que vamos a realizar en el laboratorio y recomendamos que, de momento, los deje como están. No obstante, recomendamos que eche un vistazo a las distintas opciones. Observará que la mayoría del texto está subrayado con una línea discontinua. Esto indica que hay una ayuda contextual con simplemente pasar el puntero del ratón por encima del texto. Atención: Siempre que modifique algo, en cualquier sección de trixbox, recuerde que debe: a) Pulsar “Submit Changes” (normalmente localizado a pie de página) b) Pulsar en la barra naranja “Apply Configuration Changes” Extensions Una extensión identifica a un usuario de nuestra centralita de VoIP. Vamos a configurar un par de extensiones. Entramos en “Extensions” en el menú a la izquierda de la pantalla. a) Seleccione el tipo de dispositivo (teléfono) a añadir. En nuestro caso será un “Generic SIP Device”. Pulsamos “SUBMIT” Se muestra la pantalla de configuración de la nueva extensión. Para realizar una prueba básica bastará con fijar un par de parámetros: b) User Extrensión: por ejemplo “101”. Puede ser cualquier número que no esté previamente asignado. De cualquier longitud. c) Display Name: No es un campo necesario. Normalmente es el nombre del usuario en esa extensión. Por ejemplo “Pepe-101”. d) Secret: A todos los efectos es un password vinculado a la extensión. Esto permite que sólo el usuario autorizado pueda configurar su teléfono con esa extensión. 7 El resto de parámetros de la extensión los dejaremos con su valor por defecto de momento. No obstante, recomendamos echar un vistazo. La sección “Voicemail & Directory” permite configurar un contestador automático para esa extensión. Es una opción muy usada. Si más tarde decide probarla, le interesará saber que se puede llamar desde cualquier teléfono al sistema de correo de voz marcando “ *98 ”. Una locución le pedirá que introduzca el número de extensión del que desea comprobar las grabaciones y el password. Insistimos en que recuerde pulsar SUBMIT (a pie de pantalla) y luego la barra naranja APPLY CONFIGURATION CHANGES (en la parte superior de la pantalla). Repita el procedimiento para dar de alta una segunda extensión con, por ejemplo: a) User Extension = 102 b) Display Name = Juan-102 c) Secret=666 8 Instalación de los teléfonos IP. Ya tenemos configurado nuestro servidor de VoIP con dos extensiones. Ahora tenemos que instalar dos teléfonos IP y verificar que podemos realizar una comunicación. Los teléfonos IP a instalar deben soportar el protocolo estándar SIP (en principio un teléfono preparado para Skype no nos valdría). En el laboratorio tenemos dos modelos de teléfonos SIP. El Linksys SPA942 y el Snom M3. Estos teléfonos no dejan de ser un pequeño ordenador que ejecutan los protocolos SIP + RTP y los codecs de audio correspondientes. Una alternativa cuando estamos frente a un ordenador, como es nuestro caso, es utilizar un “softphone”. Un softphone es un programa que igualmente ejecuta los protocolos y codecs pero en nuestro ordenador. Esto suele tener ventajas añadidas al teléfono IP externo (por ejemplo, soporte para video conferencia, integración con otros programas del ordenador, configuración más cómoda…) pero se necesita dotar al ordenador de altavoces y un buen micrófono. Existen varios “softphone” gratuitos que funcionan en las distintas plataformas (Unix, Windows, Mac). Para esta práctica vamos a utilizar el softphone X-Lite de la empresa Counterpath Puede descargarlo en http://www.counterpath.com/ Instalaremos dos X-Lite en sendos ordenadores del laboratorio. 9 Configuración básica del teléfono X-Lite Clic con el botón derecho del ratón sobre el teléfono, seleccionamos “SIP Account settings…”. Como se muestra en la figura, tan solo debe rellenar los campos: a) USER NAME ponga uno de los dos números de extensión que se dieron de alta en el servidor (101 o 102) b) PASSWORD el mismo que utilizó al dar de alta la extensión (666) c) DOMAIN la dirección IP del servidor El resto de campos puede dejar los valores por defecto. 10 Ejercicios 1.- Prueba de funcionamiento a) Realice una llamada entre los softphones. Si tiene problemas de sonido verifique cual es el dispositivo de audio del PC vinculado al softphones (clic del botón derecho del ratón sobre el softphone Æ opciones Æ Devices) y compruebe que el audio del PC funciona correctamente. b) Puede hacer una traza de los comandos que está ejecutando el servidor conectándose por ssh. a. Utilice un terminal SSH (p.e. PUTTY) y conéctese como root. b. Teclee el comando “asterisk –rv” Cuando efectúe una llamada podrá observar los pasos que realiza el servidor. c. Teclee “help” para ver los comandos que acepta la consola de Asterisk. Pruebe alguno de ellos como: i. “sip show peer <extensión>”: muestra los parámetros activos de conexión vinculados a una extensión. Puede verse la IP y puerto del teléfono para esa extensión (lo cual es importante si queremos capturar el tráfico con un analizador como WireShark), el retardo de propagación (en Status), el tipo de teléfono (Useragent), etc. ii. “sip show users” lista los usuarios (ACL=Access Control List) iii. “sip set debug peer <extensión>” 2.- Configurar el buzón de voz. Vuelva a entrar en EXTENSIONS y configure todas las extensiones para que dispongan de buzón de voz. (La configuración del buzón está al final de la página web. Bastará con que de Status=enable y asigne un password) a) Realice llamadas entre las extensiones y deje algún mensaje de voz. Por defecto, tras 15 segundos sin contestar se activa el buzón de voz. Puede cambiar este tiempo de espera en General Settings Æ Voicemail Æ Number of seconds… b) Puede comprobar sus mensajes desde cualquier teléfono. Marque “ *98 ”. Una locución le pide primero la extensión y luego el password del buzón. c) Puede organizar sus mensajes también desde la página web de trixbox entrando en RECORDINGS (PBXÆPBX Settings. Recordings aparece en el menú superior) 11 GATEWAY DE VOZ La centralita de VoIP que hemos montado nos permite comunicar con teléfonos IP, pero hoy por hoy es necesario tener la posibilidad de también comunicar con abonados de la telefonía analógica tradicional. Esto podemos hacerlo utilizando un Voice Gateway Utilizaremos el modelo SPA3102 de Linksys. Este “Gateway de voz” dispone de dos puertos Ethernet 10/100 configurables en modo Router (NAT) o en modo Bridge y un puerto FXS (ATA) y otro FXO. El puerto FXS (Foreign eXchange Subscriber) emula la línea telefónica analógica tradicional. A este puerto se conecta un teléfono analógico (o un fax) que pasara a ser un dispositivo accesible por VoIP. El puerto FXO (Foreign eXchange Office) conecta el gateway con la línea telefónica analógica. El gateway de voz nos va a permitir utilizar esta línea de comunicación en nuestra red de VoIP. Podremos recibir y hacer llamadas a abonados de teléfono analógico desde los teléfonos IP. Conexionado del Gateway Lo primero es conectar correctamente los cables del gateway de voz teniendo cuidado de no equivocar los conectores RJ11 marcados como “LINE”( el FXO) y “PHONE” (el FXS). Esto es importante porque por los puertos FXS se generan señal eléctrica. Las tomas de teléfono de las paredes son también FXS. Por lo tanto, si conectamos por error la toma de la pared al puerto marcado como “PHONE” estamos conectando entre si dos puertos FXS, ambos transmiten señal y por tanto estamos haciendo un cortocircuito que puede dañar el equipo. FXO FXS Conexión a la red Ethernet del laboratorio De los dos puertos de red (RJ45) sólo utilizaremos uno. Vamos a conectar el puerto rotulado como “INTERNET”. Por este puerto el gateway de voz recibirá (por DHCP) una dirección IP. El otro puerto, rotulado como “ETHERNET” lo vamos a dejar sin conectar ya que en esta práctica no vamos a utilizar la posibilidad que tiene este dispositivo de poderse utilizar también como NAT (el SPA3120 es también un router de banda ancha). 12 Configuración básica del Gateway El SPA3102 se configura cómodamente vía web, pero necesitamos realizar unos pasos previos utilizando su “menú interactivo de voz”: 1) Vamos a hacer un reset total del Gateway para realizar la práctica desde cero 2) Necesitamos habilitar la configuración vía web accediendo por WAN (por defecto sólo deja acceder desde LAN, por el puerto rotulado “Ethernet” que nosotros hemos decidido no usar. 3) Necesitamos la dirección WAN IP del Gateway que le habrá sido asignada vía DHCP Para utilizar el menú de voz necesitamos conectar un teléfono al Gateway (puerto FXS) y desconectar momentáneamente la línea telefónica del puerto FXO. Descolgamos el teléfono y marcamos **** (cuatro asteriscos). Tiene que salir una locución (en ingles) que dice “Linksys configuration menu”. Ya podemos interaccionar con el Gateway mediante el teclado del teléfono. 1) Factory Reset. 2) Habilitar web vía WAN 3) Conocer IP 13 A continuación accedemos al Gateway vía Web. Nos saldrá una pantalla similar a la mostrada en la figura. Se puede observar que el dispositivo es altamente configurable. Vamos a configurar lo mínimo necesario para hacerlo funcionar con nuestro servidor de VoIP. 1) pulsar en “Admin Login” y en “advanced”. La pantalla debe quedar como se muestra en el circulo-A 2) En la Sección “VOICE”, en la pestaña “REGIONAL” cambiar: a. Caller ID Method: ETSI DTMF b. Caller ID FSK Standard: v.23 A 3) En la pestaña “LINE 1” a. Proxy: …la dirección IP de nuestro servidor VoIP b. Display Name: 600 c. User ID: 600 d. Password: 600 14 4) En la pestaña “PSTN Line” a. Proxy: …la dirección IP de nuestro servidor VoIP b. Display Name: 77977 o 85742 (son las extensiones del laboratorio) c. User ID: 77977 o 85742 d. Importante!!. Observe si el SIP Port es el 5061 u otro. Ese valor debemos utilizarlo luego en la configuración del servidor de VoIP Para poder comprobar si nuestro Gateway de voz funciona tenemos que configurarlo también en el servidor de VoIP. En concreto tendremos que dar de alta el Gateway como un TRUNK (canal de comunicación externo) y definir las rutas entrantes INBOUND ROUTES y salientes OUTBOUND ROUTES a ese Trunk. 15 Configuración de un TRUNK para el Gateway de voz Volvemos a conectarnos al servidor web de Asterisk. En el menú de la izquierda de la pantalla entramos en TRUNKS. 1) Add SIP Trunk 2) Fijamos los valores indicados en la figura Recuerde pulsar “Submit Changes” y finalmente “Apply Configuration Changes” en color naranja que sale en la parte superior de la pantalla. 16 Configuración de INBOUND ROUTES Nuevamente en el menú de la izquierda en la pantalla de configuración de nuestra centralita Asterisk, entramos en “Inbound Routes”. Nos sale una pantalla de configuración donde sólo vamos a seleccionar, en “Set Destination” la extensión del teléfono al que se le derivaran todas las llamadas que lleguen por el Gateway. Tal y como se muestra en la figura podemos seleccionar una de las extensiones que tengamos dadas de alta. Configuración de OUTBOUND ROUTES Igualmente, desde el menú seleccionamos “Outbound Routes”. En la pantalla de configuración rellenamos como en la figura Llamamos la atención sobre el apartado Dial Patterns. En el se indica cuales son las secuencias validas de números que se aceptan sean marcados a través del Trunk. La secuencia XXXXX (cinco X) permite que se hagan llamadas a cualquier número de cinco cifras (números de extensiones de teléfonos de la UPV). Pasando el ratón sobre “Dial Patterns” tiene una pequeña explicación sobre otras posibilidades. 17 Ejercicios 3.- Prueba de funcionamiento 1) Para esta práctica, el laboratorio de Redes cuanta con dos líneas telefónicas. Las extensiones 77977 y 85724. El Gateway de voz lo tiene conectado a una de estas dos líneas. Puede probar a llamar a la otra. Las llamadas a extensiones analógicas dentro de la UPV no cuestan dinero. 2) Puede probar a llamar a cualquier otro teléfono analógico (incluidos móviles) pero tendrá que cambiar el “Dial Patterns” del OUTBOUND ROUTES. Aviso: Las llamadas telefónicas tienen un coste que tendrá que pagar el departamento. Le roramos no abuse de esta prueba. En cualquier caso sepa que Asterisk tiene un registro de las llamadas (y la central telefónica de la UPV también) . Interconectar dos Asterisk Empresas con sedes en distintas provincias o países, pueden beneficiarse de llamadas telefónicas analógicas con coste de llamada local. Por ejemplo, un empleado en España puede llamar a un teléfono analógico en el Reino Unido con coste de llamada local si hace que sea el servidor del Reino Unido el que llame a la línea analógica, siendo el resto de la comunicación por VoIP. Internet POTS Para simular esta situación conectaremos dos servidores Asterisk del laboratorio de redes. Necesita ponerse de acuerdo con otros compañeros del laboratorio para hacer esta parte de forma conjunta. 18 Conectar los dos servidores equivale a conectar las troncales (TRUNKS). Una opción es declarar en cada servidor una nueva troncal. Recomendamos usar troncales IAX (Inter Asterisk Exchange). Los pasos son: 1. Crear troncales IAX en cada servidor trixbox. 2. En cada troncal poner lo siguiente: Server1: Outgoing: name: 1to2 allow=ilbc&g729&gsm disallow=all forcejitterbuffer=yes host= ip-server2 jitterbuffer=yes maxjitterbuffer=300 secret=password-server-1 trunktimestamps=yes type=peer username= 1to2 Incoming: user: 2to1 allow=ilbc&g729&gsm context=from-internal disallow=all forcejitterbuffer=yes host=ip-server2 jitterbuffer=yes maxjitterbuffer=300 secret=password-server-1 trunktimestamps=yes type=user 19 Server 2: Outgoing: name: 2to1 allow=ilbc&g729&gsm disallow=all forcejitterbuffer=yes host=ip-server-1 jitterbuffer=yes maxjitterbuffer=300 secret=password-server-2 trunktimestamps=yes type=peer username=2to1 Incoming: name: 1to2 allow=ilbc&g729&gsm context=from-internal disallow=all forcejitterbuffer=yes host=ip-server-1 jitterbuffer=yes maxjitterbuffer=300 secret=password-server-2 trunktimestamps=yes type=user 3. despues hay que crear las rutas en el outbound las cuales deben usar las troncales IAX 4. listo para usar. Ejercicios 4.- Prueba de funcionamiento a) Pruebe primero a llamar a extensiones Asterisk. Para evitar confusiones ponga en un servidor extensiones de 3 dígitos (como están) y en el otro póngalas de 4 dígitos. b) Para que una realizar una llamada local por el servidor remoto deberá modificar las inbound y outbound routes. En el servidor remoto debe hacer que la llamada entrante salga por el trunk que conecta con el Gateway de voz. 20