Qué es Asterisk? Es un framework open source (bajo licencia GPL V2) que nos permite construir aplicaciones de comunicación, es patrocinada por digium y creada inicialmente por Mark Spencer, provee funcionalidades de una central telefónica (PBX).
Digium/Sangoma son las empresa que promueve el software e invierte en ambos aspectos, el desenvolvimiento de código fuente y en hardware de telefonía de bajo costo que funciona con Asterisk, aunque podemos conectarlo a la red pública de telefonía PSTN (Public Service Telephony Network) con o sin hardware.
Instalación de Asterisk.
Al momento de realiza este manual existe la versión 17 de Asterisk, pero la versión 16 es la de lago soporte, por lo cual, es la que estaremos utilizando.
Requerimientos
Paquetes: Los requerimientos para instalar Asterisk cambian de acuerdo con la necesidad del usuario y la distribución que utilicemos, por lo cual, los requerimientos indicados mas abajo deben ser visto como una guía de iniciación y no como el total de los paquetes que se requieren para completar todos los requisitos.
Recuerde que estos comando son referencia, puede ir directamente a la seccion Requerimiento de paquetes para compilar fuera de esta tabla, donde encontrar las pasos para instalar asterisk en Centos 8 Centos: Opcion 1 [root@centosasterisk ~]# dnf -y install "@Development Tools" Opcion 2 [root@centosasterisk ~]# dnf -y install gcc wget ncurses-devel libtermcap-devel kernel-devel kernel-smp-devel gcc-c++ openssl-devel newt-devel zlib-devel unixODBC-devel libtool wget make kernel kernel-headers sqlite-devel kernel kernel-headers sqlite-devel [root@centosasterisk ~]# reboot #Reiniciamos el ordenador. Debian: [root@debianasterisk ~]# apt-get install build-essential subversion libncurses5-dev libssl-dev libxml2-dev vim-nox linux-source wget linux-headers-`uname -r` unixodbc-dev [root@debianasterisk ~]# reboot #reiniciamos el ordenador.
Procesador: Asterisk utiliza el procesador para procesar las llamadas, esto quiere decir que de acuerdo a nuestra necesidad sera el procesador que instalaras. |
Requerimiento de paquetes para compilar: libpri, dahdi y asterisk
Nota: nosotros vamos a crear un directorio de nombre asterisk-src en /usr/src/ para descargar, extraer y compilar los paquetes siguiendo el siguiente orden: dahdi, libpri y por último Asterisk, usaremos wget y/o curl para descargar los fuentes de digium
Actualizamos el sistema y reiniciamos
[root@server src]# dnf -y update
[root@server src]# systemctl reboot
Iniciamos con la instalación de las dependencia para nuestra PBX
[root@server src]# dnf -y install epel-release wget curl bzip2 tar sqlite-devel ncurses-devel systemd-devel "@Development Tools"
[root@server src]# mkdir /usr/src/asterisk-src
[root@server src]# cd /usr/src/asterisk-src
[root@server src]# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
[root@server src]# wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
[root@server src]# curl -C - -O http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
[root@server src]# for x in /usr/src/asterisk-src/*.gz;do tar zxvf $x;done
[root@server src]# cd /usr/src/asterisk-src/asterisk-16.*/
[root@server src]# ./contrib/scripts/install_prereq install
[root@server src]# ./contrib/scripts/get_mp3_source.sh
Nota: En el momento de hacer este manual, la versión de Centos 8 no tenia en su repositorios el paquete libedit-devel, por lo cual, fue necesario descargarlo y compilarlo, aquí les dejos los comandos:
[root@server src]# cd /usr/src/asterisk-src/
[root@server src]# wget http://thrysoee.dk/editline/libedit-20190324-3.1.tar.gz
[root@server src]# tar zxvf libedit-20190324-3.1.tar.gz && cd libedit-20190324-3.1/
[root@server src]# ./configure && make && make install
Compilando Dahdi y Dahdi Tools
[root@srvasterisk src]# cd /usr/src/asterisk-src/ && tar xzvf dahdi-linux-*-current.tar.gz #Ojo, Ejecute esta linia solo si el paquete no esta descomprimido
[root@server src]# cd /usr/src/asterisk-src/dahdi-linux-complete*/
[root@server src]# make clean
[root@server src]# make
[root@server src]# make install
[root@server src]# make install-config
Compilando Libpri
[root@srvasterisk src]# cd /usr/src/asterisk-src/ && tar xzvf libpri-current.tar.gz #Ojo, Ejecute esta linia, solo si el paquete no esta descomprimido [root@server src]# cd /usr/src/asterisk-src/libpri-*/
[root@server src]# make clean
[root@server src]# make && make install
Compilando Asterisk
[root@server src]# cd /usr/src/asterisk-src/ && tar xzvf asterisk-16-current.tar.gz #Ojo, Ejecute esta linia, solo si el paquete no esta descomprimido
[root@server src]# cd /usr/src/asterisk-src/asterisk-*/
[root@server src]# ./configure
Si las dependencias básicas se instalaron correctamente, el comando anterior terminara como la siguiente imagen, indicando que se completo satisfactoriamente.
En caso de que tenga algún problema con la dependencia correspondiente al paquete jansson, por ejemplo, Cuando instalamos en Centos 7, frecuentamos el error por dependencia del paquete jansson-devel, o simplemente quieres indicarla a Asterisk que instale y compile el paquete Jansson, ejecute el archivo configure con el siguiente parámetro ./configure --with-jansson-bundled
[root@server src]# make menuconfig
Ejecutado el comando anterior, nos mostrara un menú como la imagen, para que personalicemos la instalación, activando y desactivando bajo demanda.
[root@server src]# make && make install
Completados los comandos anteriores, nos mostrara un mensaje el de la imagen indicando que se completo la instalación de Asterisk y nos sugiere otros.
[root@server src]# make samples && make config && make install-logrotate && ldconfig
Aunque para los fines de este documento utilizamos make samples, igualmente puedes usar make basic-pbx y tendras la configuración de una pbx básica.
Cambiando el usuario con que ejecutaremos Asterisk - Agregando un usuario para Asterisk
Creamos un usuario de nombre asteriskpbx
[root@server src]# useradd -m -c "Asteriskpbx user" asteriskpbx
Cambiamos los permisos
[root@server src]# chown -R asteriskpbx:asteriskpbx /usr/lib/asterisk/
[root@server src]# chown -R asteriskpbx:asteriskpbx /var/lib/asterisk/
[root@server src]# chown -R asteriskpbx:asteriskpbx /var/spool/asterisk/
[root@server src]# chown -R asteriskpbx:asteriskpbx /var/log/asterisk/
[root@server src]# chown -R asteriskpbx:asteriskpbx /var/run/asterisk
[root@server src]# chown asteriskpbx:asteriskpbx /usr/sbin/asterisk
[root@server src]# chown -R asteriskpbx:asteriskpbx /var/lib/asterisk/sounds/
Editamos el archivo asterisk.conf con un editor de texto para indicarle con que usuario inicia Asterisk,
Ejecutamos el siguiente comando y hace la ediccion por nosotros, asumiendo que el usuarios creado es el indicado en este manual:
[root@server src]# sed -i.org 's/\(.*runuser.*=\).*/runuser = asteriskpbx \t\t; The user to run as./g' /etc/asterisk/asterisk.conf
[root@server src]# sed -i 's/\(.*rungroup.*=\).*/rungroup = asteriskpbx \t\t; The group to run as./g' /etc/asterisk/asterisk.conf
Entramos en el archivo /etc/asterisk/asterisk.conf con el editor de texto vim y buscamos la líneas con los parámetros runuser y rungruop y lo modificamos en caso que no estén como estos parámetros:
runuser = asteriskpbx
rungroup = asteriskpbx
Configurando Asterisk para que trabaje con selinux activo y con el mismo comando le hacemos un Backup al archivo.
[root@server src]# setenforce 0
[root@server src]# restorecon -vr /var/lib/asterisk/
[root@server src]# restorecon -vr /sbin/
[root@server src]# restorecon -vr /etc/asterisk*
[root@server src]# setsebool -P daemons_use_tty 1
[root@server src]# setenforce 1
[root@server src]# sudo grep -i sealert /var/log/messages
[root@server src]# sed -i.org 's/\(^SELINUX=\).*/\SELINUX=enforcing/g' /etc/sysconfig/selinux
[root@server src]# sed -i.org 's/\(^SELINUX=\).*/\SELINUX=enforcing/g' /etc/selinux/config
En caso de que tengan algún problema con selinux, posiblemente sea porque algún archivos aun no este en el contexto indicado, la solución mas simples es colocar el selinux en modo permissive y con el mismo comando le hacemos un Backup al archivo.
[root@server src]# setenforce 0
root@server src]# sed -i.org 's/\(^SELINUX=\).*/\SELINUX=permissive/g' /etc/sysconfig/selinux
[root@server src]# sed -i.org 's/\(^SELINUX=\).*/\SELINUX=permissive/g' /etc/selinux/config
Si quiere ver la configuracino realizada y aplicada de los comandos de selinux anteriores debes ejecutar el commando siguiente:
root@server src]# sestatus
Nos aseguramos de que el firewall esta iniciado y le agregamos al firewall una configuración básica para que permita los puertos SIP y RTP por UDP.
[root@server src]# systemctl start firewalld
[root@server src]# systemctl enable firewalld
[root@server src]# firewall-cmd --zone=public --add-port=5060/udp --permanent
[root@server src]# firewall-cmd --zone=public --add-port=10000-20000/udp --permanent
[root@server src]# firewall-cmd --reload
Otros puertos o canales (IAX, AMI o sip por tcp via el pueto 5061) que posiblemente necesitaras permitirle la conexión al servidor Asterisk.
[root@server src]# firewall-cmd --zone=public --add-port=4569/udp --permanent
[root@server src]# firewall-cmd --zone=public --add-port=5838/tcp --permanent
[root@server src]# firewall-cmd --zone=public --add-port=5060/tcp --permanent
[root@server src]# firewall-cmd --zone=public --add-port=5061/udp --permanent
root@server src]# firewall-cmd --zone=public --add-port=5061/tcp --permanent
[root@server src]# firewall-cmd –reload
Si quiere ver la configuracino realizada y aplicada de los caomandos del firewall anteriores debes ejecutar el commando siguiente:
root@server src]# firewall-cmd --list-all
Iniciando y configurando Asterisk para que inicie con el sistema.
[root@server src]# systemctl enable asterisk
[root@server src]# systemctl start asterisk
[root@server src]# systemctl status asterisk
Perfecto, tenia problemas de conexión en el firewall con un centos 8 y veo que ya cambio del uso de iptables.
He estado haciendo pruebas con los protocolos SIP e IAX y todo va super bien.
Muchas gracias.