2 - Instalacion de Asterisk
-
Upload
nightcrow-wst -
Category
Documents
-
view
101 -
download
5
Transcript of 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
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
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:
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
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:
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
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:
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
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
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
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
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:
Se seleccionan todos los módulos en el menú “Utilities” y “AGI Samples”:
En “Core Sound Packages” se seleccionan todos los paquetes disponibles:
En “Music On Hold File Packages” se hace lo mismo:
Como se hace lo mismo en “Extra Sound Packages”:
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:
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 '');
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
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