WireGuard VPN es un nuevo protocolo robusto y muy rápido para crear redes privadas virtuales, en RedesZone hemos comprobado cómo es capaz de duplicar e incluso triplicar en velocidad a OpenVPN o a IPsec. Este nuevo protocolo de VPN es ideal para configuraciones de acceso remoto con clientes móviles, ya sean smartphones, tablets u ordenadores portátiles, ya que consume muy pocos recursos y la conexión es realmente rápida. El sistema operativo pfSense a partir de su versión 2.5 es compatible con este protocolo mediante su instalación a través de un paquete adicional. Hoy os vamos a enseñar cómo configurar desde cero la VPN de WireGuard en tu cortafuegos de pfSense para conectaros remotamente de forma segura.
Actualmente pfSense CE 2.8.1 es la última versión a fecha de noviembre de 2025, no obstante, este tutorial es válido también para las futuras versiones ya que está en constante actualización, para proporcionaros siempre los mejores tutoriales actualizados. Los menús de configuración entre todos los sistemas operativos de pfSense son exactamente como siempre, en este aspecto nada cambia, sí es posible que tengamos cambios internos pero de cara a la configuración y opciones disponibles no.
Características de WireGuard VPN
WireGuard VPN es un software muy liviano que nos permitirá configurar de forma rápida y fácil un túnel VPN, por defecto, hace uso de la criptografía más moderna, sin necesidad de elegir diferentes algoritmos de cifrado asimétrico, asimétrico o de hash, de manera predeterminada tenemos una suite segura por defecto, a diferencia de otros protocolos VPN. El objetivo de WireGuard es convertirse en la mejor VPN, tanto para usuarios domésticos como para empresas, y lo está consiguiendo porque ya se ha integrado en el Kernel de Linux para proporcionarnos el mejor rendimiento posible.
En cuanto a la criptografía utilizada, tenemos ChaCha20 para el cifrado simétrico, autenticado con Poly1305, por lo que tenemos AEAD (Authenticated Encryption with Associated Data). También hace uso de Curve25519 para ECDH, reconocido por su alta velocidad y seguridad, BLAKE2 para el hashing, SipHash24 para las claves hashtable, y HKDF para la derivación de claves. Tal y como habéis visto, tenemos los algoritmos criptográficos más modernos usados por defecto, y no lo podremos cambiar por otros, deben ser estos sí o sí. Este protocolo adopta un enfoque moderno en cuanto a la criptografía usada, además, es más rápida que el tradicional AES, sobre todo si no tenemos aceleración de cifrado por hardware.
| Protocolo | Velocidad esperada (depende de la CPU) | Criptografía | Consumo de CPU | Mejor caso de uso |
|---|---|---|---|---|
| WireGuard | Muy Alta (~950 Mbps) | ChaCha20-Poly1305 | Bajo | Acceso remoto, dispositivos móviles, alto rendimiento. |
| OpenVPN | Moderada (~250 Mbps) | AES-256-GCM | Alto | Máxima compatibilidad con redes restrictivas (puede usar TCP/443). |
| IPsec/IKEv2 | Alta (~650 Mbps) | AES-256-GCM | Medio (acelerado por hardware) | Conexiones Site-to-Site, clientes nativos en SO. |
Con esta nueva VPN no necesitaremos administrar las conexiones ni hacer difíciles configuraciones, solamente funciona en modo tunneling porque es una VPN L3, y utiliza el protocolo UDP como capa de transporte y no permite seleccionar TCP, lo que sí podremos hacer es modificar el puerto de escucha por el que nosotros queramos. Por supuesto, el servidor WireGuard puede estar detrás de la NAT sin problemas, solo habría que hacer una redirección de puertos. Otras características interesantes son que permite roaming entre redes de forma rápida y fácil, para estar conectados siempre desde cualquier red WiFi o 4G/LTE sin corte en la conexión. Además, también podremos habilitar el Kill-Switch para impedir filtraciones de datos si la VPN se cae.
Por último, esta nueva VPN es compatible con múltiples sistemas operativos como Windows, Linux, MacOS, FreeBSD, Android y también iOS. Ahora el equipo de desarrollo de pfSense 2.5.0 han incorporado WireGuard en su sistema de forma predeterminada, aunque anteriormente también podíamos instalarla, pero no teníamos soporte oficial.
Por qué elegir WireGuard
El objetivo principal de WireGuard, es hacer que los usuarios puedan navegar con mayor privacidad cuando se encuentran utilizando una conexión VPN. Como hemos visto, esta nos ofrece mucha más privacidad debido a los protocolos que utiliza. Se encarga de encriptar la conexión de punto a punto, por lo cual bloquea todo el posible tráfico que circula alrededor de nuestros datos. Por lo cual, sube el nivel de seguridad, y anonimato en internet.
Por otro lado, tenemos la ventaja de la velocidad. WireGuard destaca en este aspecto, pues cuenta con un buen rendimiento en cuanto a la misma. Resulta un sistema rápido, y con un consumo de recursos bastante reducido, lo cual se consigue gracias a la rapidez con la que cuenta en las negociaciones de conexión y transferencia. Esto se consigue gracias a que utiliza menos código, por lo cual se encuentra bastante optimizado. Esto mismo es lo que hace que tenga menos superficie de ataque. Lo cual también es beneficioso para los administradores, pues debido al reducido código, es más sencillo detectar vulnerabilidades y problemas que puedan surgir en el sistema.
Todo esto hace que WireGuard sea utilizado por algunos de los servicios de VPN más conocidos y seguros, entre ellos NordVPN, CyberGhost o Surfshark. Estas son de las que más usuarios tienen en todo el mundo, y se benefician directamente de las velocidades de conexión, su estabilidad y todas sus posibilidades en cuanto a todos los servidores que tienen disponibles alrededor del globo. En todo caso, WireGuard no está presente en absolutamente todos los servicios, pero es algo que está creciendo de forma constante, debido a la popularidad que se está ganando gracias a todas estas ventajas que hemos indicado.
Ventajas
Las ventajas de WireGuard es que es mucho más rápido que otras alternativas, tenemos la máxima seguridad por defecto, ya que no podemos configurar la suite de cifrado de cara a la negociación ni tampoco a la transferencia de los datos. Otro aspecto positivo, es que dar de alta a los diferentes usuarios o peers en este protocolo de VPN es muy sencillo, además, podemos configurar una clave precompartida por cada usuario que nosotros demos de alta, añadiendo una capa más de seguridad a la hora de realizar la conexión.
El bajo consumo de recursos, tanto de procesador como de memoria RAM, se traduce en que, con un hardware bastante limitado, podremos obtener altas velocidades de transferencia, tanto en descarga como también en subida.
Desventajas
Entre los puntos en contra se pueden ver varios aspectos que te hacen tener una idea más clara de esta herramienta. Por ejemplo, uno de los primeros inconvenientes es el hecho de que WireGuard no llega a admitir TCP, usa UDP. Por otra parte, no cuenta con funciones más avanzadas como autenticación en dos pasos, algo que con IPsec o con OpenVPN sí podemos implementar.
Y, por último, pero no menos importante, aunque esté diseñado para que sea el sustituto a IPsec y sea más rápido, lo cierto es que no hay una gran diferencia en este aspecto. Actualmente las empresas siguen teniendo IPsec para intercomunicar diferentes sedes, gracias a que hay hardware con aceleración de cifrado para este protocolo.
¿Por qué usar WireGuard en pfSense?
Lo primero que podemos destacar de pfSense, es su gran adaptabilidad. Este se puede utilizar en hardware de todo tipo, desde relativamente modesto al más puntero. Por otro lado, tiene una gran capacidad de escalado, para poder manejar todo el tráfico de redes que son más grandes o con hardware más potente. En todo caso, su rendimiento puede tener alguna variación de un hardware a otro. Pero por lo general no vamos a tener problema con tráficos equivalentes.
Y es que, para ello, cuenta con una gran variedad de características añadidas. Son muy conocidas, como las VPN, el balanceo de carga, captiva portal, entre otras. Estas características, se utilizan de una forma muy intensa pueden afectar al rendimiento del sistema, pero en general pfSense no va a tener problemas gracias a la gestión que realiza gracias a sus funciones de eficiencia. Esto hace que resulte muy estable, y gracias a ello se puede ejecutar durante largos periodos de tiempo. Sin necesidad de realizar un reinicio o intervenciones. Obviamente, debe estar configurado de la forma correcta.
El rendimiento es uno de sus puntos fuertes, como puedes ver. Puede manejar de una forma muy sencilla la red Gigabit Ethernet, mejorando considerablemente según el hardware disponible es más potente. En cambio, hay algunas funciones como puede ser el filtrado de paquetes profundo, la inspección de los mismos, o las VPN, que si afectan un poco al rendimiento. Pero de nuevo, todo depende del hardware que esté utilizando.
Obviamente también tenemos que mencionar la seguridad. Y es que pfSense se mantiene totalmente actualizado de forma regular. Lo cual es muy importante para todos los sistemas que lo utilizan. A pesar de que las actualizaciones pueden variar en su rendimiento, generalmente no suelen degradar la eficiencia del sistema ya que está muy bien optimizado.
Configuración del servidor VPN WireGuard
WireGuard no está disponible de forma predeterminada en pfSense. Con la salida de la versión 2.5.0 sí lo incorporaron de forma predeterminada, pero se detectaron unos fallos de seguridad, lo que hicieron posponer la introducción, hasta hoy que todavía no lo han incorporado de forma predeterminada. Tendremos que instalar este software mediante «System / Package Manager» y nos vamos a «Available Packages» donde encontraremos WireGuard. Lo instalamos como cualquier otro software, y ya podremos empezar a realizar las configuraciones.
Lo primero que debemos hacer es irnos a la sección de «VPN / WireGuard» para entrar en la configuración de este nuevo protocolo de VPN. En cuanto entremos en el menú, pinchamos en «Add Tunnel».
En la configuración del túnel, deberemos habilitar el túnel, darle una descripción y ponerlo lo siguiente:
- Address: dirección IPv4 o IPv6 del servidor VPN para la interfaz del túnel.
- Puerto: por defecto es el 51820 UDP, pero podremos cambiar a cualquier puerto UDP.
pfSense incorpora un generador de claves pública/privada para el servidor VPN con WireGuard, nuestra recomendación es que generéis unas claves para el cliente VPN, y que pinchemos nuevamente en «Generate» para que las segundas que se generen sean las del servidor VPN. Por ejemplo, las siguientes claves son las que usaremos posteriormente en el cliente VPN. Os podéis ayudar de un bloc de notas o Notepad++ para apuntar la configuración.
Para facilitarte la configuración de WireGuard con las claves públicas y privadas, también puedes hacer uso de la herramienta wireguardconfig que nos permitirá generar automáticamente tanto el servidor como los clientes, para posteriormente adaptarlo a pfSense.
Y las segundas generadas son las del propio servidor VPN con WireGuard.
Una vez que ya tenemos las claves, debemos pinchar en «Save» y ya habremos creado el servidor VPN con la configuración anterior:
Una vez que ya lo tengamos, ahora tenemos que dar de alta los «peers», es decir, los clientes VPN. Volvemos a acceder a la configuración del servidor WireGuard, y pinchamos en «Add Peer» que está en color verde. Aquí deberemos rellenar algunas configuraciones, pero no es necesario rellenar todas ellas.
Ahora os vamos a explicar para qué sirven cada una de las opciones:
- Descripción: ponemos una descripción a este cliente, por ejemplo, nuestro nombre.
- Endpoint: ponemos la dirección IP pública del cliente VPN.
- Endpoint port: ponemos el puerto del cliente VPN.
Si vas a configurar un cliente VPN, donde la IP pública del cliente y el puerto cambie, entonces deberemos dejar las opciones de «Endpoint» y «Endpoint Port» vacías. Estas opciones se deben rellenar si vamos a configurar una VPN Site-to-Site, pero en acceso remoto (Roadwarrior) no es necesario rellenarlo.
- Keep alive: un valor en segundos, cada cierto tiempo verifica que el túnel sigue levantado, por defecto está deshabilitado.
Ahora llegan las configuraciones más importantes:
- Public Key: deberemos poner la clave pública del cliente VPN, anteriormente habéis visto cómo se genera para el cliente, pues aquí pondremos la public key.
- Alloweds IPs: si queremos que haya redirección de Internet y acceso a todas las redes, ponemos 0.0.0.0/0. Lo más normal es que los clientes VPN de acceso remoto salgan a Internet por la propia VPN, pero aquí podremos configurar el acceso específico a diferentes redes.
- Peer WireGuard Address: la dirección IP que tenga el peer dado de alta.
- Pre-shared key: es opcional, se puede añadir una clave precompartida para mejorar aún más la seguridad.
En nuestro caso, no hemos puesto pre-shared key, pero si la pones, tanto en el pfSense como en el cliente VPN debe ser exactamente la misma, y deberemos generar dicha clave con el botón azul que viene en el pfSense. No podemos poner de clave precompartida «12345678» por ejemplo, debemos usar el generador de pfSense.
Una vez que ya hemos configurado correctamente el servidor VPN de WireGuard en pfSense 2.5.0, vamos a configurar la parte de firewall, porque por defecto se encuentra siempre en modo bloquear todo.
Configuración del firewall en WAN y WireGuard
Antes de conectar el primer cliente VPN, debemos irnos a «Firewall / Rules» y agregar una nueva regla en la interfaz WAN de Internet. Añadimos una nueva regla con la siguiente información:
- Action: Pass
- Interfaz: WAN
- Address Family: IPv4, IPv6 o ambas
- Protocol: UDP
- Source: any (si vas a montar un Site-to-Site con WireGuard, aquí podrías poner la IP pública de origen para mejorar la seguridad).
- Destination: WAN Address en el puerto 51820
Una vez configurado, pinchamos en «Save» para guardar esta regla, y aplicamos cambios, como siempre que añadimos una nueva regla al firewall.
Una vez hecho esto, debemos irnos ahora a la interfaz «WireGuard» que se ha creado automáticamente en la sección de «Firewall / Rules«, aquí tendremos que permitir todas las comunicaciones una vez que se haya conectado, o solamente lo que nosotros queramos, tal y como ocurre con OpenVPN o con IPsec.
En la configuración siguiente, podéis ver que tenemos una regla con la siguiente configuración:
- Action: Pass
- Interfaz: WireGuard
- Address Family: IPv4, IPv6 o ambas
- Protocol: Any
- Source: any
- Destination: any
Pinchamos en «Save» y en aplicar cambios, como suele ser habitual. En estos instantes ya estamos preparados para configurar los clientes VPN con WireGuard.
Configuración de los clientes VPN WireGuard y conexión a pfSense
La configuración de los clientes VPN con WireGuard es igual en todas las plataformas, necesitaremos exactamente la misma información. En nuestro caso, hemos utilizado un smartphone con Android, podéis descargar la app oficial de WireGuard para Android y iOS a continuación:
Pero también lo tenemos para otros sistemas operativos como Windows, directamente desde la web oficial de este protocolo de VPN. Una vez que lo hayamos instalado, vamos a poder configurar el cliente fácilmente.
Tal y como os hemos dicho anteriormente, nuestra recomendación es que, al generar las claves en el pfSense, copiéis estas claves en un bloc de notas, tanto la clave pública como la clave privada. Además, también tenéis que copiar la clave pública del servidor. Una vez hecho esto, abrimos WireGuard y procedemos a añadir un nuevo túnel VPN, tenemos tres opciones:
- Importar desde archivo toda la configuración, si vais a configurar varios clientes como Windows, Linux etc, lo normal es tener una plantilla con las diferentes configuraciones.
- Escanear desde código QR: si usamos la herramienta WireGuardConfig podremos hacerlo fácilmente.
- Crear desde cero: esta es la opción que hemos elegido.
Al añadir una nueva VPN, deberemos rellenar todos o casi todos los datos que nos pregunta, es el cliente VPN:
- Nombre: pondremos una descripción al túnel VPN, un nombre descriptivo por si tenemos varios, sin embargo, no influirá en nada, podemos poner el que consideremos.
- Clave privada: ponemos la clave privada que hemos copiado anteriormente del bloc de notas. Importante que esté bien.
- Clave pública: al introducir la clave privada, la genera automáticamente, por lo que no tendremos que preocuparnos de la que ponga.
- Direcciones: la IPv4 o IPv6 del cliente, en este caso, hemos configurado anteriormente 10.9.0.2/32, así que ponemos esta.
- Puerto: lo dejamos en blanco.
- Servidores DNS: podemos poner un servidor DNS en concreto, o directamente que resuelva el túnel.
- MTU: lo dejamos en blanco.
Ahora pinchamos en añadir par, y se nos desplegará más configuraciones, estas configuraciones son las del servidor VPN.
- Pares: la clave pública del servidor VPN.
- Clave precompartida: si no hemos configurado, lo dejamos en blanco, si hemos configurado la copiamos exactamente igual.
- Mantenimiento persistente: el keep alive, recomendable dejarlo en blanco.
- Punto final: debemos poner sintaxis «IP:puerto», por tanto, podemos poner: «vpn.redeszone.net:51820».
- IPs permitidas: si queremos poner todas, ponemos 0.0.0.0/0. También tenemos un botón para excluir las IPs privadas.
Una vez que lo hayamos hecho, pinchamos en guardar, y podremos ver todas las configuraciones realizadas, y comprobar si alguna es incorrecta.
Una vez añadido y verificado que todo está correcto, procedemos a conectarnos y veremos que hay intercambio de tráfico y que la VPN está funcionando perfectamente. Si lo hemos puesto bien, todo debería ir.
Si no tenemos paquetes recibidos, eso significa que hay algo mal y que el túnel de la VPN WireGuard no se ha establecido correctamente. Si te ocurre esto, deberás repasar toda la configuración realizada, y revisar los logs del pfSense para ver qué está ocurriendo. Posiblemente hayas copiado un espacio extra en la contraseña, o un error similar sin importancia. Solo tendremos que fijarnos bien de nuevo.
Configuración de los clientes VPN en Windows
Para añadir más clientes VPN, basta con irnos al servidor VPN de WireGuard y pinchar en «Add peer». Cada cliente VPN que queramos conectar, es necesario configurar un nuevo «Peer» con una configuración nueva de claves público/privada y su correspondiente dirección IP.
Tal y como hemos hecho antes, desde el cliente VPN WireGuard para Windows podemos generar unas claves nuevas, o usando la utilidad que os hemos puesto anteriormente. En el PfSense lo único que tenemos que hacer es poner la descripción, la clave pública que hemos generado en el cliente, el «AllowedIPs» con la dirección IP del cliente, la dirección IP del peer y la Preshared-Key de forma opcional.
En las últimas versiones de Windows 10, parece que hay algún tipo de problema con el cliente WireGuard oficial. Hemos probado a realizar la misma configuración que en el cliente para Android, y no nos establece el túnel si ponemos «AllowedIPs = 0.0.0.0/0» para redigirir todo el tráfico a través del túnel, únicamente si ponemos «AllowedIPs = 10.9.0.0/24» nos establece la conexión pero únicamente dentro del túnel, no tenemos conectividad a Internet vía WireGuard.
En sistemas operativos Windows 11 o superior, puedes usar sin problemas el cliente oficial de WireGuard VPN porque te funcionará perfectamente. Solamente os aconsejamos usar TunSafe en el caso de que tengas problemas con el programa oficial. La configuración con el programa oficial es exactamente igual, ya que tendremos que copiar la configuración.
La solución está en descargar el programa TunSafe que está basado en WireGuard, lo instalamos e importamos el fichero de configuración de WireGuard que tenemos en el cliente oficial, o lo editamos en un fichero de texto con la misma sintaxis de siempre:
Una vez que tengamos el archivo .conf, lo importamos en el programa y ya podremos conectarnos a nuestro servidor VPN con WireGuard sin ningún tipo de problema, con redirección de tráfico total para navegar seguros, ahora sí podremos configurar correctamente «AllowedIPs = 0.0.0.0/0» y nos establecerá el túnel correctamente.
TunSafe incorpora más opciones de configuración que el cliente oficial, como la política de kill-switch basada en rutas y en firewall o en ambos, e incluso si queremos tenerlo como servicio en el sistema operativo de Windows también tendremos diferentes tipos de configuración, para elegir la que más se adapte a nuestras necesidades.
Configurar WireGuard para MacOS
En caso de que tu sistema operativo no sea Windows, sino MacOS, ya sea porque tienes un MacBook, o simplemente porque lo estés emulando en un ordenador distinto a Apple, que sepas que tendrás opciones de poder realizar el mismo tutor al que hemos visto hoy, ya que el programa se encuentra disponible. Además, podrás bajarlo directamente de la tienda oficial, la App Store.
Este programa cuenta con 4,5 sobre 5 estrellas en MacOS, y su diseño e interfaz, pese a ser algo diferente al de Windows, cuenta con unas opciones y menús muy similares. Algunos hablan incluso de la mejor VPN para este sistema operativo. Su tamaño no llega a 4 MB, por lo que no podrás tener excusa alegando poco espacio.
Es probable que con versiones más recientes pueda haber algún error, sin embargo, si nos vamos a las mostradas hoy, independientemente de tu Mac, podrás hacerlo funcionar correctamente.
Solución de errores comunes
Si después de hacer todas las configuraciones de esta guía, no consigues conectarte correctamente al servidor, debes revisar los siguientes aspectos que solucionarán el 90% de los problemas:
- No hay Handshake (No se reciben datos): lo primero que debes revisar es que la clave pública del cliente en la configuración del»Peer» en pfSense coincida exactamente con la clave pública del cliente, y viceversa. Un solo carácter incorrecto impedirá la conexión. Lo segundo que debes revisar es si tienes la regla en «Firewall / Rules y en WAN» de aceptar la comunicación, es necesario que pongas el puerto del servidor WireGuard en destino, tal y como hemos indicado.
- Conexión establecida pero sin acceso a Internet/LAN:
- Verifica la regla del Firewall en la interfaz «WireGuard». Asegúrate de que permite el tráfico (Action: Pass, Protocol: Any, Source: Any, Destination: Any), es decir, dejar pasar todo el tráfico.
- Ve a Firewall > NAT > Outbound. Asegúrate de que el modo esté en «Hybrid Outbound NAT» y que exista una regla automática para la subred de tu servidor VPN WireGuard, en el ejemplo anterior con la subred 10.9.0.0/24 debería estar así hacia la interfaz de la WAN.
- Error en cliente de Windows con «AllowedIPs = 0.0.0.0/0»: Este es un problema conocido. Como se indica en la guía, utiliza el cliente alternativo TunSafe, que gestiona mejor el enrutamiento de todo el tráfico a través del túnel en Windows. En las últimas versiones de Windows 11 podrás usar el cliente WireGuard oficial sin ningún problema.
- Revisar el «AllowedIPs» del servidor: si sigues teniendo problemas de conexión, revisa la configuración de AllowedIPs del servidor VPN.
Como podéis ver, los principales errores que nos encontraremos, tienen fácil solución.
