instalación y configuración de un servidor de telefonía voip

8
Instalación y configuración de un servidor de telefonía VoIP Universidad de Cuenca Facultad de Ingeniería Escuela de Electrónica y Telecomunicaciones Juan Molina [email protected] Milton Muñoz [email protected] Saúl Ochoa [email protected] 1. Introducción Voz sobre Protocolo de Internet, también llamado VoIP por sus siglas en inglés, (Voice over IP), es un grupo de recursos que hacen posible que la señal de voz viaje a través de Internet empleando un protocolo IP. Esto significa que se envía la señal de voz en forma digital, en paquetes de datos, en lugar de enviarla en forma analógica a través de circuitos utilizables sólo por telefonía convencional analógica. Esta tecnología implica un avance en los sistemas de telefonía, ya que presenta muchas ventajas sobre los sistemas telefónicos convencionales como CDMA (Code Divison Multiple Access), TDMA (Time Division Multiple Access), GPRS (General Packet Radio Service) y ATM (Asynchronous Transfer Mode), las cuales basan su funcionamiento principalmente en conmutación de circuitos, es decir, para establecer una comunicación entre dos puntos se requiere mantener un circuito físico durante el tiempo de la llamada. 2. Objetivos 1. Implementar un servidor VoIP en Ubuntu mediante Asterisk. 2. Realizar las configuraciones básicas de Asterisk para un servicio de VoIP en una red LAN. 3. Implementar el servidor VoIP en Raspberry Pi 4. VoIP Hasta hoy en día ha habido una división clara entre dos tipos de redes: Redes de voz, basadas en conmutación de circuitos, por lo que se ocupa un circuito y el enrutamiento durante una comunicación se realiza siempre por el mismo camino. Ej: Red Telefónica convencional Redes de datos, basadas en conmutación de paquetes, la información se discretiza en paquetes y cada paquete puede viajar por caminos diferentes. Ej: Internet Para poder mandar la información por las redes de datos basadas en conmutación de paquetes es necesario adoptar unos protocolos que permitan transmitir y recuperar la información. El problema con la tecnología de conmutación de circuitos es que requiere una significativa cantidad de ancho de banda para cada llamada y el circuito no es empleado eficientemente ya que emplea un canal durante toda la duración de la llamada pero la mayoría de las conversaciones telefónicas están hechas de silencio

Upload: milton-munoz

Post on 14-Nov-2015

12 views

Category:

Documents


5 download

DESCRIPTION

Instalacion de Asterisk en Ubuntu

TRANSCRIPT

  • Instalacin y configuracin de un servidor de telefona VoIP

    Universidad de Cuenca Facultad de Ingeniera

    Escuela de Electrnica y Telecomunicaciones

    Juan Molina [email protected]

    Milton Muoz [email protected]

    Sal Ochoa [email protected]

    1. Introduccin Voz sobre Protocolo de Internet, tambin llamado VoIP por sus siglas en ingls, (Voice over IP), es un grupo de recursos que hacen posible que la seal de voz viaje a travs de Internet empleando un protocolo IP. Esto significa que se enva la seal de voz en forma digital, en paquetes de datos, en lugar de enviarla en forma analgica a travs de circuitos utilizables slo por telefona convencional analgica.

    Esta tecnologa implica un avance en los sistemas de telefona, ya que presenta muchas ventajas sobre los sistemas telefnicos convencionales como CDMA (Code Divison Multiple Access), TDMA (Time Division Multiple Access), GPRS (General Packet Radio Service) y ATM (Asynchronous Transfer Mode), las cuales basan su funcionamiento principalmente en conmutacin de circuitos, es decir, para establecer una comunicacin entre dos puntos se requiere mantener un circuito fsico durante el tiempo de la llamada.

    2. Objetivos

    1. Implementar un servidor VoIP en Ubuntu mediante Asterisk. 2. Realizar las configuraciones bsicas de Asterisk para un servicio de VoIP en una red LAN. 3. Implementar el servidor VoIP en Raspberry Pi

    4. VoIP Hasta hoy en da ha habido una divisin clara entre dos tipos de redes:

    Redes de voz, basadas en conmutacin de circuitos, por lo que se ocupa un circuito y el enrutamiento durante una comunicacin se realiza siempre por el mismo camino. Ej: Red Telefnica convencional

    Redes de datos, basadas en conmutacin de paquetes, la informacin se discretiza en paquetes y cada paquete puede viajar por caminos diferentes. Ej: Internet

    Para poder mandar la informacin por las redes de datos basadas en conmutacin de paquetes es necesario adoptar unos protocolos que permitan transmitir y recuperar la informacin.

    El problema con la tecnologa de conmutacin de circuitos es que requiere una significativa cantidad de ancho de banda para cada llamada y el circuito no es empleado eficientemente ya que emplea un canal durante toda la duracin de la llamada pero la mayora de las conversaciones telefnicas estn hechas de silencio

  • Las redes de datos, por el contrario, slo transmiten informacin cuando es necesario, aprovechando al mximo el ancho de banda y en la cual el retardo, la alteracin del orden de llegada o la prdida de paquetes no son un inconveniente, ya que en el sistema final se tiene una serie de procedimientos de recuperacin de la informacin original; pero para la voz y el video estos factores son altamente influyentes, por lo tanto se requieren redes y protocolos que ofrezcan un alto grado calidad de servicio.

    Voz sobre IP (VoIP) define los sistemas de enrutamiento y los protocolos necesarios para la transmisin de conversaciones de voz a travs de Internet, la cual es una red de conmutacin de paquetes basado en el protocolo TCP/IP para el envo de informacin.

    Actualmente existen, principalmente, dos arquitecturas de VoIP para la transmisin de voz por Internet que se utilizan de forma abundante:

    SIP (Session Initiation Protocol)

    SIP son las siglas en ingls del Protocolo para Inicio de Sesin, siendo un estndar desarrollado por el IETF, identificado como RFC 3261, 2002. SIP es un protocolo de sealizacin para establecer las llamadas y conferencias en redes IP. El inicio de la sesin, cambio o trmino de la misma, son independientes del tipo de medio o aplicacin que se estar usando en la llamada; una sesin puede incluir varios tipos de datos, incluyendo audio, video y muchos otros formatos

    H.323

    H.323 fue el primer estndar internacional de comunicaciones multimedia, que facilitaba la convergencia de voz, video y datos. Fue inicialmente construido para las redes basadas en conmutacin de paquetes, en las cuales encontr su fortaleza al integrarse con las redes IP, siendo un protocolo muy utilizado en VoIP.

    5. Asterisk

    Asterisk es una centralita software (PBX) de cdigo abierto. Como cualquier centralita PBX permite interconectar telfonos y conectar dichos telfonos a la red telefnica convencional (RTB - Red telefnica bsica).

    El creador original de esta centralita es Mark Spencer de la compaia Digium que sigue siendo el principal desarrollador de las versiones estables. Pero al ser de cdigo libre, existen multitud de desarrolladores que han aportado funciones y nuevas aplicaciones. Originalmente fue creada para sistemas Linux pero hoy en da funciona tambin en sistemas OpenBSD, FreeBSD, Mac OS X, Solaris Sun y Windows. Pero Linux sigue siendo la que ms soporte presenta.

    El paquete bsico de Asterisk incluye muchas caractersticas que antes slo estaban disponibles en caros sistemas propietarios como creacin de extensiones, envo de mensajes de voz a e-mail, llamadas en conferencia, mens de voz interactivos y distribucin automtica de llamadas. Adems se pueden crear nuevas funcionalidades mediante el propio lenguaje de Asterisk o mdulos escritos en C o mediante scripts AGI escritos en Perl o en otros lenguajes.

    Para poder utilizar telfonos convencionales en un servidor Linux corriendo Asterisk o para conectar a una lnea de telfono analgica se suele necesitar hardware especial (no vale con un modem ordinario). Digium y otras compaas venden tarjetas para este fin.

    Lo ms llamativo es que Asterisk soporta numerosos protocolos de VoIP como SIP y H.323. Asterisk puede operar con muchos telfonos SIP, actuando como "registrar" o como "gateway" o entre telfonos IP y la red telefnica convencional. Los desarrolladores de Asterisk han diseado un nuevo protocolo llamado IAX para una correcta optimizacin de las conexiones entre centralitas Asterisk.

  • Al soportar una mezcla de la telefona tradicional y los servicios de VoIP, Asterisk permite a los desarrolladores construir nuevos sistemas telefnicos de forma eficiente o migrar de forma gradual los sistemas existentes a las nuevas tecnologas. Algunos sitios usan Asterisk para reemplazar a antiguas centralitas propietarias, otros para proveer funcionalidades adicionales y algunas otras para reducir costes en llamadas a larga distancia utilizando Internet.

    6. Instalacin de Asterisk

    Si bien en la pgina oficial de Asterisk se afirma que puede ser instalado sobre cualquier sistema operativo de distribucin Linux el ms popular para su instalacin suele ser CentOS, que es una distribucin de Linux basada en Red Hat Enterprise Linux y el favorito en aplicaciones que incluyan configuracin de servidores; la gran mayora de documentacin y tutoriales que se pueden encontrar estn enfocados en la instalacin sobre este SO.

    Sin embargo, ya que uno de nuestros objetivos es la posterior instalacin del servidor Asterisk sobre el ordenador de placa reducida (SBC) de bajo costo Raspberry Pi que trabaja con el SO Raspbian, cremos conveniente realizar la instalacin sobre Ubuntu que al igual que Raspbian est basado sobre la distribucin de Linux Debian

    Aunque la mayora de los pasos para la instalacin son similares en los dos sistemas, hay algunas diferencias que comprometeran su normal funcionamiento. A continuacin detallamos los pasos a seguir para la instalacin de Asterisk en Ubuntu:

    1. Antes de comenzar el proceso de instalacin es conveniente realizar la actualizacin del sistema operativo. Una vez realizada la actualizacin se reiniciara el equipo.

    apt-get update && apt-get upgrade -y && reboot

    2. Despus se procede a resolver los requerimientos bsicos del sistema Asterisk, es decir las libreras bsicas para su funcionamiento, esto podemos hacerlos mediante el

    siguiente comando:

    apt-get install build-essential wget libssl-dev libncurses5-

    dev libnewt-dev libxml2-dev linux-headers-$(uname -

    r) libsqlite3-dev uuid-dev

    3. Luego descargamos los archivos de cdigo fuente de Asterisk, y tambin DAHDI y libpri que prevn los drivers para manejar los dispositivos y que dan soporte a las conexiones digitales respectivamente.

    cd /usr/src/

    wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-

    complete/dahdi-linux-complete-current.tar.gz

    wget http://downloads.asterisk.org/pub/telephony/libpri/libpri

    -1.4-current.tar.gz

    wget http://downloads.asterisk.org/pub/telephony/asterisk/aste

    risk-11-current.tar.gz

    4. Extraemos los archivos de los tarballs:

    tar zxvf dahdi-linux-complete*

    tar zxvf libpri*

    tar zxvf asterisk*

  • 5. Instalamos DAHDI:

    cd /usr/src/dahdi-linux-complete*

    make && make install && make config

    6. Instalamos libpri:

    cd /usr/src/libpri*

    make && make install

    7. Instalamos Asterisk:

    cd /usr/src/asterisk*

    ./configure && make menuselect && make && make install && make

    config && make samples

    8. Inicializamos Asterisk y entramos a la interfaz remota CLI:

    /etc/init.d/asterisk start

    asterisk -rvvv

    9. Finalmente verificamos la instalacin mediante la comprobacin de las versiones DAHDI y libpri en el Asterisk CLI:

    *CLI> dahdi show version

    DAHDI Version: 2.6.1 Echo Canceller: HWEC

    *CLI> pri show version

    libpri version: 1.4.13

    7. Configuracin bsica de Asterisk Una vez instalado Asterisk procedemos con los primeros pasos bsicos de configuracin que podemos hacer. Por ejemplo vamos a crear 3 extensiones para realizar llamadas entre tres usuarios, para lo cual procedemos primero a configurar el archivo sip.conf y el archivo extensions.conf

    7.1. sip.conf:

    El archivo sip.conf sirve para configurar todo lo relacionado con el protocolo SIP y aadir nuevos usuarios o conectar con proveedores SIP. El fichero sip.conf comienza con una seccin [general] que contiene la configuracin por defecto de todos los usuarios y "peers" (proveedores). Se puede sobrescribir los valores por defecto en las configuraciones de cada usuario o peer:

    [general]

    context=default

    port=5060

    bindaddr=0.0.0.0

    srvlookup=yes

    En general los servidores SIP escuchan en el puerto 5060 UDP. Por tanto configuramos port=5060 . En algunos casos, por ejemplo si utilizamos SER (Sip Express Router) con Asterisk debemos cambiar este puerto.

    DNS es una forma de configurar una direccin lgica para que pueda ser resuelta, esto permite que las llamadas sean enviadas a diferentes lugares sin necesidad de cambiar la direccin lgica; usando el DNS SRV se ganan las ventajas del DNS mientras que deshabilitndolo no es posible

  • enrutar llamadas en base a nombre de dominios. Por lo tanto conviene tenerlo activado colocando srvlookup=yes. Cada extensin est definida por un user o usuario, un peer o proveedor o un friend o amigo y viene definida con un nombre entre corchetes:

    [100]

    type=friend

    secret=1234

    qualify=yes

    nat=no

    host=dynamic

    canreinvite=no

    context=llamada

    [101]

    type=friend

    secret=1234

    qualify=yes

    nat=no

    host=dynamic

    canreinvite=no

    context=llamada

    [102]

    type=friend

    secret=1234

    qualify=yes

    nat=no

    host=dynamic

    canreinvite=no

    context=llamada

    El tipo (type) "user" se usa para autenticar llamadas entrantes, "peer" para llamadas salientes y "friend" para ambas. En nuestro caso hemos definido una extensin 100 como "friend". Puede realizar y recibir llamadas.

    Secret es la contrasea usada para la autenticacin. En este caso ser "1234".

    Se puede monitorizar la latencia entre el servidor Asterisk y el telefono con qualify=yes para determinar cuando el dispositivo puede ser alcanzado En este caso Asterisk considera por defecto que un dispositivo est presente si su latencia es menor de 2000 ms (2 segundos). Se puede cambiar este valor poniendo el nmero de milisegundos en vez de yes.

    Si una extensin est detrs de un dispositivo que realiza NAT (Network Address Translation) como un router o firewall se puede configurar nat=yes para forzar a Asterisk a ignorar el campo informacin de contacto y usar la direccin desde la que vienen los paquetes.

    Si ponemos host=dynamic quiere decir que el telefono se podr conectar desde cualquier direccin IP. Podemos limitar a que dicho usuario solo pueda acceder con una IP o con un nombre de dominio. Si ponemos host=static no hara falta que el usuario se registrar con la contrasea proporcionada en "secret",

    Tambin se ha puesto canreinvite=no. En SIP los invites se utilizan para establecer llamadas y redirigir el audio o video. Cualquier invite despus del invite inicial en la misma conversacin se considera un reinvite. Cuando dos usuarios han establecido la comunicacin con canreinvite= yes (por defecto) los paquetes RTP de audio podran ser enviados extremo a extremo sin pasar por el servidor Asterisk. Esto, normalmente, no suele ser conveniente en casos en los que haya NAT en alguno de los clientes. (NAT=yes). Usando canreinvite=no se fuerza a Asterisk a estar en medio

  • no permitiendo que los puntos finales intercambien mensajes RTP directamente.

    Por ltimo context=llamada indica el contexto donde est las instrucciones para dicha extensin. Esto est relacionado con el contexto del archivo extensions.conf que marca el plan de numeracin para ese contexto. Por tanto el contexto llamada debe existir en el fichero extensions.conf o de lo contrario deberamos crearlo.

    7.2. extensions.conf El archivo extensions.conf es el ms importante de Asterisk y tiene como misin principal definir el dialplan o plan de numeracin que seguir la centralita para cada contexto y por tanto para cada usuario.

    El fichero extensions.conf se compone de secciones o contextos entre corchetes. Hay dos contextos especiales que estn siempre presentes que son [general] y [globals]:

    Contexto [general]:

    El contexto [general] configura unas pocas opciones generales como son:

    static: Indica si se ha de hacer caso a un comando "save dialplan" desde la consola. Por defecto es "yes". Funciona en conjunto con "writeprotect"

    writeprotect: Si writeprotect=no y static=yes se permite ejecutar un comando "save dialplan" desde la consola. El valor por defecto es " no".

    autofallthrough: Si est activado y una extensin se queda sin cosas que hacer termina la llamada con BUSY, CONGESTION o HANGUP Si no est activada se queda esperando otra extensin.

    clearglobalvars: Si est activado se liberan las variables globales cuando se recargan las extensiones o se reinicia Asterisk.

    priorityjumping: Si tiene valor 'yes', la aplicacin soporta 'jumping' o salto a diferentes prioridades en desuso.

    En general estas opciones no son muy importantes y se pueden dejar tal y como aparecen por defecto.

    Contexto [globals]:

    En este contexto se definen las variables globales que se van a poder utilizar en el resto de los contextos. Por ejemplo

    CONSOLE=Console/dsp; indica que cuando hagamos referencia a la variable CONSOLE estamos llamando a /Console/dsp

    Las variables suelen ponerse siempre en maysculas para diferenciarlas posteriormente.

    Contexto especifico []:

    Esto es lo ms importante de este fichero. Aqu se indica cmo crear un contexto especfico y asignar un plan de numeracin. Todas las lneas de un determinado contexto tienen el mismo formato:

    exten => extension , prioridad, Comando(parametros)

    La extensin hace referencia al nmero marcado

    La prioridad al orden en que se ejecutan las instrucciones. Primero se ejecuta la de

  • prioridad 1, luego la 2 y sucesivamente

    El Comando hace referencia a la accin a ejecutar

    Para nuestro caso especfico deberamos crear un contexto en el cual las tres extensiones puedan realizar y recibir llamadas, para esto nuestra configuracin sera:

    [Llamada]

    exten=> 100,1,Dial(SIP/100)

    exten=> 101,1,Dial(SIP/101)

    exten=> 102,1,Dial(SIP/102)

    Donde [Llamada] es el nombre del contexto que definimos en el archivo sip.conf; 1 es la

    prioridad de la instruccin, y Dial es el comando con el que realizamos la llamada al usuario definido en el archivo sip.conf

    8. Configuracin de los Softphones Un softphone es un software que es utilizado para realizar llamadas a otros softphones o a otros telfonos convencionales usando VoIP.

    Existe gran variedad de software capaz de realizar llamada sobre VoIP ya sea utilizando SIP, H.323 o ambas; y los hay para todos los sistemas operativos incluyendo iOS y Android. En nuestro caso utilizamos el software ZoiPer que est disponible para cualquier sistema operativo y es muy sencillo de configurar. A continuacin se muestra la configuracin hecha para un softphone instalado en Windows.

    1. Descargamos desde la pagina oficial e instalamos como cualquier programa. 2. Despus de la instalacin nos pedir un proceso de configuracin bsica de los

    dispositivos de nuestro computador, como parlantes, micrfono y cmara:

    3. Una vez realizado, nos pedir que escojamos el tipo de cuenta que queremos configurar, para lo cual escogemos la tipo SIP:

  • 4. Despus debemos insertar nuestro nombre de usuario, la contrasea y la direccin ip del servidor donde se encuentra instalado la centralita Asterisk. El nombre de usuario y la contrasea deben ser la misma que una de las cuentas que configuramos en el archivo sip.conf.

    5. Despus de esto damos a siguiente y nos pedir que esperemos hasta que el servidor haya auto detectado nuestra cuenta, luego nos devolver un mensaje de confirmacin y tendremos nuestro softphone listo para usar.