Construyendo la central telefono IP.
Vamos a construir una central telefonica Ip que nos permita hacer llamadas en una red local y en la cual se tenga acceso a Internet. El sistema funcionara con archlinux, asterix y freepbx para la administracion de extensiones como central ip utilizaremos una raspberry p modelo B+.
Materiales a utilizar.
- Raspberry B+ Starker Kit $59.99 (No incluye precio de envio)
- Memoria MicroSD Clase 10 8 GB $14.99
- Adaptador de Micro SD ( Venia con la memoria)
- Cable cruzado o directo. (Ya se tenia uno)
- Computadora con sistema operativo Debian Jessie con conexion a Internet
- Router Inalambrico SpeedTouch
- 2 smartphones con sistema operativo android ( Para pruebas )
- Clave HDMI ( Opcional )
Instalando archlinux.
Prepare la memoria SD.
- Inserte la memoria MicroSD en el adaptador de memorias
- Inserte el adapatador en la computadora.
- Ejecute la terminal de debian
- Identifique su dispositivo utilizando el comando lsblk
- En la mayoría de casos, el nombre del dispositivo tiene el formato sdX y las particiones sdXY, donde las X son letras y las Y son el número de la partición, con la tarjeta SD desmontada se procede a crear el esquema de particiones con fdisk
- Iniciar fdisk en la tarjeta: fdisk /dev/sdX
- Elimine las particiones viejas y cree un esquema siguiendo los siguientes pasos:
- Presionar o. Esto elimina las particiones antiguas
- Presionar p. No deben haber particiones.
- Presionar n y después p para crear una partición primaria, 1 para la primer partición en el disco, presione Enter para aceptar el primer sector por defecto, y +100M para el último sector.
- Presionar t, después c para configura el tipo de partición como W95 FAT32 (LBA).
- Presionar n y después p para crear una partición primaria, 2 para la segunda partición en el disco,presione Enter dos veces para aceptar el primer y último sector de la partición.
- Escribir la nueva tabla de particiones y salir presionando w.
Crear y montar el sistema de archivos FAT
- mkfs.vfat /dev/sdX1
- mkdir boot
- mount /dev/sdX1 boot
Crear y montar el sistema de archivos ext4
- mkfs.ext4 /dev/sdX2
- mkdir root
- mount /dev/sdX2 root
Instalando arch linux
Descargar y
extraer Arch Linux como root (no con sudo)
- wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-latest.tar.gz
- bsdtar -xpf ArchLinuxARM-rpi-latest.tar.gz -C root
- sync
Se debe mover los archivos de boot a la primer partición
- mv root/boot/* boot
Desmonte todas las particiones.
- mv root/boot/* boot
Probando la instalacion.
Inserte la memoria dentro del raspberry.
Ahora tiene 2 opciones para probar:
1. Conecte el raspberry mediante la salida HDMI a un monitor y conecte un teclado usb a alguno de los puertos de la raspberry.
Se debe mostrar el splash
Despues de cargar se nos pedira que ingresemos nuestras credenciales por defecto el usuario es: root y la contraseña es: root.
2. Conectarse mediante ssh:
Abra una terminal de linux y digite el siguiente comando: ssh usuario@ip_de_host
Se le pedira las credenciales digite lo mismo que en el punto anterior.
Vale bien mencionar que antes de ejecutar el commando tenemos que tener clara la ip del host puede obtenerla mediante el router o conectando la raspberry a un monitor y ejecutar el comando ifconfig
Instalando asterisk y freepbx.
*Asegurese que su rapberry este conectada a Internet.Preparando arch linux.
Para poder compilar software se requiere de algunas
librerías y compiladores que son fácilmente instalables con
pacman con la siguiente orden:
pacman -S --needed base-devel
Instale package query y yaourt.
Instalando package query.
Ejecute las siguientes ordenes.
wget https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz
wget https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz
tar -xf
package-query.tar.gz
cd package-query
makepkg -s
El comando anterior genera un paquete nombrado con el siguiente formato:
<nombre>-<número de versión>-<número de
revisión>-<arquitectura>.pkg.tar.xz
Y se instala con pacman
pacman -U package-query-1.4-3.pkg.tar.xz
Instalando yaourt.
Ejecute las siguientes ordenes.
wget https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz
tar -xf yaourt.tar.gz
cd yaourt
makepkg -s
pacman -U yaourt.pkg.tar.xz
Instalando las dependencias.
asterisk requiere que varias dependencias, entre ellas
pjproject que requiere unos pasos adicionales.
Primero se instalan las dependencias de pjproject con yaourt
yaourt -S
alsa-lib ffmpeg libsamplerate libsrtp openssl portaudio speex util-linux-ng
e2fsprogs python
El proceso debería completar sin problemas, porque todos los
paquetes están disponibles en los repositorios oficiales en múltiples
arquitecturas (se pudo haber utilizado pacman). Sin embargo pjproject no se
encuentra disponible en la arquitectura ARMv6 y tiene un problema al para
generar un paquete funcional.
yaourt -S pjproject
Justo después de descargar y descomprimir automáticamente el
tarball, ofrece editar el archivo PKGBUILD, se debe agregar la arquitectura
armv6h y modificar una línea de la función package(), agregando un asterisco
(*) justo después de pjsua-*gnu, porque al compilar estas librerías al final
del archivo compilado se agrega la arquitectura y hace que falle el script.
arch=('i686'
'x86_64' 'armv6h')
install -D
-m755 pjsip-apps/bin/pjsua-*gnu* ${pkgdir}/usr/bin/pjsua
Compilando pjproject se tienen las dependencias mínimas para
instalar asterisk.
El listado completo de dependencias puede encontrarse aqui:
https://aur.archlinux.org/packages/asterisk
Instalando asterix.
Ejecute las siguientes ordenes:
yaourt -S asterisk
systemctl start asterisk
systemctl enable asterisk
Configuracion basico de asterisk.
Ubiquese dentro de la consola en este ubicacion: /etc/asterisk
Respalde los archivos: sip.conf, extensions.conf, voicemail.conf
sudo mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf.orig
sudo mv /etc/asterisk/sip.conf /etc/asterisk/extensions.conf.orig
sudo mv /etc/asterisk/sip.conf /etc/asterisk/voicemail.conf.orig
Ahora que los archivos estan respaldados cree un archivo sip.conf mediante la siguiente orden:
Creacion de sip.conf
Cree el archivo:
sudo vi /etc/asterisk/sip.conf
Con un editor de texto agregue el siguiente codigo:
[general]
context=internal
allowguest=no
allowoverlap=no
bindport=5060
bindaddr=0.0.0.0
srvlookup=no
disallow=all
allow=ulaw
alwaysauthreject=yes
canreinvite=no
nat=yes
session-timers=refuse
localnet=192.168.1.0/255.255.255.0
[7001]
type=friend
host=dynamic
secret=123
context=internal
[7002]
type=friend
host=dynamic
secret=456
context=internal
Creacion de extensions.conf
Cree el archivo:
sudo vi
/etc/asterisk/extensions.conf
Con un editor de texto agregue el siguiente codigo:
[internal]
exten =>
7001,1,Answer()
exten =>
7001,2,Dial(SIP/7001,60)
exten =>
7001,3,Playback(vm-nobodyavail)
exten =>
7001,4,VoiceMail(7001@main)
exten =>
7001,5,Hangup()
exten =>
7002,1,Answer()
exten =>
7002,2,Dial(SIP/7002,60)
exten =>
7002,3,Playback(vm-nobodyavail)
exten =>
7002,4,VoiceMail(7002@main)
exten =>
7002,5,Hangup()
exten =>
8001,1,VoicemailMain(7001@main)
exten =>
8001,2,Hangup()
exten =>
8002,1,VoicemailMain(7002@main)
exten =>
8002,2,Hangup()
Creacion de extensions.conf
Cree el archivo:
sudo vi
/etc/asterisk/voicemail.conf
Con un editor de texto agregue el siguiente codigo:
[main]
7001 =>
123
7002 =>
456
Realizar llamada de prueba.
Descargue en los 2 dispositivos android CSIPSimple:
https://play.google.com/store/apps/details?id=com.csipsimple
Ahora cree una cuenta basica.
Agregue los siguientes parametros
Ahora en
Account name: seleccione un numbre de su preferencia
User: la extension creada en el archivo sip.conf
Server: La direccion IP del dispositivo raspberry
Password: El agregado en secret en el archivo sip.conf
Registre las 2 extensiones y marque!!
Central telefonica terminada
