Crear un servidor VPN con nuestra Raspberry Pi

¿Que es una VPN?  La Wikipedia la define de la siguiente manera:

Una red privada virtual, RPV, o VPN de las siglas en inglés de Virtual Private Network, es una tecnología de red que permite una extensión segura de la red local (LAN) sobre una red pública o no controlada como Internet. Permite que la computadora en la red envíe y reciba datos sobre redes compartidas o públicas como si fuera una red privada con toda la funcionalidad, seguridad y políticas de gestión de una red privada. Esto se realiza estableciendo una conexión virtual punto a punto mediante el uso de conexiones dedicadas, cifrado o la combinación de ambos métodos.

En otras palabras, vamos a crear una VPN o Red privada Virtual utilizando como servidor nuestra Raspberry Pi, y esto nos permitirá conectarnos a nuestra red domestica desde internet de una forma totalmente cifrada y segura, de echo, una vez conectados a la VPN, todo el tráfico entre el servidor y el cliente (es decir, el tráfico generado por cualquier servicio o aplicación que usemos) viajará cifrado.

En este articulo os explicamos como instalar un servidor VPN del tipo PPTP (Point to Point Tunneling Protocol), ya que es muy fácil de configurar, es rápido y además existen clientes tanto para ordenadores (Windows, Linux u OSX) como para tabletas y smartphones (Android e iOS). Un servidor PPTP emplea cifrado MPPE (Microsoft Point to Point Encryption) de 128 bits y el protocolo de autentificación MS-CHAPv2 (Microsoft Challenge Handshake Authentication Protocol), que, aunque no son tan seguros como los empleados en OpenVPN, por ejemplo, ofrecen una seguridad más que suficiente para un usuario doméstico. La fortaleza de este sistema se basa en utilizar una buena contraseña que sea capaz de resistir un ataque de diccionario.

Lo primero que haremos será instalar el paquete pptpd:

sudo apt-get -u install pptpd

Luego editamos el fichero de configuración /etc/pptpd.conf:

sudo nano /etc/pptpd.conf

Tenemos que asegurarnos de que dicho fichero contenga, descomentadas, las siguientes líneas:

localip 192.168.1.33
remoteip 192.168.1.210-220

La primera línea (localip) es la dirección IP local del servidor en nuestra Raspberry Pi, mientras que la segunda (remoteip) es el rango de direcciones IP que el servidor asignará a los clientes que se conecten por VPN. Ello implica, naturalmente, que las direcciones IP especificadas deben estar en consonancia con las usadas en nuestra red local.

Después modificaremos el fichero de configuración de opciones del demonio pptpd (/etc/ppp/pptpd-options):

sudo nano /etc/ppp/pptpd-options

Aquí, si lo deseamos, podemos cambiar el nombre del servidor (que por defecto es pptpd) por otro distinto, por ejemplo:

name mivpn

Luego, más abajo, debemos comprobar que las siguientes líneas estén descomentadas, añadiendo en las dos últimas unas DNS válidas (en este caso hemos usado las de Google):

require-mschap-v2
require-mppe-128
………….
ms-dns 8.8.8.8
ms-dns 8.8.4.4

A continuación editaremos el archivo /etc/ppp/chap-secrets:

sudo nano /etc/ppp/chap-secrets

En él añadiremos el nombre del usuario que vamos a utilizar para acceder, el nombre del servidor (que debe coincidir con el indicado en el fichero anterior), la contraseña del usuario y la IP asignada al mismo, que podemos sustituir por un asterisco (*) para que sea el propio servidor el que le asigne una IP dentro del rango que especificamos antes. Hay que tener en cuenta que los espacios se introducen mediante la tecla tabulador:

usuario          mivpn           contraseña          *

Podemos incluir varios usuarios, cada uno en una línea distinta, que serán específicos del servicio VPN, por lo que no tienen por qué coincidir (ni los nombres ni sus contraseñas) con los usuarios que ya tengamos definidos en el sistema.

Antes de poner en marcha el servidor, abrimos el fichero /etc/sysctl.conf:

sudo nano /etc/sysctl.conf

y nos aseguraremos de que la siguiente línea esté descomentada para que el sistema sea capaz de redirigir los datos entre nuestro dispositivo y la red local:

net.ipv4.ip_forward=1

Una vez guardado el archivo (Ctrl+o, Intro, Ctrl+x), ya podemos conectarnos con los demás equipos que forman nuestra red VPN, pero no podremos salir desde ella a Internet. Para lograrlo, hay que introducir una regla en iptables, así que editamos el fichero correspondiente:

sudo nano /etc/rc.local

y añadimos casi al final (antes del “exit 0”) la siguiente línea:

sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

donde 192.168.1.0/24 representa toda nuestra red local y eth0, la interfaz de salida a Internet que estamos usando (en este caso, el adaptador Ethernet).

Guardamos los cambios y reiniciamos el servicio:

sudo service pptpd restart
sudo sysctl -p

Finalmente abriremos el puerto 1723 en el router, dirigiéndolo a la IP local de la RasPi para permitir el acceso desde Internet.

 

CONFIGURAR LOS CLIENTES

A partir de este momento nos será posible acceder fácilmente al servidor usando, por ejemplo, nuestro smartphone o tableta. En el caso de Android, lo haremos a través de Ajustes – Conexiones de red – Más redes – VPN, donde podemos añadir un perfil y luego activarlo cada vez que deseemos conectar con el servidor VPN de la Raspberry Pi. Para ello, añadimos una nueva VPN, le ponemos un nombre, seleccionamos el tipo PPTP, escribimos la dirección del servidor, marcamos “Cifrado PPP (MPPE)”, marcamos también “Mostrar opciones avanzadas” y aquí rellenamos las dos últimas: en “Servidores DNS” podemos poner, por ejemplo, el de Google (8.8.8.8); y en “Rutas de desvío” indicaremos nuestra red local (192.168.1.0/24).

Si vamos a usar Windows, la configuración es bastante más compleja, así que lo explicaremos incluyendo algunas capturas de pantalla. Tendremos que ir al Panel de Control – Redes e Internet – Centro de redes y recursos compartidos. Pulsamos en “Configurar una nueva conexión o red” y luego en “Conectarse a un área de trabajo”:

 

 

Pulsamos el botón “Siguiente” y luego hacemos clic en “Usar mi conexión a Internet (VPN)”. En la nueva ventana escribimos la dirección del servidor y un nombre cualquiera para identificar la conexión VPN que estamos creando:

 

Una vez creada, debemos volver al “Centro de redes y recursos compartidos”; allí hacemos clic en el margen izquierdo en “Cambiar configuración del adaptador” y aparecerá la conexión VPN que acabamos de crear. Pulsamos sobre ella con el botón derecho del ratón y elegimos “Propiedades”. En la pestaña “Seguridad” haremos los cambios pertinentes para que quede así:

 

Luego pinchamos en la pestaña “Funciones de red”, marcamos el “Protocolo de Internet 4 (TCP/IPv4)” y hacemos clic en el botón “Propiedades”; volvemos a pinchar en el botón “Propiedades avanzadas” de la siguiente ventana y a continuación, en la pestaña “Configuración de IP”, desmarcamos la casilla de verificación “Usar la puerta de enlace predeterminada en la red remota”, de modo que quede así:

 

Ya sólo hay que hacer clic en el botón “Aceptar” varias veces hasta volver a las “Conexiones de red”. Entonces la conexión VPN estará lista para usarse.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *