Cómo configurar una VPN con PFSense para acceso a Máquinas Virtuales

Hoy en día, el acceso remoto seguro es una necesidad crítica, especialmente si trabajas con máquinas virtuales (VMs) en entornos empresariales o domésticos. 

Aquí es donde entra en juego pfSense, una solución de firewall y router basada en código abierto que, además, te permite configurar una VPN robusta. ¿El objetivo? Garantizar que puedas acceder a tus máquinas virtuales desde cualquier parte del mundo de forma segura y sin complicaciones.

Configurar una VPN con pfSense no solo protege tu red contra accesos no autorizados, sino que también mejora la experiencia de conexión remota. Es como si te llevaras toda la red local contigo, permitiéndote gestionar tus VMs como si estuvieras físicamente en tu oficina o casa.

Pero ¿por qué utilizar pfSense para esto? Además de ser gratuito, es muy flexible y compatible con múltiples protocolos de VPN como OpenVPN, L2TP o IPSec, lo que significa que puedes personalizarlo según tus necesidades sin depender de soluciones costosas.

En esta guía te vamos a mostrar cómo una VPN en pfSense puede ser tu mejor aliado para gestionar tus VMs de forma segura, y te enseñaremos que su implementación no es tan compleja como podría parecer gracias a su asistente integrado.

A continuación, os mostramos los pasos necesarios para gestionar vuestras máquinas virtuales a través de pfSense, que tiene role de router, firewall y VPN con OpenVPN, al ser una opción segura, flexible y altamente compatible con casi todos los clientes más comunes del mercado:

  1. Planificación de redes a utilizar en la VPN

Lo primero que os vamos a explicar es el esquema de conexión que vamos a utilizar para gestionar pfSense y las redes de las máquinas virtuales que tenemos que proteger de accesos no permitidos:

  • IP´s pfSense:
    • Dispone de dos interfaces:
      • WAN: IP pública entregada por el proveedor de Internet (ISP)
      • LAN: Puerta enlace para las máquinas virtuales, con IP, 10.0.0.3/24
  • Clientes OpenVPN:
    • Cada cliente, al conectarse al servidor OpenVPN del pfSense desde Internet recibirá una IP del rango 192.168.1.0/24 por DHCP
    • Estos clientes, pueden estar conectados a diferentes LAN´s, independientes a las máquinas virtuales que vamos a gestionar remotamente
  • Máquinas virtuales:
    • Las máquinas virtuales están en la red 10.0.0.0/24
    • Estas máquinas virtuales dan servicios personalizados en cada caso (servidor de archivos, web o base de datos, entre otros) sobre esa red y no de cara a Internet

Os dejamos el esquema:

  1. Requerimientos en pfSense

Lo que tenemos que hacer es asegurarnos que las interfaces WAN y LAN de pfSense están bien configuradas. Así que lo comprobamos desde la configuración:

  • Accede a pfSense: Ingresa a la interfaz web desde tu navegador usando la IP asignada. Usuario/Contraseña por defecto “admin/pfsense”.

  • Configura la Interfaz LAN:
    • Ve a “Interfaces > LAN” y asigna la red 10.0.0.0/24 como hemos definido antes.
    • Define la IP del router como 10.0.0.3/24.
    • Guarda los cambios y aplica.

  • Configura la Interfaz WAN:
    • Asegúrate de que la interfaz WAN tenga acceso a Internet (en nuestro caso usaremos PPPoE)
  • Habilita el DHCP Server:
    • Ve a “Services > DHCP Server” en la interfaz LAN y habilita el servidor DHCP.
    • Configura un rango de direcciones para los clientes (por ejemplo, 10.0.0.100 a 10.0.0.200).
  • Comprobamos que tenemos el paquete “openvpn-client-export” desde “System > Package Manager > Available Packages”. Este paquete nos facilitará la distribución para los usuarios que quieran acceder.

Lo instalamos después de buscarlo desde el Package Manager. Pulsamos “Install > Confirm”:

Si todo ha ido bien, nos mostrará esta pantalla, y ya tendremos todo preparado:

  1. Asistente configuración OpenVPN

Con los requerimientos preparados, vamos a usar el Wizard para configurar nuestro servidor OpenVPN. Vamos al menú “VPN -> OpenVPN -> Wizards”:

Comienza el Wizard, si desplegamos el combo veremos que podemos autenticarnos de varias formas, en nuestro caso, por simplicidad, usaremos usuarios locales. Para ello, elegimos “Local User Access y pulsamos “Next”:

Crearemos una autoridad de certificación completando los campos que marcamos en la imagen, pulsamos “Add new CA”:

Pulsamos “Add new Certificates”:

Le damos una descripción y pulsamos “Create new Certificate”:

Le damos un nombre al servidor OpenVPN:

Introducimos la red que tendrán nuestros clientes en “IPv4 Tunnel Network” y la red en que están nuestras máquinas virtuales “IPv4 Local Network” y pulsamos “Next”:

Marcamos la dos casillas “Firewall Rule” y “OpenVPN rule” para que se generen automáticamente las reglas necesarias para abrir el tráfico VPN:

Pulsamos “Finish”:

Veremos las configuraciones de nuestro servidor al terminar, teniendo la posibilidad de modificarlo más adelante. Como podéis ver en “Mode” está configurado para que permita autenticación mediante certificado y usuario:

Para que nuestros clientes se puedan autenticar, necesitaremos generar usuarios VPN. Lo haremos desde “System -> User Manager -> Users -> +ADD”. Y completamos los campos de la siguiente forma y pulsamos “Save”:

Generamos tantos como necesitemos:

Ahora para poder configurar nuestro cliente VPN con el usuario que hemos generado, vamos en pfSense a “VPN -> OpenVPN -> Client Export”. Bajamos a la sección “OpenVPN Clients” y exportamos para el usuario generado el fichero con extensión OPVN necesario para conectar:

Dependerá del cliente que vayáis utilizar (Windows, MacOS, Android, IOs…) desde la web de OpenVPN. Descargáis e instaláis (no tiene parámetros adicionales). Usaremos como ejemplo el acceso sobre un cliente Windows:

Subimos el fichero a nuestro cliente:

Cargamos el fichero OPVN e introducimos el usuario y pulsamos “CONNECT”:

Nos pedirá la contraseña:

Si todo es correcto veremos el siguiente resultado:

Como hemos hablado al principio, mi PC Windows está en una red independiente a la que queremos gestionar con una IP 192.168.2.138:

Y en la red OpenVPN dispongo de una IP 192.168.1.2:

Si intento acceder a servicios de la red 10.0.0.0/24 donde están las máquinas virtuales podré acceder si no hay filtros adicionales, por ejemplo, la página web de administración de pfSense:

Si existen restricciones adicionales o queremos seguir buenas prácticas, tendremos que trabajar las reglas de cortafuegos:

1. Configurar la red de OpenVPN

Asegúrate de que la red OpenVPN esté correctamente configurada para asignar direcciones en el rango 192.168.1.0/24.

  1. Ve a VPN > OpenVPN.
  2. En la pestaña de servidores, verifica que la configuración de OpenVPN incluye la red 192.168.1.0/24 en IPv4 Tunnel Network.
  3. En IPv4 Local Network/s, asegúrate de que está configurada la red 10.0.0.0/24 para permitir el acceso desde OpenVPN a la LAN.

2. Crear una regla en la interfaz OpenVPN

Permite que los clientes OpenVPN accedan al servidor en la LAN.

  1. Ve a “Firewall > Rules” y selecciona la pestaña OpenVPN.
  2. Crea una nueva regla con los siguientes parámetros:
    • Action: Pass.
    • Interface: OpenVPN.
    • Protocol: TCP.
    • Source: Network y especifica 192.168.1.0/24.
    • Destination: Address or Alias y especifica 10.0.0.14.
    • Destination Port Range: 5601 (o rango personalizado si aplica).
    • Description: Por ejemplo, "Permitir acceso OpenVPN a servidor web en LAN".
  3. Guarda y aplica los cambios.

3. Crear una regla en la interfaz LAN

Permite que el tráfico de OpenVPN llegue a la LAN.

  1. Ve a “Firewall > Rules” y selecciona la pestaña LAN.
  2. Verifica que exista una regla para permitir el tráfico de OpenVPN a la LAN. Si no existe:
    • Crea una regla con:
      • Action: Pass.
      • Interface: LAN.
      • Protocol: TCP.
      • Source: Network y especifica 192.168.1.0/24.
      • Destination: LAN net.
      • Description: "Permitir acceso desde OpenVPN a LAN".
  3. Guarda y aplica los cambios.

4. Configurar NAT si es necesario

Si el tráfico no fluye correctamente, puede deberse a que pfSense está bloqueando la comunicación entre las redes. Configura NAT para permitir el enrutamiento.

  1. Ve a “Firewall > NAT > Outbound”.
  2. Activa el modo “Manual Outbound NAT Rule Generation”.
  3. Añade una nueva regla:
    • Interface: LAN.
    • Source: 192.168.1.0/24.
    • Destination: 10.0.0.0/24.
    • Translation: Selecciona Interface Address.
    • Description: "NAT para acceso OpenVPN a LAN".
  4. Guarda y aplica los cambios.
  1. Configuración del cliente OpenVPN

Asegúrate de que los clientes OpenVPN tienen rutas para llegar a la red 10.0.0.0/24:

  1. Abre el archivo de configuración .ovpn del cliente.
  2. Añade una ruta estática:
route 10.0.0.0 255.255.255.0

  1. Conéctate y verifica que puedes acceder al servidor en https://10.0.0.14:5601.

  1. Verificar conexiones

  1. Usa herramientas como ping o traceroute desde el cliente OpenVPN para verificar conectividad con 10.0.0.14.
  2. Intenta acceder al servidor web desde un navegador utilizando la URL https://10.0.0.14:5601.

Si el acceso no funciona, revisa los logs de pfSense (“Status > System Logs > Firewall”) para identificar bloqueos o errores en la configuración.

Configurar una VPN con pfSense para acceder a tus máquinas virtuales es una de las mejores decisiones que puedes tomar si buscas seguridad, flexibilidad y tranquilidad.

Con esta solución, no solo te aseguras de que tus datos viajen de forma cifrada, sino que también tienes el control absoluto sobre quién entra y sale de tu red. Esto es crucial si gestionas información sensible o simplemente si quieres evitar sorpresas desagradables por accesos no autorizados.

Además, una vez que domines pfSense, te darás cuenta de lo potente que puede ser para otros aspectos de tu red. Desde priorizar tráfico hasta bloquear intrusiones, pfSense no solo es un "firewall", sino un verdadero guardián de tu red. ¿Y lo mejor de todo? Puedes escalarlo según tus necesidades, desde un entorno doméstico hasta una infraestructura más compleja en una empresa.