1. TELEFONIA IP
ASTERISK
TUTORIAL HECHO POR:
CESAR PINEDA GONZALEZ
cpineda@huellavirtual.net
MEDELLIN ANTIOQUIA
2009
1
2. CONTENIDO
1. Introducción……………………………………………………………………4
2. Justificación……………………………………………………………............5
3. Instalando asterisk……………………………………………………………6
4. Actualizando repositorios……………………………………………………6
5. Librerias para acceder vía SSH……………………………………………8
6. Paquetes de compilacion……………………………………………………9
7. Actualizando el Kernel de nuestro sistema. ………………………………9
8. Instalacion de paquetes adicionales. …………………………………….11
9. Paquete para el manejo de voz. ………………………………………….11
10. Instalamos asterisk…………………………………………………………12
11. Librerias para la consola asterisk. ………………………………………12
12. Paquete de comprensión. …………………………………………………13
13. Librerias para el servicio web FreePBX. …………………………………13
14. En caso de utilizar tarjetas sangoma. ……………………………………15
15. Librerias para archivos CVS. ……………………………………………..15
16. Más librerias para FreePBX. ………………………………………………16
17. Servidor web para FreePBX. ………………………………………………16
18. Mas librerias para FreePBX…………………………………………………17
19. Instalamos la base de datos. ………………………………………………17
20. Creación repositorio local. …………………………………………………18
21. Obteniendo archivos desde internet. ……………………………………19
22. Manejo de archivos de sonido. ……………………………………………20
23. Paquetes para el FreePBX. ………………………………………………21
24. Archivos para asterisk. ……………………………………………………21
2
3. 25. Instalacion de archivos descargados. ……………………………………24
26. Manejador de sonidos. ……………………………………………………..26
27. Instalacion Gateway entre asterisk y FreePBX. …………………………28
28. Instalamos FreePBX. ………………………………………………………..29
29. Copiamos esquemas. ……………………………………………………….33
30. Creando usuario y grupo que manejen los procesos asterisk. …………34
31. Configurando apache. ………………………………………………………35
32. Compilando archivos. ……………………………………………………….41
33. Configurando archivos de asterisk. ………………………………………..46
34. Antes de instalar el FreePBX. ……………………………………………...48
35. Glosario. ……………………………………………………………………...56
INTRODUCCION
La telefonía IP, actualmente está tomando auge en las telecomunicaciones, en
especial en las pequeñas, medianas y grandes compañías, esto se debe a su
bajo costo de implementación, lo que la hace muy factible para aquellos que
buscan economizar un poco.
Debido al crecimiento progresivo que se viene dando con esta tecnología, y a
la gran acogida que ha tenido, tratare de darles una breve introducción a lo que
es el mundo de las comunicaciones vía IP, desde sus orígenes hasta lo que es
hoy en día.
LA herramienta que actualmente es implementada con mayor frecuencia en el
3
4. mundo del software libre para crear centrales de telefonía IP es Asterisk (GNU).
Por sus funcionalidades y por ser tan compacta.
Tratare de darles a conocer sus características, proceso de instalación y
configuración, en la plataforma de Linux Ubuntu 8.10.
El siguiente trabajo es un recopilo de una serie de manuales que voy a ir
desarrollando a medida que me vaya adentrando al mundo de la telefonía IP.
El presente manual estará orientado a la explicación de cómo instalar una
central telefónica PBX, con la herramienta Asterisk en el sistema operativo
Ubuntu 8.10.
JUSTIFICACION
La idea de crear una serie de manuales orientadas a la telefonía IP, no es más
que plasmar cada proceso nuevo que vaya aprendiendo sobre esta tecnología,
de una manera simple, para dárselas s a conocer a mis amigos y a la
comunidad en sí.
Pienso que ir documentando cada proceso nuevo que vaya adquiriendo en mi
etapa productiva me ayudara tanto al crecimiento personal como profesional,
y serviría de apoyo en el momento que se me presente algún tipo de
problema.
Cabe aclarar que soy un principiante en el campo de la telefonía IP, por lo que
puede haber errores, por eso me gustaría decirles que no confíen el 100%
4
5. de lo plasmado en los manuales y es mejor buscar algún tipo de
documentación extra en otras fuentes: tales como Internet, libros, amigos….
Los manuales estarán sujetos a cambios, lo cual tratare de irlos mejorando día
a día, a medida que vaya adquiriendo nuevos conocimientos.
INSTALANDO ASTERISK:
Antes de empezar con el proceso de instalación de nuestra PBX, listare las
características del equipo que será el servidor VoIP:
• Linux Versión : Ubuntu 8.10
• Linux Kernel : 2.6.27
• Conmutador de VoIP : Asterisk V.1.4.13
• Administrador Web : FreePBX 2.3.1
• Memoria RAM: 1 GB
• CPU: AMD athlon™ 64 procesor
• /: 10 GB
• Swap: 600 MB
• IP: 192.168.2.110
5
7. • Agregamos los siguientes repositorios:
deb http://us.archive.ubuntu.com/ubuntu/ dapper universe
deb-src http://us.archive.ubuntu.com/ubuntu/ dapper univers
e
• Guardamos ctrl.+ o y salimos ctrl.+x
• Ahora actualizaremos la lista ejecutando el siguiente comando:
#aptget update
7
8. Librerías para acceder vía SSH:
• Para poder acceder remotamente a nuestro Asterisk, de forma segura
procederemos a instalar los paquetes correspondientes para dicha función:
#aptget install openssl libssldev ssh
Paquetes de compilacion:
8
9. • Como nuestro Asterisk y sus librerias deben ser compiladas para poder
instalarlos en nuestro sistema, procederemos a descargar e instalar algunos
paquetes que harían esta funcion:
#aptget install gcc make g++
Actualizamos el kernel de nuestro sistema:
• Verifico que version de kernel tengo instalado en mi equipo con el siguiente
comando:
# uname a
• Buscamos las fuentes de nuestro kernel con el siguiente comando:
9
10. #aptcache search 2.6.27.7
• Instalamos las cabeceras:
#aptget install linuxheaders2.6.277generic linuximage2.6.277generic linux
source2.6.27
Instalacion de Paquetes adicionales:
• Nmap: Scaneador de puertos.
10
11. • Lynx: Navegador web de texto (#lynx URL)
• Emacs21: Editor de texto potente.
#aptget install nmap lynx emacs21
Paquetes para el manejo de voz:
• Festival: Es un sistema de síntesis de voz.
# aptget install festival festivaldev
Instalamos Asterisk:
11
12. • Procedemos a instalar Asterisk desde los repositorios:
#aptget install asterisk
Librerias para Consola Asterisk:
• Para poder ejecutar la consola de asterisk instalaremos las librerias requeridas
para dicho servicio:
#aptget install ncursesbase ncursesbin ncursesterm libncurses5 libncursesw5
libncurses5dev libncursesw5dev
Paquetes de comprension:
12
13. • Necesitaremos algunos paquetes de comprension para nuestro asterisk:
#aptget install zlib1g zlib1gdev
Librerias para el servicio Web FreePBX:
• Para poder utilizar el administrador Web de nuestro asterisk procederemos a
instalar algunas librerias necesarias para dicho servicio:
NOTA: Algunas librerias nos dira que ya están en su version mas reciente, esto se
debe que se instalaron cuando se instalo el Asterisk, pero algunas si hacen falta, las
cuales se instalaran en su version mas actual.
#ptget install bison bisondoc
#aptget install libxml2 libxml2dev
13
15. • Las tarjetas sangoma son una marca de tarjeta de telefonía IP, por lo que se
necesita instalar el flex, que actuara como dirvers de la misma.
#aptget install flex
Librerias para archivos CVS:
• Curl: Herramienta para transferir archivos con sintaxis URL, FTP.
• Doxygen: Es un generador de documentación para código fuente.
• Subversión: Es un sistema de control de versiones, diseñado principalmente
para reemplazar el CVS.
#aptget install subversion curl doxygen
Mas librerias Para FreePBX:
• Librerias para el uso del FreePBX:
15
16. # aptget install libnettelnetperl mimeconstruct libipcsignalperl libmimetypesperl
libprocwaitstatperl
Servidor Web para FreePBX:
• Necesitaremos un servidor web donde ira alojado el administrador web de
nuestro asterisk, para ello instalaremos el apache2:
# aptget install apache2
Más librerias Para FreePBX:
• Como tuvimos que instalar un servidor Web para el FreePBX, tendremos que
descargar algunas librerias para que funcione con el apache2:
16
17. # aptget install php5 php5cli php5mysql phppear libapache2modphp5 php5curl
php5gd phpdb
Instalamos la base de datos:
• Debemos tener instalada una base de datos para el FreePBX, y el CDR.
#aptget install mysqlclient5.0 mysqlserver5.0 libmysqlclient15dev
• En el proceso de instalacion de nuestra base de datos nos pedira una contraseña
para el usuario administrativo.
17
18. • Volvemos a repetir la contraseña.
Creación repositorio local:
• Necesitaremos un repositorio local en donde almacenaremos los archivos
faltantes de Asterisk, y FreePBX descargados de internet.
#mkdir ~/asterisk
Ahora nos ubicamos dentro del directorio creado:
#cd asterisk
18
19. Obteniendo Archivos desde Internet:
• Procedemos a descargar los archivos desde internet y guardarlos en el directorio
antes creado con el comando wget:
#wget http://www.cpan.org/modules/bycategory/25_Bundles/Asterisk/asterisk
perl0.10.tar.gz
• Asteriskperl: Son los módulos de interfaz con el código abierto de Asterisk
PBX sistema.
Manejo de archivos de sonido:
• Para poder trabajar con archivos de sonido tales como: mp3, mpg… necesitamos
algunos ficheros en nuestro sistema, los cuales lo descargaremos con el comando
19
20. wget:
#wget http://superbeast.dl.sourceforge.net/sourceforge/sox/sox14.0.0.tar.gz
#wget http://easynews.dl.sourceforge.net/sourceforge/lame/lame3.97.tar.gz
Paquetes para el FreePBX:
• Necesitaremos descargar el paquete que requiere nuestro administrador web para
su correcto funcionamiento:
20
24. • Asterisk 1.4.11: Es la plataforma Asterisk.
• Asterisk Addons 1.4.2: Es para el manejo de tareas.
Instalación de archivos descargados:
• Después de culminar con las descargas de los archivos, procederemos a la
instalación de los mismos, para ello nos ubicamos en la ruta: /usr/scr
# cd /usr/src/
• Instalaremos el editor de sonido de Asterisk, que es el lame:
#tar xvzf ~/asterisk/lame3.97.tar.gz
# cd lame3.97
# ./configure prefix=/usr sysconfdir=/etc
24
25. # make && sudo make install
• tar xvzf: Extrae todo los ficheros que se encuentran en el archivo descargado y
que está en tar.gz.
• ./configure: Se encarga de buscar el compilador y los paquetes a compilar,
culminada esta tarea crea makefiles.
• Make: se usa para las labores de creación de fichero ejecutables para su
instalación.
• Make install: Ejecuta los ficheros creados por make y los instala.
Manejador de sonidos:
25
26. • Ahora procedemos a instalar el manejador de sonidos de Asterisk.
# cd /usr/src/
# tar xzvf ~/asterisk/sox14.0.0.tar.gz
# cd sox14.0.0
#./configure
#make
26
28. • Instalaremos el Gateway entre asterisk y FreePBX:
# tar xzvf ~/asterisk/asteriskperl0.10.tar.gz
# cd asteriskperl0.10
# perl Makefile.PL
# make all
# make install
28
29. Antes de instalar el FreePBX
• Nos ubicamos en la siguiente ruta:
# cd /usr/src
# tar xzvf ~/asterisk/freepbx2.3.1.tar.gz
# cd /usr/src/freepbx2.3.1
Accedemos a la base de datos Mysql.
29
30. # mysql u root –p
• Ya dentro de Mysql, ejecutamos el comando show databases; para ver
las bases de datos.
mysql> show databases;
• Seleccionamos la de mysql.
30
31. mysql> use mysql ;
• Creamos el usuario para la base de datos del conmutador y cdr.
mysql> grant all privileges on *.* to asterisk@localhost identified by “cesar”;
• Le damos todos los privilegios administrativos.
mysql> flush privileges;
• Salimos de mysql e ingresamos con el usuario anteriormente creado (asterisk).
mysql> exit
Ingresamos a mysql como asterisk.
31
32. # mysql -u asterisk –p
• Creamos las bases de datos dentro de la consola de mysql
mysql> create database asteriskcdrdb;
mysql> create database asterisk;
mysql> exit
Copiando esquemas:
32
33. • Copiaremos los esquemas y la información de los scripts de bases de datos por
default de FreePBX
# mysql -u asterisk -
p asterisk < /usr/src/freepbx-2.3.1/SQL/newinstall.sql
• Nos pedirá la contraseña del usuario asterisk.
# mysql -u asterisk -
p asteriskcdrdb < /usr/src/freepbx-2.3.1/SQL/cdr_mysql_tab
le.sql
• Terminada la configuración de las bases de datos en mysql para asterisk.
Creamos usuario y grupo que manejen los procesos de asterisk:
33
34. • Creamos el grupo de asterisk.
# groupadd asterisk
• Creamos usuario
# useradd c quot;PBX asteriskquot; d /var/lib/asterisk g asterisk asterisk
• Nos aparecera que ya existe pero no hay ningún problema.
• Agregamos el password para el usuario asterisk.
# passwd asterisk
Creamos el directorio de asterisk en la siguiente ruta: /var/run/asterisk
34
35. # mkdir /var/run/asterisk
• No se puede crear por que ya existe, no hay problema tampoco que nos aparezca
este mensaje.
# chown asterisk:asterisk /var/run/asterisk
Configurando apache:
• Para poder indicarle a apache que el usuario propietario es asterisk modificamos
la siguiente línea: www-data:x:33, en el siguiente archivo:
# emacs /etc/group
35
36. • La línea modificada debe quedar asi:
www-data:x:33:asterisk
• Guardamos y salimos del archivo:
Guardar: Ctrl+x ctrl+s salir: ctrl+x ctrl+c
• Con el comando find ubicamos el archivo de configuración de apache.
# find /etc/apache2/ -type f | xargs grep Group
• Editamos el archive de apache: apache2.conf
36
37. # emacs /etc/apache2/apache2.conf
• Agregamos las siguientes líneas al final del archivo:
User asterisk
Group asterisk
• Guardamos (ctrl+x ctrl+s) y salimos (ctrl+x ctrl+c).
• Cambiamos los permisos para el directorio de sesiones de php.
#chown R asterisk /var/lib/php5
• Editamos el archivo php.ini para aumentar el tamaño de archivos que suben al
servidor web, para ello modificaremos los siguientes valores:
37
38. upload_max_filesize = 32M
max_execution_time = 120
max_input_time = 120
#emacs /etc/php5/apache2/php.ini
• Creamos un directorio para la instalación de los paquetes de asterisk.
#mkdir /usr/src/asterisk
38
39. • Accedemos al directorio:
#cd /usr/src/asterisk
• librerias o drivers para tarjetas line PRI:
#tar zvxf ~/asterisk/libpri1.4.1.tar.gz
• librerias o drivers para tarjetas ZAPTEL
#tar zvxf ~/asterisk/zaptel1.4.5.1.tar.gz
39
40. • El PBX Asterisk
#tar zvxf ~/asterisk/asterisk1.4.13.tar.gz
• utilerias de asterisk(cdr, rep music on hold. etc)
# tar zvxf ~/asterisk/asteriskaddons1.4.4.tar.gz
• Creamos un directorio para los archivos de sonido IVR, y descomprimimos allí
los archivos que anteriormente descargamos.
#mkdir asterisksounds
#cd asterisksounds
40
42. • compilacion de PRI:
#cd /usr/src/asterisk/libpri-1.4.1
# make & sudo make install
• compilacion de los drivers de Zaptel para el funcionamiento de la tarjeta FXO
#cd /usr/src/asterisk/zaptel-1.4.5.1
#make clean
42
45. #make samples
#make progdocs
compilacion de Utilerias de Asterisk:
#cd /usr/src/asterisk/asteriskaddons1.4.4
#make
45
46. #make install
• Copiamos todos los archivos de sonidos descomprimidos previamente al
directorio por default de sonidos de asterisk:
#cp rf /usr/src/asterisk/asterisksounds/* /var/lib/asterisk/sounds/
• reiniciamos el servidor web apache
# /etc/init.d/apache2 restart
46
47. Configurando archivos de asterisk:
• Editamos el archivo de configuración de Asterisk: /etc/asterisk/asterisk.conf
#emacs /etc/asterisk/asterisk.conf
• Cambiamos el directorio de: astrundir => /var/run/ debe quedar así:
astrundir => /var/run/asterisk
• Guardamos (ctrl+x ctrl+s) cerramos (ctrl+x ctrl+c).
• Asignamos los permisos:
# chown -R asterisk:asterisk /var/run/asterisk
47
48. • Iniciar Asterisk para poder hacer la instalacion de FreePBX:
# asterisk start
• Verificar que Asterisk se haya iniciado:
# ps aux | grep asterisk
Instalacion de FreePBX:
• Ahora que asterisk está instalado y corriendo en nuestra maquina, pasaremos a
instalar el administrador web FreePBX.
# cd /usr/src/freepbx-2.3.1/
48
49. • Instalamos los paquetes para gestión de bases de datos en PHP:
# pear install db
• Si nos sale este pantallazo, hacemos lo siguiente:
# mkdir /var/www/asterisk/
# mkdir /var/www/asterisk/cgibin
# chown asterisk:asterisk /var/www/asterisk
49
50. # ./install_amp
• Después de ejecutar install_amp pedirá los valores para crear el archivo de
configuración.
• En primer lugar introducir el usuario de la base de datos que se creó
previamente:
• Introducir el password del usuario de la base de datos para asterisk que se creó:
Introducir el nombre del servidor de la base de datos, si esta de forma local
intoducir localhost de lo contrario introducir la IP o nombre de dominio del
servidor de base de datos:
50
51. introducir el nombre de usuario del administrador que se usara como admin del
AMI de Asterisk
• Password del usuario admin de AMI, importante para conectar aplicaciones
terceras a Asterisk:
• Ruta de instalacion del Servidor de Asterisk:
• Dirección IP del servidor de Voz sobre IP:
Password para poder operar FOP:
• Solo teclear enter para aceptar la opción por default:
51
52. • Solo teclear enter para aceptar la opción por default:
• Solo teclear enter para aceptar la opción por default:
• Culminado de poner los datos nos aparecera algo similar a esto:
• creamos la carpeta donde se almacenaran los sonidos del IVR:
#mkdir /var/lib/asterisk/sounds/custom
52
53. • configuramos los permisos para el directorio de Asterisk
# chown -R asterisk:asterisk /var/lib/asterisk/
• Editamos el archivo siguiente: /etc/default/asterisk y agregamos una linea como
la que se menciona:
RUNASTERISK=yes
• Ejecutamos amportal:
53
54. Desde el navegador abrimos el administrador web FreePBX:
• Por default no nos pedirá un password, pero hay que ir a administradores y
cambiar el nombre de usuario y password del administrador
• Nos desconectamos del servidor web de FreePBX:
54
55. • Posteriormente editamos el archivo amportal.conf y cambiamos el valor de
AUTHTYPE a database.
# emacs /etc/amportal.conf
AUTHTYPE=database
Volvemos a entrar al servidor de FreePBX y ahora nos pedira un login y
password, por defecto son:
admin
admin
Ahora tenemos habilitado El conmutador de Voz Sobre IP Asterisk Y el
administrador Web de Asterisk FreePBX.
55