Prctica VoIP

Anuncio
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
Descargar