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 e
Xchange o
Private
Business e
Xchange). 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.
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:
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:
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.
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:
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