sábado, 6 de diciembre de 2014

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:
  1. Presionar o. Esto elimina las particiones antiguas
  2. Presionar p. No deben haber particiones.
  3. 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.
  4. Presionar t, después c para configura el tipo de partición como W95 FAT32 (LBA).
  5. 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.
  6. Escribir la nueva tabla de particiones y salir presionando w.
Crear y montar el sistema de archivos FAT
  1. mkfs.vfat /dev/sdX1
  2. mkdir boot
  3. mount /dev/sdX1 boot

Crear y montar el sistema de archivos ext4

  1. mkfs.ext4 /dev/sdX2
  2. mkdir root
  3. mount /dev/sdX2 root

Instalando arch linux


Descargar y extraer Arch Linux como root (no con sudo)

  1. wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-latest.tar.gz
  2. bsdtar -xpf ArchLinuxARM-rpi-latest.tar.gz -C root
  3. sync

Se debe mover los archivos de boot a la primer partición
  1. mv root/boot/* boot

Desmonte todas las particiones.
  1. 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
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

 Ejecute las siguiente ordenes:

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



viernes, 21 de noviembre de 2014

Centralita IP SV.


Somos un grupo de estudiantes de la carrera de Ingenieria de Sistemas Informaticos cursando la carrera de Comunicaciones I de la Universidad de El Salvador.

Nuestro objetivo es crear una central telefonica ip utilizando los conocimientos de la asignatura y con tecnologias libres como son asterix y el open hardware raspberry pi.


Aprenda junto a nosotros a crear su propia central ip!!

En este blog le mostraremos paso a paso como crear su propia central ip utilizando open hardware y tecnologias libres. ¿ Que espera ? Ahora es el momento!!