2 - Instalacion de Asterisk

18
Segunda Parte - Instalación de Asterisk Asterisk es el programa Open Source más conocido para implementar una PBX. Para una lista completa de las funcionalidades brindadas, visiten la página de los desarrolladores . Entre ellas: Registro (Log) de llamadas Grabación de llamadas Desvío de llamadas Trasferencia de llamadas Conferencias audio Música en espera Gestión de colas (call center) Soporte para tarjetas y Gateway FXO, FXS, digitales y celulares Gateway GoogleVoice Soporte Ipv6 Este curso abarca la instalación de Asterisk en un VPS (Servidor Virtual Privado) y es valida para cualquier Servidor Linux CentOS. Con el VPS la ventaja es tener una PBX siempre activa, independiente de la banda ancha disponible en la casa/oficina y evita tener una computadora dedicada y siempre encendida. Utilidades, librerías, dependencias Antes de la compilación de Asterisk, se instalarán una serie de librerías y dependencias que permitirán obtener una instalación de casi todos los módulos de la PBX. Se empieza con Vorbis que es una librería para la compresión/decompresión audio: yum install libvorbis libvorbis-devel vorbis-tools libogg libogg-devel se sigue con CURL que es un cliente que permite recibir o enviar archivos utilizando los protocolos HTTP, HTTPS, FTP, GOPHER, DICT, TELNET: yum install curl curl-devel libidn-devel se instalan todas las librerías y dependencias que se necesitan para compilar las fuentes: yum install gcc ncurses-devel make gcc-c++ libtermcap-devel zlib-devel libtool bison bison-devel yum install openssl-devel bzip2-devel wget newt-devel subversion flex gtk2-devel a seguir para crear y gestionar las bases de datos, MySQL: yum install mysql mysql-server mysql-devel UNIXODBC que es la implementación Linux de los API ODBC que permiten conectarse a muchos

Transcript of 2 - Instalacion de Asterisk

Page 1: 2 - Instalacion de Asterisk

Segunda Parte - Instalación de Asterisk

Asterisk es el programa Open Source más conocido para implementar una PBX. Para una lista completa de las funcionalidades brindadas, visiten la página de los desarrolladores. Entre ellas:

• Registro (Log) de llamadas• Grabación de llamadas• Desvío de llamadas• Trasferencia de llamadas• Conferencias audio• Música en espera• Gestión de colas (call center)• Soporte para tarjetas y Gateway FXO, FXS, digitales y celulares• Gateway GoogleVoice• Soporte Ipv6•

Este curso abarca la instalación de Asterisk en un VPS (Servidor Virtual Privado) y es valida para cualquier Servidor Linux CentOS. Con el VPS la ventaja es tener una PBX siempre activa, independiente de la banda ancha disponible en la casa/oficina y evita tener una computadora dedicada y siempre encendida.

Utilidades, librerías, dependencias

Antes de la compilación de Asterisk, se instalarán una serie de librerías y dependencias que permitirán obtener una instalación de casi todos los módulos de la PBX. Se empieza con Vorbis que es una librería para la compresión/decompresión audio:

yum install libvorbis libvorbis-devel vorbis-tools libogg libogg-devel

se sigue con CURL que es un cliente que permite recibir o enviar archivos utilizando los protocolos HTTP, HTTPS, FTP, GOPHER, DICT, TELNET:

yum install curl curl-devel libidn-devel

se instalan todas las librerías y dependencias que se necesitan para compilar las fuentes:

yum install gcc ncurses-devel make gcc-c++ libtermcap-devel zlib-devel libtool bison bison-devel

yum install openssl-devel bzip2-devel wget newt-devel subversion flex gtk2-devel

a seguir para crear y gestionar las bases de datos, MySQL:

yum install mysql mysql-server mysql-devel

UNIXODBC que es la implementación Linux de los API ODBC que permiten conectarse a muchos

Page 2: 2 - Instalacion de Asterisk

sistemas de gestión de base de datos (ej: MySQL):

yum install unixODBC unixODBC-devel mysql-connector-odbc libtool-ltdl-devel

Se instala FESTIVAL, que es un sistema de text to speech (disponible en español):

yum install festival festival-devel

Una vez terminada esta parte se empieza a instalar una serie de programas desde las fuentes; el primero es SPEEX que es un programa para la compresión audio específicamente diseñado para la voz:

cd /usr/src

wget http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz

tar -xf speex-1.2rc1.tar.gz

cd speex-1.2rc1

./configure --prefix=/usrmakemake install

Se continua con LAME que es utiliza para codificar archivos audio en formato MP3:

cd /usr/src

wget http://ufpr.dl.sourceforge.net/sourceforge/lame/lame-3.99.3.tar.gz

tar -xf lame-3.99.2.tar.gz

cd lame-3.99.2

./configure --prefix=/usrmakemake install

LIBMAD que es un MPEG audio decodificador de alta calidad:

cd /usr/src

wget http://prdownloads.sourceforge.net/mad/libmad-0.15.1b.tar.gz

tar -xf libmad-0.15.1b.tar.gz

cd libmad-0.15.1b

./configure --prefix=/usrmake

Page 3: 2 - Instalacion de Asterisk

make install

WAVPACK es un compresor audio de alto rendimiento sin perdida de calidad:

cd /usr/src

wget http://www.wavpack.com/wavpack-4.60.1.tar.bz2

tar -xf wavpack-4.60.1.tar.bz2

cd wavpack-4.60.1

./configure --prefix=/usrmakemake install

Se termina con SOX que es un programa que permite la manipulación de archivos audio y la posibilidad de pasarlos de un formato a otro:

cd /usr/src

wget http://downloads.sourceforge.net/project/sox/sox/14.3.2/sox-14.3.2.tar.gz

tar -xf sox-14.3.2.tar.gz

cd sox-14.3.2

./configure -prefix=/usr

Al finalizar el configure aparecerá esta tabla donde se encontrarán todos los formatos audio que se podrán manipular con SOX:

Page 4: 2 - Instalacion de Asterisk

Se termina con la compilación e instalación:

makemake install

LIBPRI

En el caso que se quiera instalar tarjetas digitales en el servidor Asterisk (E1, T1, ISDN), antes de instalar DAHDI, hay que instalar la librería libpri

cd /usr/src

wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4.12.tar.gz

se decomprime:

tar -xf libpri-1.4.12.tar.gz

se entra en la carpeta:

cd libpri-1.4.12

se compila y se instala:

makemake install

Page 5: 2 - Instalacion de Asterisk

DAHDI

El paquete DADHI (Digium Asterisk Hardware Device Interface) permite cargar los drivers y configurar distintos tipos de tarjetas en Asterisk (analógicas, digitales, RDSI/ISDN, cancelador de ECHO). Asterisk, además, se apoya en DAHDI para la generación del “timing” indispensable para las conferencias audio y el trunking IAX2 (tema tratado en la configuración del archivo iax.conf). Se instala el paquete de desarrollo del Kernel-Xen:

yum install kernel-xen-devel

Importante: La única diferencia con un sistema CentOS local o un servidor dedicado es que se instala el paquete estándar del Kernel: yum install kernel-devel

Se continua con la ultima versión disponible de DAHDI-Linux:

cd /usr/src

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

tar -xf dahdi-linux-current.tar.gz

cd dahdi-linux-2.6.0

makemake install

Se termina con la ultima versión disponible de DAHDI-Tools:

cd /usr/src

wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/dahdi-tools-current.tar.gz

tar -xf dahdi-tools-current.tar.gz

cd dahdi-tools-2.6.0

./configure

make menuselect

en la ventana que aparece se seleccionan todos los módulos disponibles como indicado en la imagen que sigue:

Page 6: 2 - Instalacion de Asterisk

Se guarda la configuración presionando la tecla tabulador hasta posicionarse sobre “Save & Exit”. Se termina con la compilación e instalación:

makemake installmake config

Ya se puede iniciar DAHDI:

/etc/init.d/dahdi startLoading DAHDI hardware modules: wct4xxp: [ OK ] wcte12xp: [ OK ] wct1xxp: [ OK ] wcte11xp: [ OK ] wctdm24xxp: [ OK ] wcfxo: [ OK ] wctdm: [ OK ] wcb4xxp: [ OK ] wctc4xxp: [ OK ] xpp_usb: [ OK ]

No hardware timing source found in /proc/dahdi, loading dahdi_dummyRunning dahdi_cfg: [ OK ]

App_fax, GoogleTalk y otros

En este párrafo se verá como instalar SpanDSP, un procesador de señales digitales que en Asterisk permite la instalación del modulo app_fax para la recepción y envío de faxes, y IKSEMEL que permite implementar el protocolo XMPP en Asterisk y de esta forma conectarse a GoogleTalk y/o a cualquier servidor de tipo XMPP (otro ejemplo es Openfire):

Para SpanDSP se necesita instalar primero las librerías libtiff:

yum install libtiff libtiff-devel libxml2 libxml2-devel

Page 7: 2 - Instalacion de Asterisk

se continua con SpanDSP:

cd /usr/src

wget http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.6pre18.tgz

tar -xf spandsp-0.0.6pre18.tgz

cd spandsp-0.0.6

./configure --prefix=/usrmakemake install

El protocolo XMPP permite conexione seguras entre cliente y servidor utilizando el protocolo TLS; para ese efecto se instala, antes de IKSEMEL las relativas librerías:

yum install gnutls gnutls-devel gnutls-utils

se continua con IKSEMEL:

cd /usr/src

wget http://iksemel.googlecode.com/files/iksemel-1.4.tar.gz

tar -xf iksemel-1.4.tar.gz

cd iksemel-1.4

./configure --prefix=/usrmake

antes de la instalación se ejecuta un test para tener la certeza que la compilación haya tenido éxito:

make checkPASS: tst-ikstackPASS: tst-iksPASS: tst-saxPASS: tst-domPASS: tst-shaPASS: tst-md5PASS: tst-filterPASS: tst-jid==================All 8 tests passed==================

Ya que todo está bien, se puede instalar:

Page 8: 2 - Instalacion de Asterisk

make install

Antes de la instalación de Asterisk, se termina la preparación del sistema con unos programas más. Primero un servidor de correo electrónico, SENDMAIL:

yum install sendmail sendmail-devel sendmail-cf

Se configura para que arranque en automático:

chkconfig sendmail on

Al alquilar el servidor Linode, cada usuario tiene asignado un sub-dominio que se puede utilizar para la configuración del sistema. Este dato aparece en la pagina de administración de Linode, bajo el menú “Remote Access”

En este caso el sub-dominio asignado es li206-51.members.linode.com. Ese nombre se pone en la configuración de red del servidor de la siguiente forma:

nano /etc/sysconfig/network

al final del archivo se añade la siguiente linea:

HOSTNAME=li206-51.members.linode.com

Se guardan los cambios y se reinicia el servicio de red:

service network restart

El sub-dominio se utilizará también para el envío de los correos electrónicos. Por defecto el servidor de correo electrónico escucha solamente en la puerto TCP 25 local. Para que sea alcanzable también desde

Page 9: 2 - Instalacion de Asterisk

remoto hay que abrir el archivo de configuración de Sendmail:

nano /etc/mail/sendmail.mc

buscar esta linea (para buscar un texto con el editor nano hay que presionar la combinación de teclas CTRL-W):

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

y modificarla como sigue:

DAEMON_OPTIONS(`Port=smtp,, Name=MTA')dnl

se guardan los cambios y se vuelve a compilar la configuración de Sendmail:

make -C /etc/mail

se reinicia el servidor de correo:

/etc/init.d/sendmail restart

para hacer la prueba que si es posible conectarse al servidor de correo electrónico desde remoto, se abre una ventana terminal en Windows y se escribe:

C:\> telnet -a iplinode 25

En lugar de iplinode se pone la IP del servidor Linode. El resultado:

OpenLDAP es la versión open source del protocolo Lightweight Directory Access. Normalmente se utiliza para crear un directorio de usuarios que puede ser consultado y/o modificado desde remoto. Muchos programas implementan la posibilidad de conectarse a un servidor OpenLDAP y Asterisk, desde la versión 1.6.X, presenta esta posibilidad:

yum install compat-openldap openldap openldap-clients openldap-devel openldap-servers

SNMP es el Protocolo Simple de Administración de Red y sirve para controlar y monitorear el desempeño del servidor Linux. En Asterisk permite monitorear, entre otras cosas, los canales y las llamadas. Se utilizará junto a NAGIOS para controlar el servidor Asterisk y enviar avisos cuando se verifique algún tipo de problema:

yum install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils

Page 10: 2 - Instalacion de Asterisk

En Asterisk existe la posibilidad de guardar los registros de las llamadas en un servidor RADIUS a través de un cliente RADIUS que hay que instalar. En este caso se instala desde las fuentes:

cd /usr/src

wget http://download.berlios.de/radiusclient-ng/radiusclient-ng-0.5.6.tar.gz

tar -xf radiusclient-ng-0.5.6.tar.gz

cd radiusclient-ng-0.5.6

./configure --prefix=/usrmakemake install

Se continua la preparación del servidor con la instalación del lenguaje de programación LUA que permite escribir el dialplan (o plan de llamadas) utilizando este lenguaje. Al terminar la instalación de Asterisk se encontrará un archivo de ejemplo en la carpeta /etc/asterisk. En este caso se instala desde las fuentes. Primero unas dependencias:

yum install readline-devel

luego el programa:

cd /usr/src

wget http://www.lua.org/ftp/lua-5.1.4.tar.gz

tar -xf lua-5.1.4.tar.gz

cd lua-5.1.4

Se modifica el archivo Makefile para que el programa se instale por defecto en la carpeta /usr:

nano Makefile

se modifica esta linea:

INSTALL_TOP= /usr/local

para que quede:

INSTALL_TOP= /usr

se compila e instala:

make linux make install

Page 11: 2 - Instalacion de Asterisk

Para terminar se compilan los paquetes que permiten utilizar las nuevas funcionalidades de Asterisk 1.8.X. Primero LIBICAL que permite la implementación del protocolo iCalendar (RFC5546) en Asterisk a través del modulo res_calendar:

cd /usr/src

wget http://downloads.sourceforge.net/project/freeassociation/libical/libical-0.48/libical-0.48.tar.gz

tar -xf libical-0.48.tar.gz

cd libical-0.48

./configure --prefix=/usrmakemake install

Luego NEON que es una librería que permite la implementación del protocolo WebDAV en Asterisk:

cd /usr/src

wget http://webdav.org/neon/neon-0.29.6.tar.gz

tar -xf neon-0.29.6.tar.gz

cd neon-0.29.6

./configure --prefix=/usrmakemake install

Por ultimo la librería LIBSRTP que permite implementar en Asterisk el cifrado del flujo media a través del protocolo SRTP (RFC3711):

cd /usr/src

wget http://downloads.sourceforge.net/project/srtp/srtp/1.4.4/srtp-1.4.4.tgz

tar -xf srtp-1.4.4.tgz

cd srtp

./configure --prefix=/usr CFLAGS=-fPIC makemake runtestmake install

Instalación de Asterisk

Page 12: 2 - Instalacion de Asterisk

Terminada la preparación del servidor, se inicia con la instalación de Asterisk. Se descarga la ultima versión 1.8.X disponible:

cd /usr/src

wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.8.8.2.tar.gz

tar -xf asterisk-1.8.8.2.tar.gz

cd asterisk-1.8.8.2

./configuremake menuselect

Desde la versión 1.8.X lo que antes era un paquete a parte (asterisk-addons) es ahora presente en el paquete principal de Asterisk Se entra en el menú “Add-ons” y se activan los paquetes que siguen:

En Asterisk 1.8.X está presente un nuevo menú “Channel Event Logging” que como se verá más adelante permite complementar el CDR (call detail record) con nuevas informaciones relacionadas con las llamadas:

En “Resource modules” se controla que los módulos relacionados con las funciones calendario y cifrado del flujo media estén activados:

Page 13: 2 - Instalacion de Asterisk

Se seleccionan todos los módulos en el menú “Utilities” y “AGI Samples”:

En “Core Sound Packages” se seleccionan todos los paquetes disponibles:

Page 14: 2 - Instalacion de Asterisk

En “Music On Hold File Packages” se hace lo mismo:

Como se hace lo mismo en “Extra Sound Packages”:

Page 15: 2 - Instalacion de Asterisk

Se guarda la configuración presionando la tecla tabulador hasta posicionarse sobre “Save & Exit”. Se termina con la compilación e instalación:

make

Si mientras se compila aparece este error:

make[1]: *** [format_mp3.o] Error 1make: *** [addons] Error 2

se continua con:

contrib/scripts/get_mp3_source.sh

y luego otra vez el make:

make

se instala Asterisk:

make install

se instalan los archivos de configuración predefinidos:

make samples

se configura el script de arranque de Asterisk:

Page 16: 2 - Instalacion de Asterisk

make config

Terminada la instalación, se procede a la configuración de MySQL para crear la base de datos y la tabla donde se guardarán los registros de las llamadas.

/etc/init.d/mysqld start

se configura para que arranque en automático:

chkconfig mysqld on

y se crea una contraseña para el usuario root de MySQL (sesamo):

mysqladmin -u root password sesamo

Se crea la base de datos para guardar los registros de las llamadas. Se entra en el cliente de MySQL:

mysql -u root -psesamo

se crea la base de datos asteriskcdr:

mysql> create database asteriskcdr;

se selecciona:

mysql> use asteriskcdr

se crea la tabla cdr (copiando y pegando las lineas que siguen):

mysql> CREATE TABLE cdr ( calldate datetime NOT NULL default '0000-00-00 00:00:00', clid varchar(80) NOT NULL default '', src varchar(80) NOT NULL default '', dst varchar(80) NOT NULL default '', dcontext varchar(80) NOT NULL default '', channel varchar(80) NOT NULL default '', dstchannel varchar(80) NOT NULL default '', lastapp varchar(80) NOT NULL default '', lastdata varchar(80) NOT NULL default '', duration int(11) NOT NULL default '0', billsec int(11) NOT NULL default '0', disposition varchar(45) NOT NULL default '', amaflags int(11) NOT NULL default '0', accountcode varchar(20) NOT NULL default '', peeraccount varchar(20) NOT NULL default '', uniqueid varchar(32) NOT NULL default '', linkedid varchar(80) NOT NULL default '', userfield varchar(255) NOT NULL default '');

Page 17: 2 - Instalacion de Asterisk

Con la versión 1.8 de Asterisk se han añadido dos nuevos campos a la tabla CDR:

• linkedid• peeraccount

que permiten tener informaciones más detalladas de cada llamada.

Se otorgan los permisos de acceso a la base de datos creada al usuario asterisk, desde local

mysql> GRANT ALL PRIVILEGES ON asteriskcdr.* TO 'asterisk'@'localhost' IDENTIFIED BY 'sesamo';

desde remoto:

mysql> GRANT ALL PRIVILEGES ON asteriskcdr.* TO 'asterisk'@'%' IDENTIFIED BY 'sesamo';

se actualizan los permisos:

mysql> flush privileges;

se sale del cliente:

mysql> quit

En Asterisk la conexión a la base de datos y la tabla de los registros de las llamadas, se configura en el archivo cdr_mysql.conf. Se renombra el predefinido:

mv /etc/asterisk/cdr_mysql.conf /etc/asterisk/cdr_mysql.conf.old

se crea uno nuevo:

nano /etc/asterisk/cdr_mysql.conf

se añaden las siguientes lineas:

[global]hostname=localhostdbname=asteriskcdrtable=cdrpassword=sesamouser=asteriskport=3306sock=/var/lib/mysql/mysql.sock

Se guardan los cambios y se inicia Asterisk:

/etc/init.d/asterisk start

Page 18: 2 - Instalacion de Asterisk

se averigua que esté corriendo:

/etc/init.d/asterisk statusasterisk (pid 2403) is running...

se entra en la consola:

asterisk -rvvvvvvvvvvvvvvvv

se controla que la conexión a la base de datos esté activa:

CLI> cdr mysql statusConnected to asteriskcdr@localhost, port 3306 using table cdr for 59 seconds. Wrote 0 records since last restart.

Se sale de la consola:

CLI> quitExecuting last minute cleanups