lunes, 6 de junio de 2011

Guia Instalación Asterisk paso a paso

Hola a tod@s!

Creo que no hace falta hacer ninguna introducción de lo que es Asterisk, por si alguien anda un poco despistado aquí tenéis información.

http://es.wikipedia.org/wiki/Asterisk
http://www.voip-info.org/wiki/view/Asterisk

Empezamos con la primera guía de Asterisk en Español, con la instalación paso a paso bajo un sistema CentOS 5.
Poco a poco iré subiendo otras guías con nuevas funcionalidades de Asterisk.

1.- Actualización del sistema.
Para empezar vamos a actualizar nuestro S.O. en nuestro caso lo hacemos con yum de CentOS.
Es importante reiniciar al acabar con la actualización, así se aplican los cambios al actualizar el kernel.

[root@ESZ01AST01]# yum update
[rootESZ01AST01]# yum install kernel-devel kernel-headers
[rootESZ01AST01]# yum update kernel
[rootESZ01AST01]# reboot

2.- Instalación de dependencias.
Es muy importante tener instaladas todas las dependencias en nuestro S.O., si no las tenemos la compilación de Asterisk y sus módulos fallará.

Estas son las dependencias que hay que instalar poder realizar la instalación de Asterisk.

yum install ncurses ncurses-devel openssl zlib zlib-devel curl gcc gcc-c++ libxml2 libxml2-devel libtermcap libtermcap-devel gtk2 gtk2-devel

3.- Instalación de Asterisk.
En primer lugar instalaremos los paquetes Libpri, Dahdi y por último Asterisk.

3.1.- Descarga de los paquetes.
[root@ESZ01AST01 ~]# cd /usr/src/
[root@ESZ01AST01 src]# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8.4.2.tar.gz
[root@ESZ01AST01 src]# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.4.1.2+2.4.1.tar.gz
[root@ESZ01AST01 src]# wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.11.5.tar.gz

[root@ESZ01AST01 src]# tar zxvf libpri-1.4.11.5.tar.gz
[root@ESZ01AST01 src]# tar zxvf dahdi-linux-complete-2.4.1.2+2.4.1.tar.gz
[root@ESZ01AST01 src]# tar zxvf asterisk-1.8.4.2.tar.gz

3.2.- Instalación Libpri.

[root@ESZ01AST01 src]# cd libpri-1.4.11.5
[root@ESZ01AST01 libpri-1.4.11.5]# pwd
/usr/src/libpri-1.4.11.5
[root@ESZ01AST01 libpri-1.4.11.5]# make install

3.3.- Instalación Dahdi.

[root@ESZ01AST01 libpri-1.4.11.5]# cd ../dahdi-linux-complete-2.4.1.2+2.4.1
[root@ESZ01AST01 dahdi-linux-complete-2.4.1.2+2.4.1]# make all

3.4.- Instalación paquete Asterisk.

[root@ESZ01AST01 dahdi-linux-complete-2.4.1.2+2.4.1]# cd ../asterisk-1.8.4.2
[root@ESZ01AST01 asterisk-1.8.4.2]# ./configure
[root@ESZ01AST01 asterisk-1.8.4.2]# make menuselect

Aquí entramos en un menú donde elegimos la configuración de instalación de Asterisk. Añadimos los paquetes extra de sonidos GSM en "Extra Sound Packages", y el paquete CORE-SOUNDS-ES-GSM en "Core Sound Packages".
Para finalizar con la selección y guardar seleccionamos "Save and Exit".

[root@ESZ01AST01 asterisk-1.8.4.2]# make
[root@ESZ01AST01 asterisk-1.8.4.2]# make install
[root@ESZ01AST01 asterisk-1.8.4.2]# make config
[root@ESZ01AST01 asterisk-1.8.4.2]# make samples

4.- Arrancando Asterisk

Para arrancar Asterisk ejecutaremos el siguiente comando:
[root@ESZ01AST01 asterisk-1.8.4.2]# service asterisk start

Entramos en la consola, el número de veces que escribimos "v" marca el nivel de verbose.
[root@ESZ01AST01 asterisk-1.8.4.2]# asterisk -rvvvv

5.- Configuración de Asterisk

5.1.- Configuración sip.conf

[root@ESZ01AST01 asterisk-1.8.4.2]# cd /etc/asterisk/

Hacemos backup del archivo de ejemplo sip.conf
[root@ESZ01AST01 asterisk]# mv sip.conf sip.conf.old

Editamos un nuevo archivo sip.conf
[root@ESZ01AST01 asterisk]# vim sip.conf

[general]
context = phones
bindport = 5060
bindaddr = 0.0.0.0
srvlookup = yes
allowexternaldomains = yes
allowguest = yes
rtcachefriends = yes
disallow = all
allow = ulaw
allow = alaw
allow = gsm
allow = g723
language = es

[user1]
type=friend
host=dynamic
secret=1234
context=phones

[user2]
type=friend
host=dynamic
secret=1234
context=phones

Una vez hechas las modificaciones cargamos la configuración en Asterisk.

[root@ESZ01AST01 asterisk]# asterisk -rvvvv
ESZ01AST01*CLI sip reload
Reloading SIP
== Parsing '/etc/asterisk/sip.conf': == Found
== Parsing '/etc/asterisk/users.conf': == Found
== Using SIP CoS mark 4
== Parsing '/etc/asterisk/sip_notify.conf': == Found

Si queremos ver si el usuario ya está cargado en la configuración el siguiente comando muestra todos los usuarios.
ESZ01AST01*CLI sip show peers
Name/username Host Dyn Forcerport ACL Port Status
user1/user1 (Unspecified) D 0 Unmonitored
user2 (Unspecified) D 0 Unmonitored
2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 0 online, 2 offline]


5.2.- Configuración extensions.conf.
Este archivo de configuración es el que contiene la configuración de las extensiones.
Hacemos backup del archivo extensions.conf:
root@ESZ01AST01 asterisk]# mv extensions.conf extensions.conf.old

Editamos un nuevo archivo extensions.conf:
[root@ESZ01AST01 asterisk]# vim extensions.conf

[general]
static = yes
writeprotect = no
autofallthrough = yes
clearglobalvars = no
priorityjumping = no

[globals]

[phones]

exten => 1000,1,Dial(SIP/user1,20)
exten => 1000,2,Hangup()

exten => 1001,1,Dial(SIP/user2,20)
exten => 1001,2,Hangup()

A continuación cargamos la configuración en Asterisk:

[root@ESZ01AST01 asterisk]# asterisk -rvvvv
ESZ01AST01*CLI dialplan reload

6.- Registrando en Asterisk.

Una vez ya tenemos usuario y hemos creado la extensión ya podemos registrarnos en Asterisk y empezar a hacer llamadas.
Podemos utilizar como sip phone Zoiper (http://www.zoiper.com) por ejemplo, una vez hemos configurado la cuenta con la contraseña que pusimos en el campo secret del archivo sip.conf, veremos en la consola de Asterisk que el login se hace correctamente:

ESZ01AST01*CLI>
[Jun 6 22:59:27] NOTICE[1911]: chan_sip.c:23618 handle_request_subscribe: Received SIP subscribe for peer without mailbox: user1
-- Registered SIP 'user1' at 192.168.1.24:5060
> Saved useragent "Zoiper rev.11619" for peer user1
[Jun 6 22:59:27] NOTICE[1911]: chan_sip.c:23618 handle_request_subscribe: Received SIP subscribe for peer without mailbox: user1

Ahora si ejecutamos "sip show peers", veremos que el usuario ya está registrado.
ESZ01AST01*CLI> sip show peers
Name/username Host Dyn Forcerport ACL Port Status
user1/user1 192.168.1.24 D 5060 Unmonitored
user2 (Unspecified) D 0 Unmonitored
2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 1 online, 1 offline]

Para ver información en detalle de algún usuario en concreto:
ESZ01AST01*CLI sip show peer user1


* Name : user1
Secret :
MD5Secret :
Remote Secret:
Context : phones
Subscr.Cont. : default
Language : es
AMA flags : Unknown
Transfer mode: open
CallingPres : Presentation Allowed, Not Screened
Callgroup :
Pickupgroup :
MOH Suggest :
Mailbox :
VM Extension : asterisk
LastMsgsSent : 32767/65535
Call limit : 0
Max forwards : 0
Dynamic : Yes
Callerid : "" <>
MaxCallBR : 384 kbps
Expire : 2967
Insecure : no
Force rport : No
ACL : No
DirectMedACL : No
T.38 support : No
T.38 EC mode : Unknown
T.38 MaxDtgrm: -1
DirectMedia : Yes
PromiscRedir : No
User=Phone : No
Video Support: No
Text Support : No
Ign SDP ver : No
Trust RPID : No
Send RPID : No
Subscriptions: Yes
Overlap dial : Yes
DTMFmode : rfc2833
Timer T1 : 500
Timer B : 32000
ToHost :
Addr->IP : 192.168.1.24:5060
Defaddr->IP : (null)
Prim.Transp. : UDP
Allowed.Trsp : UDP
Def. Username: user1
SIP Options : norefersub replaces replace
Codecs : 0xf (g723|gsm|ulaw|alaw)
Codec Order : (ulaw:20,alaw:20,gsm:20,g723:30)
Auto-Framing : No
100 on REG : No
Status : Unmonitored
Useragent : Zoiper rev.11619
Reg. Contact : sip:user1@10.1.21.4:5060;rinstance=96fa0be45d26ae72;transport=UDP
Qualify Freq : 60000 ms
Sess-Timers : Accept
Sess-Refresh : uas
Sess-Expires : 1800 secs
Min-Sess : 90 secs
RTP Engine : asterisk
Parkinglot :
Use Reason : No
Encryption : No

Al hacer una llamada vemos en la consola de Asterisk como se ejecuta la llamada, pero nos muestra un error, normal ya que estamos llamando a una extensión que no está registrada.

ESZ01AST01*CLI
== Using SIP RTP CoS mark 5
-- Executing [1001@phones:1] Dial("SIP/user1-00000000", "SIP/user2,20") in new stack
[Jun 6 23:11:21] WARNING[2083]: app_dial.c:2041 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Unknown)
== Everyone is busy/congested at this time (1:0/0/1)
-- Executing [1001@phones:2] Hangup("SIP/user1-00000000", "") in new stack
== Spawn extension (phones, 1001, 2) exited non-zero on 'SIP/user1-00000000'


En próximas publicaciones veremos como implementar diversas funcionalidades que harán de Asterisk una centralita de lo mas completa.

Hasta la próxima!

No hay comentarios:

Publicar un comentario