Está en la página 1de 18

 

Raspberry Pi 2 como punto de acceso 
(AP) y central privada de conmutación 
(PBX) 
 

 
Mini guía para la puesta en marcha de un sistema telefónico VoIP 
basado en una infraestructura WLAN 

 
 
Autor: ​
Vicente Escudero 

Índice 
 
 
Índice 
1 Presentación 
2 Distribución RasPBX. Descarga y volcado en tarjeta micro SD 
3 Acceso remoto 
4 Puesta al día del SO y ajustes para trabajar sin acceso a internet 
5 Añadir el driver del adaptador WiFi 
6 Prueba de comunicación WiFi. Conexión a un punto de acceso 
7 Raspberry Pi 2 como punto de acceso 
7.1 Configurar el servidor DHCP 
7.2 Configurar el adaptador WiFi con una IP estática 
7.3 Configurar el punto de acceso 
7.4 Configuración NAT 
8 Configuración de la PBX. Extensiones y enlace 
 
 
   

1 Presentación 
 
Esta guía recoge los pasos necesarios para poner en marcha una central PBX basada en 
Asterisk capaz de dar servicio a un grupo reducido de terminales inalámbricos (​ softphones 
ejecutándose en un PC, ​ smartphones ​ y/o ​ tablets)​
 dentro del ámbito de cobertura de un 
adaptador WiFi ­ USB conectado directamente al equipo que ejecuta el SO con la 
software​
distribución Linux que tiene el ​  que gestiona el tráfico telefónico. 
 
Los componentes ​ hardware​ software​
 y ​  utilizados en este sistema son: 
 
● Raspberry Pi 2 modelo B + Fuente de Alimentación  
● Memoria micro SD­CARD 4GB HC I Class 4 
● Adaptador WiFi ­ USB: WLAN 11g Zaapa (zd1211rw) 
● RasPBX​  ​
raspbx­17­10­2015.zip 
● Driver​  propietario (non­free) para Debian 8 (jessie) del adaptador WiFi 
● Paquetes adicionales para la creación de un punto de acceso inalámbrico 
 

 
 

 
 
 

 
 
Aprovecho para agradecer a aquellos que, desinteresadamente, han puesto a disposiciones 
de todos sus propias experiencias, en forma de blogs, páginas web o documentos en 
formato .PDF, con información relativa a los contenidos que aquí aparecen y que sin su 
ayuda nunca hubiese sido posible completar este proyecto. Aún sin disponer de su 
autorización expresa (pido perdón por adelantado) haré referencia a las siguientes fuentes 
de información que me fueron útiles: 
 
● RasPBX: ​ Asterisk for Raspberry Pi​
 (documentación) 
● Tutorial de instalación y puesta en marcha desde OSX. ​ Página de Mike 
● Tutorial: Cómo crear un punto de acceso con Raspberry Pi. De ​ GeekyTheory 
 

2 Distribución RasPBX. Descarga y volcado en 
tarjeta micro SD 
 
El sistema operativo elegido para este proyecto incluye el ​software​  encargado de hacer 
funcionar una PBX VoIP, basada en Asterisk, al encender el equipo (conectar la 
alimentación). Será la distribución Linux ​RasPBX​, especialmente adaptada para funcionar 
dentro de un dispositivo Raspberry Pi. 
 
Desde el sitio web ​
http://www.raspberry­asterisk.org​ accedemos al área de descarga donde 
tomaremos la versión más reciente de este SO (en este momento está disponible la versión: 
raspbx­17­10­2015.zip​ ) con la idea de tener compatibilidad con la variante más reciente de 
este ordenador (Raspberry Pi 2  ­modelo B­). 
 
Al tratarse de una distribución que viene de ​Raspbian​ (rama procedente, a su vez, del 
proyecto Debian 8 ­Jessie­) contamos con la ventaja de tener a nuestra disposición un 

montón de paquetes compatibles con RasPBX. Por ejemplo los relacionados con los drivers 
del adaptador WiFi, el punto de acceso ó el servidor DHCP que utilizaremos más adelante. 
 
En realidad lo que acabamos de bajarnos es la imagen (fichero .IMG) de una unidad de 
almacenamiento de 4GBytes con el contenido, en bruto (datos + completa estructura interna 
incluyendo el sector de arranque y particiones), de una unidad de memoria SD de esta 
capacidad con el sistema operativo y programas, asterisk y FreePBX entre otros, ya 
instalados. 
 
Siguiendo las indicaciones de ​
Mike​, vuelco el contenido descomprimido del archivo en la 
unidad de memoria con la orden: ​# dd if=raspbx­17­10­2015.img of=/dev/disk1 bs=2m 
desde el directorio donde tengo el archivo. Aunque si trabajamos en linux, la llamada varía 
ligeramente: ​
#dd if=raspbx­17­10­2015.img of=/dev/sdb bs=2M 
 

 
 
Ambos comandos se ejecutarán con privilegios de administrador (​ root​).  
 
La ubicación destino (por ejemplo, ​ /dev/sdb​ ) representa, dentro del árbol de directorios del 
SO donde estoy trabajando, la unidad micro SD de almacenamiento. Para conocer su 
localización al conectarla a nuestro ordenador nos ayudaremos de la orden de consola: 
 
# diskutil list​
 (OSX). ¡Ojo! no hay que olvidar desmontar la unidad antes de 
proceder al traslado de la imagen a la memoria SD con ​ #unmountdisk /dev/diskN​ . 
 
y en linux: ​
# fdisk ­l​
 (o ​
#fdisk ­l /dev/sdX​). Desmontaremos con ​ #umount 
/dev/sdXN​ . 
 
Esperamos a que termine este proceso (suele tardar varios minutos) y pasamos la memoria 
micro SD a la raspberry pi. Por último, conectamos un cable ​ ethernet​  desde nuestra LAN1 y 
enchufamos su alimentación para arrancar el ordenador con el “disco duro” actualizado.  

1
 Un servidor DHCP local asignará una dirección IP a la Raspberry Pi 2.   

3 Acceso remoto 
 
Con el fin de completar la instalación del resto del software necesario para nuestro proyecto, 
ahora necesitamos acceder a la consola de RasPBX desde nuestro equipo utilizando el 
protocolo SSH. En el sistema operativo Windows ® es frecuente usar la herramienta PuTTY 
para este cometido aunque aquí se mostrará el proceso desde linux y OSX. 
 
No es necesario conocer la dirección IP recibida por el dispositivo recién conectado ya que 
por defecto podemos referenciarlo como “raspbx” (linux) ó “raspbx.local” (OSX). 
 

 

Al entrar con el perfil de “root” (administrador) añadiremos su contraseña (por defecto es 
“​
raspberry​ ”). 

4 Puesta al día del SO y ajustes para trabajar sin 
acceso a internet 
 
Primero, actualizaremos el sistema operativo con la orden: ​ #raspbx­upgrade 
 
A continuación, con el propósito de evitar inestabilidades del sistema durante su 
funcionamiento, llevaremos a cabo algunos ajustes recomendados en la documentación 
mostrada en el ​sitio web​
 de RasPBX (ver apartado: ​ 3. Running RasPBX without Internet 
connection​
): 
 
● #apt­get install fake­hwclock ​ Instala el paquete fake­hwclock 
● #apt­get install dnsmasq ​ Instala el paquete dnsmasq 
● #mv /etc/resolv.conf /etc/resolv.conf.dnsmasq ​ Renombra resolv.conf 
● #nano /etc/dnsmasq.conf ​ Edita el archivo dnsmasq.conf 
○ Cambia la referencia al fichero resolv­file: 
resolv­file=/etc/resolv.conf.dnsmasq 
● #nano /etc/resolv.conf ​ Crea el archivo resolv.conf 
○ Incluye el contenido:​ nameserver 127.0.0.1 
● #/etc/init.d/dnsmasq restart ​ Reinicia el servicio dnsmasq 

 

5 Añadir el driver del adaptador WiFi 
 
Como es fácil suponer, este apartado está muy ligado dispositivo físico con el que 
contemos. Obtendremos los datos que necesitamos para localizar el manejador de este 
elementos consultando la información suministrada por el comando ​ #lsusb​ que 
2
necesitaremos tener en nuestro sistema : 

 
 
Con esta información, y un poco de paciencia en la búsqueda de más detalles sobre este 
hardware en internet, encontramos el driver para la distribución Debian 8 “Jessie”, válido 
también para nuestra distribución, aunque se suministra dentro de un repositorio de 
paquetes3 que no viene instalado por defecto. Por tanto, primero hay que hacerle saber al 
SO dónde encontrar la aplicación y, a continuación, proceder a su instalación. 
 
En el fichero /etc/sources.list añadimos la línea:  
 
deb http://http.debian.net/debian/ jessie main contrib non­free  
 
con el editor nano: ​#nano /etc/apt/sources.list 
 
 

2
 Si no existe, procedemos a instalarlo con: ​
#apt­get install usbutils​
 (como administrador ­root­). 
3
 Librerías ordenadas de programas (paquetes, en linux) desde donde el SO descargará las 
aplicaciones solicitadas por el administrador. 

 
Actualizamos la lista de paquetes: 

 
 
Y pasamos a ejecutar: ​#apt­get install firmware­zd1211​. Reiniciamos el SO con ​
#reboot​
 y 
verificamos el buen funcionamiento del tándem ​driver­​
adaptador.  

6 Prueba de comunicación WiFi. Conexión a un 
punto de acceso 
 
En este punto del proceso vamos a comprobar que es posible comunicar inalámbricamente 
nuestra Raspberry Pi con un punto de acceso conocido (y los datos de acceso disponibles) 
confirmando, de este modo, que ya se encuentra completamente operativo el ​stick wireless​

Antes de nada añadimos aplicaciones para gestionar las comunicaciones inalámbricas en el 
ordenador con ​
#apt­get install wireless­tools 
 

 
10 

Y ejecutamos la herramienta que nos informa del estado actual del adaptador inalámbrico 
recién instalado, ​
#iwconfig​
:

  
Establecemos ahora la configuración lógica de ​wlan0​  para después conectar el equipo 
automáticamente a la red a través de este medio no guiado. Para ello es necesario editar el 
fichero ​
/etc/network/interfaces​
 y añadir los datos requeridos para enlazar con el AP, por 
ejemplo:  
 
● Identificador SSID: ​Orange­fb6c 
● Contraseña: ​ A61D1E_My_PASSWORD__9AF31E3C 
 
Con los siguientes datos de configuración: 
 

 
 
11 

 
Y hacemos saber al sistema que deseamos cargar esta configuración manualmente 
escribiendo: ​
#ifup wlan0​
 (recuerda que ​
#ifdown wlan0​
 realiza la función contraria). 

 
Si todo salió bien (en ocasiones es necesario reiniciar el sistema con ​
#reboot​
), ahora 
tendremos una segunda vía de acceso a Raspberry Pi; por cable y de manera inalámbrica.  

7 Raspberry Pi 2 como punto de acceso 
 
La última etapa de este viaje consiste en convertir el equipo en una central privada de 
conmutación que además se comporte como un punto de acceso WiFi al cual se van a 
software​
conectar los teléfonos ​  que correrán, principalmente, en dispositivos portátiles como 
tablets​ smartphones​
 o ​  con aplicación de teléfono SIP (ó IAX). 
 
Instalaremos los programas que ampliarán las posibilidades de la Raspberry Pi 2 con la 
incorporación de un servidor DHCP y la capacidad para trabajar como AP en una red WLAN 
usando la orden  ​#apt­get install hostapd isc­dhcp­server​ . Reajustaremos los ficheros de 
configuración que dictan el funcionamiento del dispositivo WiFI adaptándolo a las nuevas 
funcionalidades. 
 
12 

7.1 Configurar el servidor DHCP 
 
Entramos con el editor en ​ /etc/dhcp/dhcpd.conf​ y dejamos comentadas las líneas: 
 
# option domain­name "example.org"; 
# option domain­name­servers ns1.example.org, ns2.example.org; 
 
Añadiendo al final: 
 
  subnet 192.168.88.0 netmask 255.255.255.0 { 
       range 192.168.88.10 192.168.88.50; 
       option broadcast­address 192.168.88.255; 
       option routers 192.168.88.1; 
       default­lease­time 600; 
       max­lease­time 7200; 
       option domain­name "local"; 
       option domain­name­servers 8.8.8.8, 8.8.4.4; 

 
Donde establecemos la futura dirección de red, máscara de subred y rango de direcciones 
IP a asignar además de otros parámetros. 
 
Dentro del fichero ​/etc/default/isc­dhcp­server​ INTERFACES=”” ​
 sustituimos ​ por 
INTERFACES=”​ wlan0​”​

 

7.2 Configurar el adaptador WiFi con una IP estática 
 
Tras desactivar el adaptador con ​#ifdown wlan0​, editamos de nuevo el archivo de 
configuración de las interfaces de red con ​
#nano /etc/network/interfaces​ y dejamos su 
contenido así: 
13 

 
Recuerda que si ya tuvieras el dispositivo conectado, puedes cambiar su IP manualmente 
con ​
#ifconfig wlan0 192.168.88.1 

7.3 Configurar el punto de acceso 
 
Terminado el servidor DHCP, nos ponemos manos a la obra con el ajuste de lo que será 
nuestro punto de acceso. Aquí incluiremos los datos relativos al SSID, contraseña, canal, 
modo y encriptación de datos. Todo esto quedará recogido en el archivo 
/etc/hostapd/hostapd.conf,​ por ejemplo:

 
14 

Y a continuación habilitamos este archivo descomentando la línea 
#DAEMON_CONF=”/etc/hostapd/hostapd.conf”​  del archivo ​
/etc/default/hostapd​
 como 
se ve en la imagen: 

7.4 Configuración NAT 
 
 
Si la comunicación telefónica gestionada por la PBX queremos que alcance algún terminal 
telefónico ubicado en internet (más allá de nuestro ​router​ . Por ejemplo, desde una cuenta 
de un proveedor SIP presente en una red WAN) hay que establecer un vínculo entre el 
medio guiado ​ eth0​ y el inalámbrico ​
wlan0​ que posibilite a los paquetes del tráfico telefónico 
el tránsito hacia su destino a través del adaptador adecuado. 
 

 
 
15 

Para ello primero añadimos la línea ​
net.ipv4.ip_forward=1​
 al final del fichero 
/etc/sysctl.conf​

 
 
Después escribimos, como root, las órdenes: 
 
● #sh ­c "echo 1 > /proc/sys/net/ipv4/ip_forward"  
● #iptables ­t nat ­A POSTROUTING ­o eth0 ­j MASQUERADE 
● #iptables ­A FORWARD ­i eth0 ­o wlan0 ­m state ­­state 
RELATED,ESTABLISHED ­j ACCEPT  
● #iptables ­A FORWARD ­i wlan0 ­o eth0 ­j ACCEPT   
● #sh ­c "iptables­save > /etc/iptables.ipv4.nat"  
 
Y añadimos la línea ​
up iptables­restore < /etc/iptables.ipv4.nat​
 al final del archivo 
/etc/network/interfaces​: 

 
Comprobamos si el punto de acceso arranca sin errores con:  
 
#hostapd /etc/hostapd/hostapd.conf 
16 

Y corregimos aquellos errores que impidan su correcto funcionamiento. 
 
Para terminar, establecemos en el sistema dos nuevos servicios (el punto de acceso y 
servidor DHCP configurados anteriormente) para que sean arrancados cada vez que el SO 
se ponga en marcha: 
 
Los iniciamos: 
 
#service hostapd start 
#service isc­dhcp­server start  
       
Comprobamos su estado: 
 
#service hostapd status 
#service isc­dhcp­server status 
 
Y activamos la carga al arrancar el equipo: 
 
#update­rc.d hostapd enable 
#update­rc.d isc­dhcp­server enable 

8 Configuración de la PBX. Extensiones y enlace 
 
Tras dejar preparado nuestro punto de acceso y servidor DHCP, pasamos ahora a 
establecer una configuración muy básica de nuestra centralita privada para comprobar que 
los terminales telefónicos registrados en ella pueden comunicar entre sí. 
17 

Escribimos en nuestro navegador la localización de la PBX ​
http://raspbx.local 
(​
http://raspbx​ ­en linux y Windows ®) y procedemos a dar de alta las extensiones y/o 
troncal para el acceso al exterior: