jueves, 7 de enero de 2016

Instalar y configurar Asterisk en CentOS 6.6

Asterisk_Logo.svg






  • Asterisk es un software libre creado por Mark Spencer fundador de la empresa Digium la principal desarrolladora, que realiza funciones de PBX. Una PBX resumiendo mucho es una central telefónica.
  • Asterisk permite gestionar llamadas, buzones de correo, crear una IVR(Interactive Voice Response) entre muchas otras cosas.
  • Reconoce un montón de protocolos de VoIP (Voice over IP) entre los que se encuentran SIP e IAX que son de los más importantes.
Ahora que ya sabemos sobre Asterisk vamos a instalarlo y configurarlo para un servidor CentOS 6.6
La parte de la instalación es diferente según la distribución que usemos, pero la configuración es la misma tanto para Ubuntu, CentOS, Debian, etc.


Instalación

Lo primero que vamos a hacer es agregar el repositorio dentro de /etc/yum.repos.d/ :
  • El primer repositorio que vamos a introducir será: centos-asterisk.repo
[asterisk-tested]

name=CentOS-$releasever - Asterisk - Tested

baseurl=http://packages.asterisk.org/centos/$releasever/tested/$basearch/

enabled=0

gpgcheck=0

#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium


[asterisk-current]

name=CentOS-$releasever - Asterisk - Current

baseurl=http://packages.asterisk.org/centos/$releasever/current/$basearch/

enabled=1

gpgcheck=0

#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium

  • El segundo repositorio será : centos-digium.repo
[digium-tested]

name=CentOS-$releasever - Digium - Tested

baseurl=http://packages.digium.com/centos/$releasever/tested/$basearch/

enabled=0

gpgcheck=0

#gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium

[digium-current]

name=CentOS-$releasever - Digium - Current

baseurl=http://packages.digium.com/centos/$releasever/current/$basearch/

enabled=1

gpgcheck=0

#gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium


Una vez terminado esto hacemos un


 yum update


Ahora instalaremos el paquete asterisknow-version.noarch

yum install asterisknow-version

Instalando este paquete añadimos el resto de repositorios de Asterisk, con todas sus versiones disponibles. Ahora veremos que dentro de la carpeta /etc/yum.repos.d se han creado nuevos ficheros. Nosotros vamos ha instalar la versión 13 de Asterisk.

Para elegir una versión en concreto (por defecto utiliza el repositorio de la versión 11) utilizamos el parámetro –enablerepo (habilita el repositorio que le indicamos) en la instalación con yum, es decir, podemos instalar cualquier versión indicándole el repositorio adecuado

yum install asterisk asterisk-configs asterisk-sounds-core-es-gsm --enablerepo=asterisk-13

Como vamos a instalar la última versión de Asterisk, habilitaremos que el repositorio por defecto para actualizar Asterisk sea centos-asterisk-13.repo.

Para ello modificamos el parámetro enabled del repositorio centos-asterisk-11.repo a 0, para que éste esté deshabilitado. Y de la misma forma, modificamos el parámetro enabled del repositorio centos-asterisk-13.repo a 1, por lo que pasará a ser el repositorio utilizado para las actualizaciones de Asterisk. Dependiendo de la versión que hayamos instalado habilitaremos el repositorio de nuestra versión.



Configuración

Vamos a la carpeta de configuración que esta en /etc/asterisk

cd /etc/asterisk/

Encontraremos muchos archivos de los cuales ahora mismo utilizaremos tres:
  • sip.conf → En él se registran los usuarios SIP que vamos a utilizar
  • extensions.conf → En él registramos las extensiones
  • voicemail.conf → En él registramos los buzones de correo
Empezamos con el archivo sip.conf
Bajamos al final del fichero o donde queramos, elegimos el final por comodidad de saber dónde están siempre. Y seguimos la siguiente estructura para cada usuario:

[ejemplo]
type=friend
secret=pass
qualify=yes
nat=no
host=dynamic
canreinvite=no
context= contexto
mailbox= buzon
  • Deberemos poner entre corchetes el nombre del usuario, en este caso ejemplo
  • La contraseña del usuario se pone en secret
  • En host hemos decidido poner dynamic para que el usuario se pueda conectar desde cualquier IP de la red
  • Context es el contexto, le ponemos el contexto en el que va a estar
  • Mailbox es el buzón de voz
Ahora  voy a dejar un ejemplo del que yo he hecho
[logistica]
type=friend
secret=1234
qualify=yes
nat=no
host=dynamic
canreinvite=no
context=extension01-sip
mailbox=00@buzon

Sobre la línea 343 del sip.conf establecemos language=es, con esto hacemos que todos los usuarios que creemos tengan como lenguaje por defecto español.
Ahora vamos a configurar el voicemail.conf
Para configurar los buzones bajamos hasta el fondo y creamos un contexto, por ejemplo [buzon] y configuramos así los buzones con la siguiente estructura:
número => pass,nombre,correo
Y ahora el ejemplo que yo he hecho:
00 => 1234,logistica,logistica@empresa.com
Ya por último vamos a configurar el extensions.conf
En el fondo del documento, en mi caso, voy a añadir la configuración
Crearemos un contexto en mi caso [extension01-sip], recordar que los contextos van entre corchetes.
Y ahora dentro de ese contexto crearemos extensiones como por ejemplo:
exten => 00,1,Dial(SIP/logistica,15,Ttm)
same => n,VoiceMail(00@buzon)
same => n,Hangup()

  • Lo que hace es cada vez que llamen a la extensión 00 en primer lugar llama al SIP/logistica(que está creado en sip.conf) durante 15 segundos con una música de fondo y la llamada se puede reenviar a otro teléfono
  • Utilizamos “same” para no tener que estar poniendo por cada línea “exten => 00”
  • Si no se contesta, en siguiente lugar “n” salta el correo con la función VoiceMail (00@buzón) configurado anteriormente en voicemail.conf
  • Y por último hacemos un Hangup() para colgar
Ahora voy a poner algunas funciones útiles de Asterisk.

  1. Dial()
  • Con esta función realiza una llamada a donde le pasemos en este caso SIP/logistica
  1. VoiceMail()
  • Con esta función se llama al buzón de voz de ese usuario para dejar un mensaje (número_buzón@contexto_en_voicemail.conf)
  1. Hangup()
  • Con esta función colgamos.
  1. Wait()
  • Con esta función se realiza una espera, el tiempo que queramos pasarle Wait(1), espera 1 segundo.
  1. VoiceMailMain()
  • Llama al menú del buzón de voz, te preguntará la extensión y su contraseña para escuchar los mensajes.
  1. Answer()
  • Con esta función la PBX Asterisk responde la llamada.
  1. Record()
  • Con esta función se graba un audio. Por ejemplo para crear un menú.
  1. Background()
  • Reproduce un audio en background.

Ahora reiniciamos el servicio.

service asterisk restart

 o

/etc/init.d/asterisk restart

Y ahora ejecutamos la consola de asterisk para monitorear.

asterix -rvvvv

para recargar configuraciones de usuario (Sip) y plan de marcado (Extensiones)
sip reload
dialplan reload

Cuando conectemos teléfonos con los usuarios SIP creados podremos verlos en la consola ejecutando:
sip show peers


=============================================

Como conectarme a Asterisk con Ip pública?

Configurar los telefonos o soft phone con la ip publica y en el router abrir los puertos 5060 y lo RTP 10,000 al 20,000
Consecuencias:
Si solo abres los puertos y los ruteas(forwards) es una falla de seguridad muy grande, podrían escanear(sniffer) tu trafico y capturar tus llamadas o vulnerar tu servidor y hacer llamadas al otro lado del mundo y tu tendrías que pagar.

Recomendación:
Es siempre establecer una conexión segura mediante VPN y crear reglas de IPTABLES, entre otras medidas.