martes, 23 de agosto de 2011

Asterisk

Introducción.

Fuente : http://www.alcancelibre.org/staticpages/index.php/como-ekiga-asterisk

Acerca de Ekiga.

Ekiga  es una aplicación para VoIP (Voice over IP o Voz sobre IP) y vídeo-conferencia, distribuido bajo los términos de la licencia GNU/GPL. Incluye soporte para los protocolos SIP (Session Initiation Protocol o Protocolo de Inicialización de Sesiones) y H.323.
El proyecto fue iniciado por Damien Sandras con el nombre GnomeMeeting, como parte de los requisitos para graduarse de la Universidad Católica de Louvain, en la ciudad de Bruselas, Bélgica. El nombre del proyecto fue cambiado por Ekiga  el 18 de enero de 2006, con el fin de evitar se le asociara como equivalente de Microsoft NetMeeting. Actualmente es mantenido por una comunidad de desarrolladores, con Sandras como líder.
URL: http://www.ekiga.org/

Acerca de Asterisk.

Asterisk  es una implementación de código abierto para central telefónica (PBX, Private Branch eXchange o Private Business eXchange). Cuenta con un doble licenciamiento, GNU/GPL y licencia propietaria. Esta última es con el objeto de poder incluir soporte para el protocolo G.729, el cual está sujeto a las limitaciones de una patente, aunque el codificador correspondiente funciona indistintamente con una u otra versión.
Asterisk está diseñado para servir como PBX. Como cualquier PBX, se puede conectar un número determinado de teléfonos para hacer llamadas entre sí, e incluso conectar a un proveedor de VoIP o bien a una , tanto básicos como primarios.
La versión libre de Asterisk incluye todas las funcionalidades de las más costosas alternativas de código cerrado, como son correo de voz, llamada en conferencia, respuesta interactiva de voz (a través de menús del teléfono) y distribución automática de llamadas.
URL: http://www.asterisk.org/

Acerca de Linphone.

Linphone es un cliente SIP para VoIP creado por Simon Morlat. Está hecho en GTK2, es pequeño, ligero y muy estable e incluye además linphonec, una poderosa versión para terminales en modo texto. La versión de AL Desktop incluye soporte para voz y mensajes instantáneos, pero el código incluye también soporte para vídeo.
Características:

•  Cumple con los estándares SIP (Session Initiation Protocol o Protocolo de Inicialización de Sesiones).
•  Puede registrarse en servidores Asterisk.
•  Soporte para subscripción de VoIP hacia RTC (Red Telefónica Conmutada, también conocida como PSTN o Public Switched Telephone network). Es decir, telefonía red telefónica básica.
•  Es equipamiento lógico libre.
•  Es muy estable en GNU/Linux, y probablemente también en los diversos sabores de Unix.
•  Hay versión estable para Windows, pero con algunas funciones aún sin portar.
•  Funciona bien con las siguientes implementaciones, probadas por el autor de Linphone: eStara softphone, Teléfonos Pingtel, Hotsip, Vocal (Vivida), Siproxd y Partysip
URL: http://www.linphone.org/

Acerca del protocolo SIP.

SIP (Session Initiation Protocol o Protocolo de Inicialización de Sesiones) es un protocolo propuesto como estándar por la IETF (Internet Engineering Task Force o Fuerza de Trabajo en Ingeniería de Internet), descrito en el RFC 3261, para la iniciación, modificación y finalización de sesiones interactivas de usuario, en las cuales intervienen elementos de medios electrónicos, como pueden ser vídeo, voz y mensajería instantánea. Es uno de los varios protocolos de señalización para la tecnología de Voz sobre IP (VoIP o Voice over IP), y forma parte de la arquitectura IMS (IP Multimedia Subsystem o Subsistema multimedios por IP).
URL: http://tools.ietf.org/html/rfc3261

Equipamiento lógico necesario.

Considerando que se va a instalar el cliente (Ekiga) en un sistema distinto al del servidor que sustentará a Asterisk, las instalaciones de equipamiento lógico correspondientes proceden de la siguiente forma.

Instalación de servidor Asterisk.

Para poder llevar al cabo los procedimientos descritos en este y otros documentos relacionados, usted necesitará tener instalado al menos lo siguiente, lo cual no está incluido en la instalación estándar de CentOS 4, Red Hat™ Enterprise Linux 4 o White Box Enterprise Linux 4 (disponible a través de los depósitos de equipamiento lógico de Alcance libre).

•  asterisk-1.4.1
•  asterisk-addons-1.4.0
•  asterisk-sounds-es
•  gsm-1.0.12
•  libidn-0.6.9
•  libpri-1.4.0
•  spandsp-0.0.3-7_pre28
•  speex-1.2
•  zaptel-1.4.0

Instalación a través de yum.

Si dispone de un servidor con CentOS 4, Red Hat™ Enterprise Linux 4 o White Box Enterprise Linux 4, puede utilizar el el depósito yum de Alcance Libre para servidores en producción:

[alcance-libre]
name=Alcance Libre para Enterprise Linux 4
baseurl=http://www.alcancelibre.org/al/el/4/
gpgkey=http://www.alcancelibre.org/al/AL-RPM-KEY
La instalación solo requiere utilizar lo siguiente:

yum -y install asterisk asterisk-addons asterisk-sounds-es zaptel kernel-module-zaptel
Al terminar, solo bastará iniciar el servicio asterisk, puesto que de forma predeterminada arrancará solo la siguiente vez que reinicie el sistema.

service asterisk start

Instalación de cliente Ekiga.

Instalación a través de yum.

Si dispone de un escritorio con AL Desktop en CentOS 4 Red Hat™ Enterprise Linux 4 o White Box Enterprise Linux 4, puede utilizar el depósito yum de AL Desktop:

[AL-Desktop]
name=Enterprise Linux $releasever - $basearch - AL Desktop
mirrorlist=http://www.alcancelibre.org/al/el4/al-desktop
gpgkey=http://www.alcancelibre.org/al/AL-RPM-KEY
La instalación requiere utilizar lo siguiente:

yum -y install ekiga

Instalación de clientes Linphone y Linphonec.

Instalación a través de yum.

Si dispone de un escritorio con AL Desktop en CentOS 4 Red Hat™ Enterprise Linux 4 o White Box Enterprise Linux 4, puede utilizar el depósito yum de AL Desktop:

[AL-Desktop]
name=Enterprise Linux $releasever - $basearch - AL Desktop
mirrorlist=http://www.alcancelibre.org/al/el4/al-desktop
gpgkey=http://www.alcancelibre.org/al/AL-RPM-KEY
La instalación requiere utilizar lo siguiente:

yum -y install linphone

Procedimientos.

Configuración de servidor Asterisk.

Fichero /etc/asterisk/manager.conf.

Si se considera necesario, se puede configurar el acceso remoto hacia el gestor de Asterisk. Se requiere definir un usuario, las correspondiente clave de acceso y los privilegios necesarios, a fin de poder permitir utilizar diversas herramientas para la administración y/o supervisión remota(s). En el siguiente ejemplo para el contenido del fichero /etc/asterisk/manager.conf, se activa acceso remoto a través del puerto 5038, se define admin como usuario, secreto como clave de acceso y se otorgan todos privilegios.

[general]
displaysystemname = yes
enabled = yes
;webenabled = yes
port = 5038
;httptimeout = 60
; De modo predefinido, el gestor de Asterisk escuchará peticiones 
; por cualquier interfaz activa en el sistema, pero puede 
; definirse, por ejmeplo, que solo se permitan conexiones desde
; la dirección IP de red privada (RFC 1918).
bindaddr = 0.0.0.0
;displayconnects = yes
;timestampevents = yes

[admin]
secret = secreto
deny=0.0.0.0/0.0.0.0
permit=192.168.12.0/255.255.255.128
writetimeout = 100
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config

Fichero /etc/asterisk/sip.conf.

El siguiente ejemplo corresponde a la configuración de tres cuentas SIP (101, 102 y 103). El contenido se agrega, o bien modifica opciones, al fichero /etc/asterisk/sip.conf.

[general]
context=default
srvlookup=yes
videosupport=yes ; Asterisk puede también gestionar las conferencias de vídeo
disallow=all   ; Desactivar todos los codificadores
allow=alaw     ; Permitir codificadores en orden de preferencia 
allow=ilbc
allow=gsm
allow=h261
; El paquete asterisk-sounds-es de alcance libre instala los ficheros de audio
; al español. Por tanto, se puede definir éste como idioma pata los mensajes.
language=es 
; Realizar registro en ekiga.net con un usuario y clave de acceso válidos y 
; encaminar las llamadas hacia la extensión 101
register => usuario:clave-de-acceso@ekiga.net/101

; Hacer acceder a Asterisk hacia una cuenta en ekiga.net para permitir
; realizar llamadas
[ekiga]
type=friend
username=usuario
secret=clave-de-acceso
host=ekiga.net
canreinvite=no
qualify=300
; Si se utiliza asterisk 1.4.x:
insecure=port,invite
; Si se utiliza asterisk 1.2.x:
; insecure=very

; Extensión 101
[101]
type=friend
secret=secreto1
qualify=yes    ; El par correspondiente está no más allá de 2000 mS.
nat=no         ; No hay NAT.
host=dynamic   ; Dispositivo se registrará con servidor.
canreinvite=no ; Asterisk tratará de redireccionar de forma predeterminada.
context=home   ; Contexto predefinido (ver → extensions.conf)
;port=5061     ; Descomentar si Ekiga o Linphone y Asterisk están en el mismo sistema.
               
; Extensión 102
[102]
type=friend
secret=secreto2
qualify=yes
nat=no 
host=dynamic
canreinvite=no
context=home
;port=5061 

; Extensión 103            
[103]
type=friend
secret=secreto3
qualify=yes
nat=no
host=dynamic
canreinvite=no
context=home
;port=5061

Fichero /etc/asterisk/voicemail.conf.

A fin de habilitar el acceso al correo de voz para cada extensión, y al mismo tiempo especificar una cuenta de correo electrónico hacia la cual se enviará un mensaje de correo electrónico con el mensaje de voz como adjunto, solo es necesario verificar que las siguientes opciones estén habilitadas. En el ejemplo, se configuran las cuentas para las extensiones 101, 102 y 103.

[general]
; Escoger el formato del correo de voz. Recomendado usar WAV, por razones de 
; compatibilidad.
format=wav
;
; Si se dispone de espacio suficiente en la cuenta de correo, la siguiente
; opción especifica que se adjunte el mensaje de voz a un mensaje de correo
; electrónico, de modo que se pueda escuchar al dar clic desde el cliente.
;
attach=yes
;
[default]
; Cada buzón de voz se lista en el siguiente formato:
; buzón => clave de acceso,Nombre de persona,correo electrónico,correo 
; electrónico de servicio de localizador. Ejemplos:
101 => secreto1,Nombre,alguien@algo.algo,numero@mi-celular.algo
102 => secreto2,Nombre,otro@algo.algo
103 => secreto3,Nombre,alguien-mas@algo.algo

Fichero /etc/asterisk/extensions.conf.

El siguiente ejemplo corresponde a la configuración de tres extensiones (101, 102 y 103). El contenido se agrega al fichero /etc/asterisk/extensions.conf.

; Macro que habilita el uso de correo de voz, de modo que no hará falta
; repetir complejas configuraciones en cada cuenta.
[macro-correovoz]
exten => s,1,Dial($,20)
exten => s,2,Goto(s-$DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u$)
exten => s-NOANSWER,2,Hangup()
exten => s-BUSY,1,Voicemail(b$)
exten => s-BUSY,2,Hangup()
exten => _s-.,1,Goto(s-NOANSWER,1)

[home]
; Extensión 101
exten => 101,1,Macro(correovoz,SIP/101)

; Extensión 102
exten => 102,1,Macro(correovoz,SIP/102)

; Extensión 103
exten => 103,1,Macro(correovoz,SIP/103)

; Lo siguiente permite acceder al correo de voz desde Ekiga, simplemente
; marcando el número 8
exten => 8,1,VoiceMailMain(s$)
exten => 8,2,Hangup

; Prueba de Eco
exten => 600,1,Answer()
exten => 600,2,Playback(demo-echotest)
exten => 600,3,Echo()
exten => 600,4,Playback(demo-echodone)
exten => 600,5,Hangup()

; Lo siguiente permite realizar llamadas hacia cuentas de Ekiga.net
; solo antecediendo un número 9 antes de la cuenta. Es decir:
; Si antes se tenía que marcar sip:alguien@ekika.net, ahora se hará
; como sip:9alguien@ekiga.net
exten => _9.,1,Dial(SIP/ekiga/$,20,r))

Al terminar, solo bastará reiniciar el servicio asterisk para que surtan efecto los cambios.

service asterisk restart
También puede ingresar a la interfaz de línea de mandatos (CLI o Command Line Interface), desde el servidor que sustenta a Asterisk, utilizando el mandato asterisk -r, y ejecutando desde ésta el mandato reload. Al terminar, ingrese el mandato exit para salir de la interfaz de línea de mandatos.

Configuración de cliente Ekiga.

Ekiga, además de ajustar los niveles de audio del sistema para permitir el funcionamiento del micrófono (captura), requiere y desactivar cualquier método de NAT que esté especificado (por lo general, STUN).
n la versión 2.0.7, si activa la casilla de cancelación de eco, Ekiga no enviará el DTMF y no será posible autenticar en el buzón de voz. Deje la casilla sin activar.


Al terminar y aplicar los cambios, se debe acceder al menú de la aplicación Editar → Cuentas y añadir una nueva cuenta tipo SIP, especificando un nombre para identificar la cuenta, la IP del servidor Asterisk, el usuario a utilizar y la correspondiente clave de acceso.


Al terminar, solo se necesitará hacer clic en la casilla para activar la cuenta y registrarse en el servidor.



Configuración de cliente Linphone y Linphonec.

Solo es necesario añadir la cuenta desde la pestaña SIP de la ventana de preferencias. Un pequeño error en el despliegue de texto en la versión 1.6.0 hace que no se muestren las cuentas que se dan de alta, pero de hecho deberán estar ahí.


Pestaña SIP de la ventana de preferencias.
Se hace clic en el botón Add proxy/registar, acción que abrirá una ventana para ingresar los datos necesarios.


Ventana de registro de cuenta.
Si se prefiere, a fin de verificar datos y hacer otros ajustes, puede editarse el fichero ~/linphonerc y modificar, con cualquier editor de texto, la configuración de las cuentas, ejemplificada a continuación:

[sip]
sip_port=5060
guess_hostname=0
contact=sip:101@192.168.1.253
inc_timeout=15
use_info=0
use_ipv6=0
default_proxy=0

[proxy_0]
reg_proxy=SIP:192.168.1.253
reg_expires=900
reg_sendregister=1
publish=1

[auth_info_0]
username=101
userid=101
passwd=secreto1
realm="asterisk"
La configuración hecha es utilizada tanto por el cliente gráfico, linphone, como el cliente para terminal de texto, linphonec.
Particularmente es muy interesante las aplicaciones prácticas linphonec, el cual se puede utilizar en sistemas sin entorno gráfico. Puede dejarse iniciando automáticamente en algún guión con la opción -a para contestar llamadas automáticamente y utilizarlo como la imaginación lo determine. Es ideal para ser utilizado en terminal telefónica en clientes ligeros o equipos obsoletos.

Comprobaciones.

Para si uno marca 600, deberá contestar el servidor Asterisk con un mensaje de prueba de eco. Si se conectan los clientes al servidor Asterisk, podrán comunicarse entre si marcando solo el número de extensión, o bien como sip:extension@servidor. Ejemplo: sip:103@192.168.10.1. Marcando el número 8 desde Ekiga, se podrá acceder al correo de voz.
Si necesita depurar la configuración, puede hacerlo ingresando a la interfaz de línea de mandatos utilizando el mandato asterisk -r, añadiendo de una a cinco letras v para indicar el nivel de depuración. Ejemplo:

asterisk -vvvr
Lo anterior mostrará mensajes de depuración de nivel 3. Al terminar, ingrese el mandato exit para salir de la interfaz de línea de mandatos.

Modificaciones necesarias en el muro cortafuegos en el servidor Asterisk.

Si se utiliza un cortafuegos con políticas estrictas, como por ejemplo Shorewall, es necesario abrir el puerto 5060 por UDP para comunicaciones a través de protocolo SIP, y opcionalmente los puertos 4569,5036, 10000:20000 y 2727 por UDP, de forma correspondiente para los protocolos IAX2, IAX, RTP y MGCP, en el caso dado que se quiera acceder hacia éstos con clientes que incluyan dicho soporte. Si se va a utilizar herramientas para administración y/o supervisión remota(s), el puerto del gestor de Asterisk corresponde al 5038 por TCP.
Las reglas para el fichero /etc/shorewall/rules de Shorewall, como cortafuegos de una sola zona (net), correspondería a algo similar a lo siguiente:

#ACTION	SOURCE	DEST	PROTO 	DEST		SOURCE
#				PORT		PORT(S)1
ACCEPT	net	fw	udp	5060
ACCEPT	net	fw	tcp	5038
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Las reglas para el fichero /etc/shorewall/rules de Shorewall, como cortafuegos de dos zonas (net y loc), considerando que se desea permitir acceso tanto desde redes públicas como privadas, pero el acceso al gestor de Asterisk solo desde la red local, correspondería a algo similar a lo siguiente:
#ACTION	SOURCE	DEST	PROTO 	DEST		SOURCE
#				PORT		PORT(S)1
ACCEPT	net	fw	udp	5060
ACCEPT	loc	fw	udp	5060
ACCEPT	loc	fw	tcp	5038
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

No hay comentarios:

Publicar un comentario