RasPBX – Centralita VOIP en Raspberry Pi

En este post os cuento como configurar la centralita VOIP en una linea FTTH Movistar ( router Comtrend vg-8050 ) con una Raspberry Pi y la imagen RasPBX.

Esta imagen basada en Debian Jessie ( Raspbian ) contiene Asterisk 11 y FreePBX 13 preinstalados y con ella
podemos convertir nuestra Raspberry en una estupenda centralita telefonica para VOIP que funcionara a la perfección con unos cuantos ajustes de configuración.

Comenzamos.-

Descargamos e instalamos la imagen de http://www.raspberry-asterisk.org/downloads/

Una vez descargada e instalada como de costumbre ( win32DiskImager en windows, etc …) arrancamos raspberry con este sistema operativo.

A continuación nos conectamos mediante terminal ssh o monitor y teclado y realizamos las siguientes acciones:

1.) Expandir el sistema de ficheros:

raspi-config

Seleccionamos la opción expand_rootfs

2.) Actualización asterisk de v.11 a v.13

raspbx-upgrade
apt-get update
amportal stop
apt-get purge asterisk11
apt-get install asterisk13
amportal start

3.) Instalacion de editor de texto vim (opcional)

apt-get install vim

4.) Regenerar hostkeys

regen-hostkeys

Tras lanzar este comando, en el proximo inicio de sesion ssh se nos volvera a advertir que la clave de host ha cambiado.

5.) Configurar zona horaria

configure-timezone

6.) Configurar servicio de correo

dpkg-reconfigure exim4-config

Aqui seleccionamos \”mail sent by smarthost; received via SMTP or fetchmail\” y dejamos los valores por defecto pulsando ENTER hasta llegar a la pantalla que nos pide
“Please enter the IP address or the host name of a mail server…”

Ahi introducimos el nombre o ip de nuestro servidor de correo.

7.) Editamos el fichero passwd.client

vim /etc/exim4/passwd.client

Ejemplos:

SMTP_HOSTNAME:USERNAME:PASSWORD

mail.dominio.com:raspbx@dominio.com:Password

8.) Editamos email-addresses

vim /etc/email-addresses

Ejemplos:

root: your_email@someisp.com
asterisk: your_email@someisp.com

root:raspbx@dominio.com
asterisk:raspbx@dominio.com

9.) Actualizamos la configuración del servicio

update-exim4.conf

10.) Ya podemos enviarnos un correo de prueba a la direccion de correo que mas nos guste.

send_test_email test@dominio.com

Toda esta información esta extraida de http://www.raspberry-asterisk.org/documentation/

11.) Posteriormente y por seguridad se recomienda instalar Fail2Ban ( https://es.wikipedia.org/wiki/Fail2ban ). Para ello lanzamos el comando

install-fail2ban

Mas información y tutorial completo en https://sourceforge.net/p/raspbx/discussion/tutorials/thread/6288a838/

Hecho esto, si lanzamos el comando \”iptables -L -v\” sin comillas, veremos algo parecido a esto:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-asterisk  tcp  —  0.0.0.0/0            0.0.0.0/0            tcp dpt:5060
fail2ban-asterisk  udp  —  0.0.0.0/0            0.0.0.0/0            udp dpt:5060
fail2ban-asterisk  tcp  —  0.0.0.0/0            0.0.0.0/0            tcp dpt:5061
fail2ban-ssh  tcp  —  0.0.0.0/0            0.0.0.0/0            multiport dports 22

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain fail2ban-asterisk (3 references)
target     prot opt source               destination
RETURN     all  —  0.0.0.0/0            0.0.0.0/0

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  —  0.0.0.0/0            0.0.0.0/0

Llegados a este punto, es hora de visualizar la interfaz web de nuestra centralita y comenzar con su configuración.

Para ello y suponiendo que conocemos la ip de nuestra raspberry, abrimos una ventana de explorador, tecleamos la ip de la raspberry en la barra de direcciones y pulsamos ENTER

Por defecto el acceso se realiza con \”admin\” \”admin\”

Los pasos que debemos seguir son los siguientes:

Crear un Trunk SIP para será la conexión con Movistar que nos permitirá hacer y recibir llamadas.
Configurar la entrada de llamadas
Configurar la salida de llamadas
Crear la extension para los telefonos ip o softphone

Lo primero que debemos hacer es configurar el Trunk SIP. Entramos en la Web de gestión de FreePBX y en el menú seleccionamos Conectivity -> Trunks

 

A continuación, en la pantalla de Trunks, seleccionamos Add Trunk y en el desplegable seleccionamos \”Add SIP (chan_SIP) Trunk\”

 

Fijaros que la configuración del Trunk tiene varias pestañas, por defecto nos muestra la pestaña General. Ahora lo que vamos a hacer es darle un nombre a nuestro Trunk
en el apartado Trunk Name, aquí podéis poner lo que más os guste, yo he puesto Movistar. No es necesario rellenar ningún otro campo es esta pestaña.

 

Ahora seleccionamos la pestaña Sip Settings

 

Esta pestaña a su vez tiene dos Pestañas más: Outgoing e Incoming.

En la pestaña Outgoing, en Trunk Name poneis lo que queráis y en Peer Details introducimos el texto siguiente modificado con vuestro número de teléfono.

type=peer
fromuser= (Aquí habéis de poner vuestro número de teléfono)
secret= (Otra vez vuestro número de teléfono)
fromdomain=telefonica.net
host=telefonica.net
outboundproxy=10.31.255.134:5070
port=5070
nat=yes
insecure=port,invite
dtmfmode=auto
disallow=all
allow=ulaw,alaw

Ahora vais a la pestaña Incoming.

 

En USER Context ponemos: from trunk

En USER Details ponemos lo siguiente:

type=peer
username= (vuestro número de teléfono)
secret= (vuestro número de teléfono)
fromdomain=telefonica.net
host=10.31.255.134
port=5060
outboundproxy=10.31.255.134
qualify=no
nat=yes
insecure=port,invite
dtmfmode=auto
canreinvite=no
disallow=all
allow=ulaw,alaw
outboundproxyport=5070

En Register String: 9XXXXXXXX@telefonica.net:9XXXXXXXX@10.31.255.134:5070

Donde 9XXXXXXXX es otra vez vuestro número de teléfono.

Pulsamos en Submit, luego en Apply y ya tenemos creado y funcionando nuestro Trunk.

Configurar la entrada de llamadas

Ahora que tenemos el trunk SIP operativo, hemos de decirle al sistema que queremos hacer con las llamadas entrantes.
Lo que yo hago es enviar la llamada a todas mis extensiones para que suenen todas a la vez y cogerlo donde me parezca.
Para ello primero se crea un grupo de extensiones  o “Ring Group”. En el menú seleccionamos Applications -> Ring Groups y pulsamos en “Add Ring Grou”

 

 

 

Pulsamos Submit, luego Apply y ya hemos configurado nuestro grupo. Ahora tenemos que modificar la entrada de llamadas que ya existe por defecto
para que apunte al nuevo grupo. Para ello en el menú seleccionaremos Connectivity -> Inbound Routes.

Aquí lo único que hemos de hacer es modificar Set Destination para enviar las llamadas al grupo que acabamos de crear. Le damos a Submit, a Apply y ya podemos
probar a llamar desde nuestro móvil a nuestro número fijo, deberían sonar todas nuestras extensiones.

Configurar la salida de llamadas

Para poder configurar la salida de llamadas primero hay que tener claro como funciona la salida de llamadas en cualquier PBX, ya sea analógica, digital o IP. Para ello usamos rutas,
“patterns” o patrones, que es lo mismo, y no es más una manera de indicarle al sistema a donde debe enviar una llamada en función del número marcado. En entornos empresariales es
normal utilizar líneas fijas para las llamadas a números fijos e internacionales y líneas de enlace móvil para las llamadas a móviles, en ese caso por ejemplo le indicamos al
sistema que si el número marcado comienza por 9 envie las llamadas por las líneas fijas y si empieza por 6, por las móviles. Claro, en el sistema que estamos montando todas las
llamadas se van a enviar por el mismo sítio, el SIP Trunk que acabamos de configurar, luego la pregunta que os vendrá a la cabeza es ¿no puedo configurar fácilmente una ruta por
defecto para todas las llamadas y despreocuparme? La respuesta es sí, por poder si se puede y es muy fácil, pero no debéis hacerlo.

Si habilitas una ruta para cualquier número marcado (luego veremos como hacerlo, no os preocupéis), cualquiera que use vuestro sistema podrá llamar a cualquier número, incluidos los
de tarificaciones especiales e internacionales. Normalmente es difícil que alguien se cuele en nuestra casa y use uno de nuestros terminales fijos para llamar al Congo, pero ahora
estamos en el mundo IP y los riesgos han cambiado. Una de las ventajas de un sistema como este es la posibilidad de usar el móvil para responder las llamadas al fijo, yo lo hago y
estoy encantado, pero eso permite que si alguien crackea mi wifi y la contraseña de mi extensión podrá hacer llamadas utilizando mi línea y con cargo a mi bolsillo.
Es cierto que si tomamos las precauciones necesarias (wifi segura, contraseñas fuertes, puertos cerrados, etc), el riesgo de sufrir un ataque es muy muy bajo y no debería quitarnos
el sueño, pero no es menos cierto que si no realizamos nunca llamadas internacionales o a números del Tarot, ¿Por qué tener nuestro sistema expuesto, aunque el riesgo sea mínimo?
Por eso no me gustan las configuraciones que permiten llamar a cualquier número, ya que por concepto son inseguras e innecesarias.

Estos son los números a los que yo permito llamar:

Cualquier número de nueve dígitos que comience por 8 o 9, son los números fijos de España (sí, hay números fijos que comienzan por 8, por ejemplo en Ceuta)
Cualquier número de nueve dígitos que comience por 6 o 7, que son los número de telefonía móvil
Cualquier número de tres dígitos que comience por 0, son los de servicios como el 010, el 012, el 091, etc
El 112, emergencias
Cualquier número de cinco dígitos que comience por 118, son los de información telefónica (11888, 11822, etc)
Cualquier número de cuatro dígitos que comience por 1, son los información telefónica (1004, etc)

Y eso que soy bastante permisivo porque estoy muy confiado en la seguridad de mi red, a muchos clientes les recomiendo “capar” todos los que comiencen por 80[1-9]
(8, 0 y un número del 1 al 9, son los de tarificación especial como 803, 805, etc) y los de información telefónica, y si necesitan hacer llamadas internacionales,
que solo habiliten llamadas a los países estrictamente necesarios.

Bien, ahora que ya os he soltado el rollo, os explico como se configuran las llamadas salientes en FreePBX. En el menú seleccionamos Connectivity -> Outbound Routes y una vez en
la pantalla de Outboud Router pulsamos en Add Outbound Route. Se nos abrirá la siguiente pantalla:

 

Estamos en la pestaña Route Settings. Aquí hemos de:

En Route Name le damos un nombre a la ruta, yo he puesto Movistar, pero podeis poner lo que queráis.
En Trunk Sequence habéis de seleccionar el SIP Trunk que hemos creado anteriormente, en mi caso lo llamé “Movistar”.

Ahora vamos a la pestaña Dial Patterns:

 

Si no quisierais complicaros la vida y crear ruta para cualquier número marcado, lo único que tendríais que hacer es poner un punto (.) en el match pattern de la primera línea.
El punto significa cualquier número cualquier cantidad de veces, por lo tanto todas las llamadas harían match y se enviarían por el Trunk SIP. Si esta solución os parece conveniente
a pesar de mis recomendaciones, solo tenéis que guardar y aplicar los cambios y vuestro sistema ya estará totalmente operativo para hacer llamadas a través de la línea de Movistar.

Si por contra preferís hacer vuestro propio dial plan o sencillamente copiar el mio, lo que teneis que hacer ir añadiendo líneas con los match pattern de la imagen o con los que
queráis. Vamos analizar la primera línea y las demás se entenderan solas. Esta línea permita llamar a números móviles. Los números entre [] indican un rango, o sea que si pone
[67] el sistema esperará o un 6 o un 7. Las X significan cualquier dígito, como los números móviles se componen de nueve dígitos, hay que añadir ocho X que indican 8 dígitos más.

Yo no tengo las llamadas internacionales habilitadas, pero si se quisieran habilitar llamadas a un país determinado, como Alemania (Prefijo 49), añadiríamos el siguiente
Match Pattern: “0049.”El 00 es para llamadas internacionales, el 49 el prefijo de Alemania y el . para indicar que a continuación viene una ristra de dígitos, no sabemos cuantos.
Por supuesto con “00.” habilitamos TODAS las llamadas internacionales, pero si tuvierais mi experiencia profesional y hubierais visto lo que yo he visto ni se os pasaría por la cabeza.

Cuando tengamos nuestro dial Pattern totalmente configurado ya podemos pulsar en “Submit” y luego en “Apply”. Ahora vuestro FreePBX ya debería poder hacer y recibir llamadas
usando vuestra línea de Movistar.

Crear extension para los telefonos ip o softphones

Para ello vamos al menu Applications – Extensions y seleccionamos Add Extension – Add New Chan_SIP Extension

Importante, cuando configuremos el telefono ip o softphone, EL NUMERO DE EXTENSION ES EL USUARIO y \”secret\” el password de acceso.

El display name es meramente informativo.

Hecho esto ya podemos configurar nuestra primera extensión.

Yo uso el softphone \”CSipSimple\” que podeis descargar de la AppStore en cualquier Movil Android.

Una vez instalado pulsamos en \”Añadir Cuenta\”, adjunto capturas.

Seleccionamos \”Basic\”

Configuramos los campos con nombre, numero de extensión, ip de la raspberry y password.

Establecemos la conexión.

Ya puedes hacer y recibir llamadas simultaneas con tantos moviles/softphones o telefonos ips como extensiones quieras asociar. Yo he probado con 2 simultaneas y va bien 😉

Agradecimientos al foro adslzone.net y al blog maneldeantonio.com con los que consegui configurar todo.

PD.- Para aquellos que dispongan de fibra movistar y no lo sepan, en la AppStore hay una aplicación \”Mi Fijo 2.0\” con la que puedes usar el móvil como fijo mientras el móvil este conectado a la red local.

Ver: https://zonabeta.movistar.es/todas-las-betas/movil/llamadas-de-voz-fija-en-movil

Si usas VPN puedes usar el fijo y recibir llamadas de casa estes donde estes conectado por Wifi o 3G – 4G.