Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Práctica de VoIP
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
Introducción a los protocolos de VoIP
SIP (Session Initiation Protocol )
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.
H.323
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
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.
3) Seleccione la zona horaria. Puede marcar “System 4) Introduzca un password para el usuario de consola
clock uses UTC” si desea que tenga en cuenta el horario “root”. Por favor utilice “ralirfi”
de verano.
4
Lo primero que debemos averiguar es cual es nuestra dirección IP. Tecleamos el
comando ifconfig
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
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:
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)
Extensions
Una extensión identifica a un usuario de nuestra centralita de VoIP. Vamos a configurar
un par de extensiones.
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.
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
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…”.
10
Ejercicios
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
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.
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.
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.
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.
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
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.
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) .
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:
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
Ejercicios
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