Cómo instalar un servidor VPN para teletrabajar en menos de 10 minutos

Hace tiempo que quería escribir un artículo como este, pero ahora que el Coronavirus está empezando a obligar a muchas empresas a buscar mecanismos para que la gente pueda seguir trabajando desde sus casas, creo que es un fantástico momento para explicar cómo montar un servidor VPN para unas pocas personas y que puedan acceder desde cualquier lugar a la red interna como si estuvieran físicamente ahí.

Nota importante: Hay que aclarar que esto abre una puerta (aunque sea cifrada) a que las personas del exterior puedan acceder a la red interna de nuestra oficina, que desde Sinologic no nos hacemos responsables de ningún problema de seguridad que pueda ocurrir por culpa de este tutorial y que, aunque para poder acceder es necesario disponer de un certificado creado específicamente para cada sistema, no se recomienda esto para grandes oficinas, si no para pequeñas oficinas de no más de 5 empleados que necesiten trabajar en remoto de vez en cuando. Si quieres un sistema VPN serio instala en condiciones un servidor IPSEC o un OpenVPN en un servidor de verdad con una conexión en condiciones y aplicando las medidas de seguridad necesarias y contramedidas para evitar ataques.

El objetivo es muy sencillo de entender. Consiste en montar un pequeño servidor VPN dentro de la red interna, utilizando una Raspberry PI como servidor y así evitamos que el coste de un servidor sea un impedimento a los presupuestos organizados de la empresa. Esa VPN hará que podamos conectarnos desde cualquier lugar de Internet al sistema Raspberry y una vez conectado, tener acceso a todos los dispositivos (ordenadores, impresoras, servidores, etc.) de la red interna, así como salir nuevamente por el router de la empresa (por lo que podremos acceder a los sistemas que tengamos filtrados por IP y que únicamente se puedan acceder desde nuestra conexión).

Qué es necesario

Necesitaremos:

  • Nuestra oficina deberá disponer de una conexión a Internet con ancho de banda suficiente y dirección IP fija que tendremos que configurar para poder conectarnos a ella cuando queramos acceder.
  • Acceso al router de la oficina para mapear el puerto del OpenVPN y poder acceder desde el exterior.
  • Una Raspberry PI 3 (aunque mejor 4 ya que tiene más potencia, una tarjeta de red Gigabit).
  • Una tarjeta microSD de, al menos 8Gb con la distribución Raspbian.

Esquema mental de nuestra infraestructura ideal

Es importante que, tanto la IP interna de la oficina (192.168.1.X) como la IP interna de nuestro lugar remoto (10.10.0.25), sean subredes diferentes, ya que si son iguales puede haber problemas de enrutado y nuestro ordenador no podrá distinguir qué es «local» y qué es «remoto».

Una vez conectado a la VPN, nuestro ordenador tendrá una IP interna (10.10.0.25) y una IP VPN interna (10.8.0.4) pero tendrá acceso a los ordenadores y servidores de la red interna (192.168.1.X) porque la Raspberry hará de puente.

Si estamos conectados y queremos acceder a una página web, lo haremos con la conexión de la oficina (el router introducirá nuestros paquetes, lo enviará a la Raspberry y volverá a salir por el router manteniendo la IP de la oficina).

Instalación del sistema Raspbian

En la Raspberry PI tendremos que instalar Raspbian, esto es algo básico y sencillo, así como configurarle una IP fija dentro de la red interna, por ejemplo: 192.168.1.248

Para ello lo mejor es acceder al router y buscar la opción para asignar una IP fija a la dirección MAC de la raspberry PI. De esta manera, aunque la raspberry PI pida una nueva IP, el router siempre le dará la misma.

Instalar OpenVPN en la Raspberry PI

Una vez instalada la distribución Raspbian y configurada la IP interna fija en el router, usaremos PiVPN para instalar OpenVPN, por lo que ejecutaremos en la Raspberry PI el siguiente comando:

curl -L https://install.pivpn.io | bash

Este comando instalará OpenVPN y hará varias comprobaciones, además de:

  • Pedirnos confirmación de que tenemos una IP interna y fija.
  • El usuario de la raspberry PI que utilizaremos para ejecutar todos esos comandos (por defecto: ‘pi‘)
  • El puerto del router que utilizaremos para conectarnos desde el exterior. (Por defecto, el puerto de OpenVPN es el 1194/UDP aunque es recomendable poner cualquier otro entre 30000 y 60000).
  • También nos preguntará el nivel de cifrado que deseamos tener entre el ordenador remoto y el servidor
  • Los servidores DNS que queremos utilizar dentro de nuestra conexión.

Una vez hecho esto, ya tendremos un servidor VPN corriendo en nuestra flamante Raspberry PI. Ahora tendremos que crear las «llaves» para que los usuarios puedan acceder al servidor VPN.

Crear los certificados para los usuarios

Para crear las llaves (o los certificados) tendremos que, con el usuario por defecto ‘pi’ ejecutar el siguiente comando:

sudo pivpn add

Con este comando generaremos en el directorio /home/pi/ovpns un archivo llave (certificado) ARCHIVO.ovpn con todos los parámetros y certificados necesarios de OpenVPN para que alguien pueda conectarse.

Cada certificado solo puede ser utilizado por una conexión simultanea, por lo que si quieres poder conectarte desde varios sistemas, necesitarás generar dos certificados distintos.

Todos los clientes, una vez conectados tendrán, por defecto, una dirección IP interna del rango: 10.8.0.X (diferente al del resto de la red interna) pero todos los usuarios conectados podrán verse entre sí.

Mapear el puerto seleccionado en el router

Ahora tenemos que acceder al router y mapear el puerto que hayamos configurado en la raspberry para el servidor OpenVPN, de manera que cuando alguien acceda a dicho puerto, se reenvíe a la Raspberry PI. (es necesario que el puerto del router y el que hemos configurado sean el mismo).

Configurar el cliente

Cliente para Windows

Una vez tenemos el archivo certificado con extensión .ovpn, es el momento de instalar un cliente en nuestro sistema operativo y cargarle dicho certificado para que pueda conectarse.

Para Windows, OpenVPN tiene su propia aplicación OpenVPN Connect que podéis instalar desde aquí: https://openvpn.net/client-connect-vpn-for-windows/

Para Mac, yo recomiendo TunnelBlick. Se instala, se selecciona el archivo ARCHIVO.ovpn que se desea utilizar y listo!

Para Linux, tan solo hay que instalar el paquete ‘openvpn’ y ejecutarlo tal que así:

openvpn –config ARCHIVO.ovpn

Extras importantes e interesantes

  • Si en lugar de utilizar el puerto 1194/UDP, utilizásemos uno del tipo 80/TCP, podríamos usar esta conexión en aquellas redes que sólo permiten navegar a una web (como algunos hoteles, convenciones, etc.). De esta manera, este sistema nos ayudará a saltar a la red interna y poder navegar con total seguridad aunque la red en la que estemos no permita otro tipo de accesos.
  • Es importante saber que los archivos generados con los certificados de clientes van asociados a la dirección IP y puerto externo a la que nos vamos a conectar, de manera que si la oficina cambia de dirección IP habría que rehacer los certificados o modificarlos manualmente con un editor (ya que es un archivo de texto plano)
  • Si utilizas VPN para cifrar la VoIP (UDP), si para la VPN usas un protocolo TCP, entonces estarás encapsulando todo el tráfico en paquetes TCP, por lo que en VoIP pueden aparecer micro-cortes en el audio en redes de baja y media calidad, además de que para evitar contagiar de Coronavirus, es mejor no hacer handshaking y seguir usando paquetes UDP siempre. 😉
  • Este sistema es el que utilizo para conectarme a la red interna de mi casa desde hace varios años, por lo que puedo garantizar que no sólo funciona estupendamente si no que además es una de las mejores formas de acceder remotamente a la red interna.
  • Hay muchísimas opciones dentro del servidor OpenVPN, pero desde este artículo intentamos explicar brevemente cómo configurarlo para una oficina pequeña y un comportamiento estándar útil que nos facilite el trabajo en remoto ahora que desde el gobierno se está recomendando a las empresas que opten por el teletrabajo para evitar contagios.

7 Comentarios

  • Openvpn? Are you from the past? Wireguard!

  • Como de costumbre Elio, un placer leer tus artículos y aprender tantas cosas. Gracias

  • SoluOpen Consulting

    Si señor muy buen aporte.

  • ¿Cual sería la cantidad máxima de usuarios concurrentes que se estiman para esa configuración? Gracias por la respuesta, saludos.

    • Depende de la potencia y del tráfico que necesite cada usuario.
      Pero haciendo un uso normal y con una Raspberry PI 3, yo tengo 5 sistemas conectados a una de estas sin problemas.
      Si usas una RPI4, debería ser mucho más interesante. Piensa que una RPI3 tiene una tarjeta de red de 100Mb/sec, mientras que una RPI4 la tiene Gigabit.
      Los recursos de procesador y memoria para tunelizar todos los paquetes también es importante.

Archivos

Menú

Redes sociales