Enviado por admin el
En esta entrada veremos como instalar Asterisk 13 en un Raspberry Pi 3 con sistema operativo Raspbian Stretch ( Debian 9).
Primero descargamos la imagen del sistema operativo en nuestro computador partiendo desde este enalce; descomprimimos el archivo y, en el caso de Windows, con Win32DiskImager copiamos la imagen en la memoria SD que luego vamos a insertar en la ranura del Raspberry Pi.
Insertamos la tarjeta de memoria en el Raspberry, lo conectamos a nuestra red local, a un televisor/pantalla a través de la salida HDMI y a un teclado USB. Es indispensable realizar este paso porque la instalación por defecto no tiene activado el servidor SSH pues no podemos conectarnos desde remoto. Conectamos la alimentación y cuando el sistema nos pide usuario escribimos pi y contraseña raspberry. Lo primero que hacemos es modificar la contraseña del usuario pi:
passwd
Luego configuramos una contraseña para el usuario root:
sudo passwd root
luego modificamos la configuración de SSH:
sudo nano /etc/ssh/sshd_config
Modificamos esta linea:
PermitRootLogin without-password
para que quede:
PermitRootLogin yes
Guardamos los cambios y activamos y reiniciamos el servicio:
systemctl enable ssh
systemctl start ssh
Ya se puede acceder vía SSH desde otro dispositivo. El paso a seguir es configurar una IP local estática que quede dentro del rango permitido por la configuración de la LAN/DHCP del router:
nano /etc/dhcpcd.conf
al final del archivo, añadimos:
interface eth0
static ip_address=192.168.1.89/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
192.168.1.89 es la IP estática que asignamos y 192.168.1.1 es la IP del Router. Guardamos los cambios y reniciamos el servidor:
reboot
Ahora ya podemos volver a acceder desde cualquier computador vía SSH con usuario root y la contraseña que hemos escogido. Como primera tarea, actualizamos el sistema:
apt-get update
apt-get upgrade
Luego ejecutamos la utilidad que permite una configuración más detallada del sistema operativo:
raspi-config
Empezamos modificando el nombre de dominio del servidor, Opción 2; luego modificamos la configuración del idioma y huso horario con la Opción 4. Una vez terminada esta parte, salimos de la utilidad con la opción <Finish>. Reiniciamos nuevamente el sistema:
reboot
Ahora podemos empezar con la instalación de Asterisk PBX 13. Primero unas dependencias:
apt-get install libsqlite3-dev libncurses5-dev libxml2-dev libnewt-dev libssl-dev libiksemel-dev libgnutls28-dev libcurl4-openssl-dev libspandsp2 libspandsp-dev mysql-client libmariadbd18 libmariadbd-dev mariadb-server unixodbc-dev unixodbc libportaudio-dev libical-dev libneon27-dev libportaudio-dev libspeex-dev speex libvorbis-dev libsrtp0-dev iptables-persistent libsox2 libsox-dev
apt-get install libuuid1 uuid uuid-dev libjansson4 libjansson-dev subversion sendmail sox ngrep
Descargamos la ultima versión de la rama 13 de Asterisk:
cd /usr/src/
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13.17.2.ta...
descomprimimos y entramos en la carpeta creada:
tar -xf asterisk-13.17.2.tar.gz
cd asterisk-13.17.2
Si queremos instalar también el nuevo canal chan_pjsip:
./configure --libdir=/usr/lib --with-pjproject-bundled
sin el canal chan_pjsip:
./configure --libdir=/usr/lib
make menuconfig
Seleccionamos los siguientes módulos, menú Add-ons:
Los paquetes de las locuciones audio que necesitamos en el menú Core Sound Packages. Lo mismo para el menú Extras Sound Packages. Guardamos los cambios con “Save & Exit” y iniciamos la compilación de las fuentes:
contrib/scripts/get_mp3_source.sh
make
alrededor de 25 minutos después:
make install
make samples
make config
para las locuciones audio en español:
mkdir /var/lib/asterisk/sounds/es
cd /var/lib/asterisk/sounds/es
wget https://www.asterisksounds.org/sites/asterisksounds.org/files/sounds/es-...
wget https://www.asterisksounds.org/sites/asterisksounds.org/files/sounds/es-...
unzip asterisk-sounds-core-es-AR-1.11.3.zip
unzip asterisk-sounds-extra-es-AR-1.11.3.zip
Iniciamos Asterisk:
systemctl start asterisk
entramos en la consola:
asterisk -rvvvvvvvvvvvvvvvvvvvv
Salimos de la consola:
CLI> quit
Paramos Asterisk
systemctl stop asterisk
y creamos base datos y tabla para guardar los CDR (Los registros de las llamadas)
systemctl enable mariadb
systemctl start mariadb
Creamo la contraseña del usuario root de MariaDB y lo ponemos en seguridad:
mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Accedemos con el cliente utilizando la contraseña configurada para el usuario root:
mysql -u root -psesamo
Creamos la base de datos para los CDR:
MariaDB [(none)]> create database asteriskcdr;
Creamos usuario que tenga acceso a la base de datos y relativa contraseña:
MariaDB [(none)]> Grant All Privileges on asteriskcdr.* to asterisk@'localhost' identified by 'sesamo';
seleccionamos la base de datos y creamos la tabla:
MariaDB [(none)]> use asteriskcdr
MariaDB [asteriskcdr]> CREATE TABLE cdr (
id bigint(20) NOT NULL auto_increment,
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 '',
PRIMARY KEY (`id`),
KEY callerid (clid)
);
Salimos del clientes y configuramos el archivo de asterisk que permite la conexión a la tabla del CDR:
MariaDB [asteriskcdr]> quit
mv /etc/asterisk/cdr_mysql.conf /etc/asterisk/cdr_mysql.conf.old
nano /etc/asterisk/cdr_mysql.conf
copiamos las lineas que siguen:
[global]
hostname=127.0.0.1
dbname=asteriskcdr
table=cdr
password=sesamo
user=asterisk
port=3306
sock=/var/run/mysqld/mysqld.sock
Gurdamos los cambios y iniciamos Asterisk:
systemctl start asterisk
entramos en la consola:
asterisk -rvvvvvvvvvvvvvv
averiguamos si la conexión está funcionando correctamente:
CLI> cdr mysql status
Connected to asteriskcdr@127.0.0.1, port 3306 using table cdr for 5 seconds.
Wrote 0 records since last restart.
Seguimos instalando un servidor DNS ya que puede resultar cómodo tenerlo en algunos escenarios de instalación de Asterisk:
apt-get install bind9
Lo activamos para se inicie con el sistema:
systemctl enable bind9
Modificamos solamente un archivo:
nano /etc/bind/named.conf.options
cambiando este bloque:
// forwarders {
// 0.0.0.0;
// };
Para que quede:
forwarders {
208.67.222.222;
208.67.220.220;
};
para resolver los nombres de dominio utilizamos las dos IP de OpenDNS. Luego modificamos esta linea:
dnssec-validation auto;
para que quede:
dnssec-validation no;
Guardamos los cambios iniciamos el servicio:
systemctl start bind9
Revisamos el archivo de LOG para averiguar si hay errores:
tail -100f /var/log/syslog
Se le dice al sistema que cada consulta para resolver un nombre de dominio se realizará en local:
nano /etc/resolvconf.conf
modificando esta linea:
#name_servers=127.0.0.1
para que quede:
name_servers=127.0.0.1
Guardamos los cambios y reiniciamos el sistema:
reboot
Volvemos a acceder y averiguamos que efectivamente el sistema resuelve los nombres de dominios localmente:
nano /etc/resolv.conf
debería aparecer:
# Generated by resolvconf
nameserver 127.0.0.1
Cerramos el archivo y volvemos a abrir el siguiente:
nano /etc/dhcpcd.conf
modificamos la ultima linea:
static domain_name_servers=192.168.1.1
para que quede:
static domain_name_servers=127.0.0.1
Guardamos los cambios. En el caso en que queremos provisionar los teléfonos SIP directamente desde el RaspBerry, utilizando un servidor TFTP, tenemos que seguir estos pasos:
Instalar el servidor TFTP (en este caso atftpd):
apt-get install atftpd
Crear la carpeta con relativos permisos donde guardaremos las configuraciones de los teléfonos que se provisionarán vía TFTP:
mkdir /tftpboot
chmod -R 777 /tftpboot
chown -R nobody /tftpboot
Modificar la configuración del servidor:
nano /etc/default/atftpd
modificar esta linea:
USE_INETD=true
para que quede:
USE_INETD=false
(no se utilizará ATFTPD a través del servidor INET). Luego modificar esta linea:
OPTIONS="--tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /srv/tftp"
para que quede:
OPTIONS="--tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /tftpboot --logfile=/var/log/atftp.log "
Guardar los cambios y crear el archivo de log como indicado en la linea de configuración de ATFTPD con respectivos permisos:
touch /var/log/atftpd.log
chmod 644 /var/log/atftpd.log
En el caso en que el servicio inetd esté corriendo:
ps aux | grep inetd
root 1223 0.0 0.3 5664 2936 ? Ss 15:17 0:00 /usr/sbin/inetd
root 1326 0.0 0.0 5996 528 pts/0 S+ 15:20 0:00 grep inetd
se para y se deshabilita por defecto:
systemctl stop inetd
systemctl disable inetd
Removed symlink /etc/systemd/system/multi-user.target.wants/inetd.service.
Iniciar el servidor TFTP:
/etc/init.d/atftpd restart
Averiguar que esté corriendo correctamente:
netstat -lnp | grep ":69 "
udp 0 0 0.0.0.0:69 0.0.0.0:* 1383/atftpd
ps aux | grep atftpd
nobody 1383 0.0 0.1 3080 1576 ? Ss 15:20 0:00 /usr/sbin/atftpd --daemon --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /tftpboot --logfile=/var/log/atftp.log
root 1420 0.0 0.0 5996 548 pts/0 S+ 15:21 0:00 grep atftpd
Fin
Comentarios recientes