Configuración de WireGuard en Windows | INTROSERV
EUR
european

EUR

usa

USD

Spanish Es
Ex. VAT Ex. VAT 0%

Configuración de WireGuard en Windows

Esta guía explica cómo configurar un túnel VPN de WireGuard entre dos equipos con Windows: un servidor WireGuard que se ejecuta en un host remoto de Windows —por ejemplo, un VPS de Windows— y un cliente WireGuard que se ejecuta en tu ordenador local con Windows. Una vez que el túnel está activo, los dos equipos intercambian datos a través de una conexión privada cifrada y, si lo deseas, puedes redirigir todo el tráfico del cliente a través del servidor.

Para simplificar la generación de claves, esta guía crea tanto la configuración del servidor como la del cliente dentro de una misma aplicación de WireGuard y, a continuación, implementa cada archivo de configuración en el equipo al que pertenece. La configuración del servidor se ejecuta en el servidor y la del cliente, en el cliente. El servidor y el cliente son siempre equipos distintos. Se utiliza el mismo proceso para añadir cualquier número de clientes adicionales.

Antes de empezar, instala la última versión de WireGuard desde la página de instalación de WireGuard tanto en el servidor como en el cliente, y asegúrate de que dispones de derechos de administrador en cada máquina.

La configuración de esta guía es la siguiente:

Server (public IP, listening on UDP 51820) Tunnel address 10.0.0.1/24 | | encrypted WireGuard tunnel | Client Tunnel address 10.0.0.2/32

Creación de la configuración del servidor

Ejecuta C:\Archivos de programa\WireGuard\wireguard.exe, haz clic en «Añadir túnel» y selecciona «Añadir túnel vacío». WireGuard genera un par de claves automáticamente. La clave pública que aparece en la parte superior de la ventana es la clave pública del servidor. La necesitarás más adelante cuando configures el cliente.

Asigna un nombre al túnel y rellena la sección de interfaz con la clave privada del servidor, el puerto en el que WireGuard estará a la escucha y la dirección interna que utilizará el servidor dentro del túnel.

[Interface] PrivateKey = # private key of the WireGuard server ListenPort = # port that WireGuard will listen on Address = # internal IP address of the WireGuard server, for example 10.0.0.1/24

Utiliza una subred privada para la red del túnel y mantén el servidor y todos los clientes dentro del mismo rango. Una opción habitual es 10.0.0.1/24 para el servidor y 10.0.0.2/32, 10.0.0.3/32, y así sucesivamente para cada cliente. El servidor utiliza un prefijo /24, por lo que considera que todo el rango del túnel es accesible a través de la interfaz de WireGuard. Cada cliente utiliza /32, ya que un cliente representa una única dirección en lugar de una subred. Un cliente configurado con /24 asumiría que todo el rango se encuentra en su propia interfaz y no enviaría tráfico destinado a otras direcciones del túnel a través de este.

En el editor del túnel, debajo del campo de configuración, puedes activar opcionalmente la opción «Bloquear tráfico no tunelizado (kill-switch)», que bloquea cualquier tráfico que salga fuera del túnel, y establecer una «Clave precompartida», que añade una capa adicional de seguridad. Ambas opciones son opcionales. Consulte la sección «Descripción de AllowedIPs» para saber cuándo resulta útil el kill-switch y qué es lo que bloquea.

Creación de la configuración del cliente

Haz clic en «Añadir túnel» y selecciona «Añadir túnel vacío» por segunda vez, esta vez para el cliente. La clave pública que se muestra para este túnel es la clave pública del cliente, que el servidor necesita para aceptar al cliente.

Rellene la configuración del cliente:

[Interface] PrivateKey = # private key of the WireGuard client Address = # internal IP address of the WireGuard client, for example 10.0.0.2/32 DNS = 1.1.1.1, 1.0.0.1 [Peer] PublicKey = # public key of the WireGuard server AllowedIPs = # 0.0.0.0/0 for a full tunnel, or 10.0.0.0/24 for a split tunnel Endpoint = # public IP address and port of the WireGuard server PersistentKeepalive = 25

El «Endpoint» debe ser la dirección IP pública real del servidor junto con el puerto establecido en el «ListenPort» del servidor, no la dirección interna del túnel. Para obtener ayuda a la hora de elegir el valor de «AllowedIPs», consulta la sección «Información sobre AllowedIPs» más abajo.

Las líneas «DNS» y «PersistentKeepalive» son opcionales. «DNS» establece los servidores DNS que se utilizarán mientras el túnel esté activo, lo que evita problemas de resolución de nombres tras la conexión. Puede utilizar resolutores públicos como 1.1.1.1, 1.0.0.1, 8.8.8.8 o 8.8.4.4, o bien el propio servidor DNS de la red VPN. PersistentKeepalive = 25 envía un pequeño paquete cada 25 segundos y ayuda a mantener la conexión abierta cuando el cliente se encuentra detrás de un NAT.

Copia las claves y el punto final con mucho cuidado. Una clave mal escrita o un punto final incorrecto son las causas más comunes por las que un túnel no consigue conectarse.

Añadir el cliente al servidor

Vuelve a abrir la configuración del servidor y añade una sección [Peer] para el cliente, utilizando la clave pública del cliente del paso anterior.

[Peer] PublicKey = # public key of the WireGuard client AllowedIPs = # internal IP address of the client

En la configuración del servidor, «AllowedIPs» tiene dos funciones. Indica al servidor qué dirección de túnel pertenece a este cliente y actúa como una lista de enrutamiento: cualquier paquete dirigido a esos rangos se cifra y se envía a este par. Para un único cliente, esta es su dirección de túnel, por ejemplo, 10.0.0.2/32. Si el cliente también debe hacer que una red local sea accesible a través del túnel, añade aquí también esa subred, por ejemplo , 10.0.0.2/32, 192.168.1.0/24. Repite este paso para cada cliente adicional.

Configuración del cortafuegos de Windows en el servidor

El servidor debe aceptar el tráfico entrante de WireGuard en su puerto UDP. Abre el «Firewall de Windows Defender con seguridad avanzada», selecciona «Reglas de entrada» y haz clic en «Nueva regla». Selecciona «Puerto» y haz clic en «Siguiente». Selecciona «UDP», introduce el puerto de WireGuard, por ejemplo, 51820, y haz clic en «Siguiente». Si utilizas más de un puerto, enuméralos separados por comas, por ejemplo, 51820, 51821. Selecciona «Permitir la conexión » y haz clic en «Siguiente». Selecciona los perfiles a los que se aplica la regla. Si el servidor está alojado en un centro de datos, el perfil «Público» suele ser suficiente; en caso contrario, deja seleccionados los perfiles «Dominio», «Privado» y «Público». Haz clic en «Siguiente», asigna a la regla un nombre claro, como «WireGuard UDP 51820», y haz clic en «Finalizar».

Esta regla de entrada solo es necesaria en el servidor, ya que es el lado que recibe las conexiones entrantes. En un VPS, asegúrate también de que tu proveedor de alojamiento permita el tráfico UDP entrante en este puerto a nivel de red, no solo en el cortafuegos de Windows.

Exportación e implementación de las configuraciones

Cuando ambas configuraciones estén listas, haz clic en «Exportar todos los túneles a ZIP», elige una ubicación y guarda el archivo.

Abre el archivo comprimido para encontrar los archivos de configuración de todos los túneles. Coloca la configuración del servidor en el propio servidor y proporciona a cada cliente su propio archivo de configuración. Si el equipo alberga muchos túneles, también puedes exportar un único túnel desde su menú contextual. Exportar a un archivo ZIP resulta práctico cuando ambos túneles se han creado en el mismo equipo, como en esta guía. Si creas cada configuración directamente en su propio host, no es necesario exportarla y puedes copiar el archivo de configuración manualmente.

En el servidor, selecciona la configuración del servidor y haz clic en «Activar».

En el cliente, haz clic en «Añadir túnel», selecciona el archivo de configuración del cliente y ábrelo.

A continuación, haz clic en «Activar».

El primer cliente ya está configurado. Añade más clientes de la misma manera: crea un nuevo túnel vacío para cada cliente y añade una sección [Peer] correspondiente con la clave pública y la dirección del túnel de ese cliente a la configuración del servidor, tal y como se describe en «Añadir el cliente al servidor».

Warning

Si configura WireGuard en un servidor remoto a través de una sesión RDP, lea la sección «Información sobre AllowedIPs» antes de activar un túnel que enrute todo el tráfico. Una configuración con AllowedIPs = 0.0.0.0/0 puede redirigir el propio tráfico del servidor al túnel e interrumpir su conexión RDP.

Comprobación de la conexión

Tras activar el túnel, es posible que Windows muestre el adaptador de WireGuard como «Sin acceso a la red» o «Sin acceso a Internet» en el Centro de redes y recursos compartidos. Se trata de un comportamiento esperado, ya que Windows no trata los adaptadores de túnel VPN como conexiones estándar a Internet, y esto no afecta al túnel. Windows determina este estado mediante su comprobación de conectividad, que realiza pruebas a direcciones URL específicas de Microsoft; por lo tanto, la advertencia también puede aparecer si dichas pruebas están bloqueadas o no son resueltas por tu DNS, incluso cuando el túnel funciona.

Para confirmar que el túnel funciona, comprueba su estado en el cliente de WireGuard. Un túnel activo muestra el estado «Activo» junto con los contadores de transferencia de datos. Si los contadores aumentan, el túnel está transmitiendo tráfico.

En el servidor también puedes confirmar que WireGuard está a la escucha en su puerto UDP mientras el túnel está activo:

netstat -ano | findstr 51820

En PowerShell, el comando equivalente es:

Get-NetUDPEndpoint -LocalPort 51820

Sustituye 51820 por tu puerto de WireGuard. Si no se devuelve ningún resultado, el túnel no está activo o el puerto difiere del establecido en la configuración del servidor.

A continuación, abre el Símbolo del sistema y realiza un ping a la dirección interna del túnel del servidor:

ping 10.0.0.1

Sustituye 10.0.0.1 por la dirección IP interna real que hayas configurado para el servidor. Las respuestas confirman que el túnel funciona.

Si el cliente utiliza AllowedIPs = 0.0.0.0/0, también puedes confirmar que el tráfico se enruta a través del túnel:

tracert 8.8.8.8

El primer salto debería ser la dirección IP interna del servidor WireGuard.

Comprobación del protocolo de establecimiento de conexión de WireGuard

El handshake es el indicador más útil a la hora de diagnosticar una conexión WireGuard. En la aplicación WireGuard, abre el túnel y observa el campo «Último handshake ». En un túnel que funciona correctamente, el handshake aparece a los pocos segundos de la activación y, a continuación, se actualiza periódicamente mientras se transfieren datos. Si el túnel está inactivo, puede transcurrir algún tiempo entre un handshake y otro, por lo que es normal que haya un breve intervalo. Si el campo permanece vacío, los pares no pueden comunicarse entre sí, lo que suele indicar un punto final (Endpoint) incorrecto, un puerto UDP cerrado o claves que no coinciden.

También puedes comprobar el handshake desde la línea de comandos con la herramienta wg que se incluye con WireGuard:

wg show

La salida muestra cada par junto con la hora de su último protocolo de enlace y sus contadores de transferencia.

Entender AllowedIPs

El valor de AllowedIPs en la configuración del cliente determina qué tráfico se envía a través del túnel. En resumen, en el cliente, AllowedIPs establece qué paquetes se envían al túnel, mientras que en el servidor determina qué paquetes se aceptan de un cliente determinado y hacia dónde se enrutan.

Un valor de 0.0.0.0/0 enruta todo el tráfico a través del túnel, incluida la navegación habitual por Internet. Úsalo cuando desees una protección total del tráfico. Para que este tráfico llegue a Internet, el servidor debe traducirlo. Consulta «Configuración de NAT en el servidor para un tunelamiento completo» más abajo.

Un valor como 10.0.0.0/24 enruta únicamente el tráfico de la red interna a través del túnel, mientras que el tráfico habitual de Internet sigue utilizando la conexión normal. Utilízalo cuando solo necesites acceder a recursos específicos de la red remota.

Puede indicar varias subredes separadas por comas, por ejemplo, 10.0.0.0/24, 192.168.1.0/24.

Tip

La opción «Bloquear tráfico no tunelizado (kill-switch) » del editor de túneles surte pleno efecto con AllowedIPs = 0.0.0.0/0. Bloquea cualquier tráfico que salga del túnel, lo que también bloquea la red local. Si necesitas acceder a impresoras u otros dispositivos de la LAN, deja el kill-switch desactivado.

Warning

Configurar AllowedIPs = 0.0.0.0/0 hace que todas las conexiones pasen por el túnel. Si aplicas esto en un servidor remoto que gestionas a través de RDP, la sesión RDP puede interrumpirse en el momento en que el túnel se active, ya que el tráfico del servidor se redirige. En un servidor al que se accede mediante RDP, redirige solo las subredes que necesites y prueba con un valor reducido de AllowedIPs antes de cambiar a 0.0.0.0/0.

Configuración de NAT en el servidor para un tunelado completo

Si los clientes utilizan AllowedIPs = 0.0.0.0/0 y quieres que su tráfico llegue realmente a Internet a través del servidor, este debe traducir las direcciones internas de WireGuard a su propia dirección externa. En Windows, esto se hace con el comando New-NetNat, no con los scripts PostUp y PostDown que se utilizan en Linux.

Abre PowerShell como administrador en el servidor y ejecuta lo siguiente, utilizando la subred del túnel que hayas asignado al servidor:

New-NetNat -Name WireGuardNAT -InternalIPInterfaceAddressPrefix 10.0.0.0/24

Sustituye 10.0.0.0/24 por tu subred de túnel y asegúrate de que el prefijo cubra todas las direcciones de cliente que asignes. Un cliente fuera de este rango, por ejemplo 10.0.1.2, no se vería afectado por esta regla. Puedes revisar las reglas activas en cualquier momento:

Get-NetNat

Para eliminar la regla NAT más adelante, ejecuta:

Remove-NetNat -Name WireGuardNAT

Si los clientes se conectan y el establecimiento de conexión se realiza correctamente, pero su tráfico de Internet sigue sin pasar por el servidor, habilita el reenvío de IP en las interfaces implicadas en el enrutamiento y vuelve a realizar la prueba. La sintaxis exacta depende de la versión de Windows; por ejemplo:

Set-NetIPInterface -InterfaceAlias "Ethernet" -Forwarding Enabled

Aplícalo a la interfaz externa que transporta el tráfico de Internet y a la interfaz de WireGuard, utilizando sus nombres reales obtenidos mediante Get-NetIPInterface.

Info

New-NetNat requiere Windows 10, Windows 11 o Windows Server 2016 y versiones posteriores, y en algunos sistemas es necesario que la característica Hyper-V esté habilitada, incluso si no se utiliza Hyper-V para otros fines. En algunos planes de VPS no se puede habilitar Hyper-V, lo que impide utilizar este método. El hecho de que New-NetNat por sí solo sea suficiente o de que también sea necesario habilitar el reenvío de IP puede depender de la versión de Windows, así que compruébalo en tu servidor cuando el túnel completo no funcione

Solución de problemas

El túnel está activo, pero no hay conexión con el servidor. Comprueba que el puerto UDP de WireGuard, por ejemplo el 51820, esté abierto en el cortafuegos del servidor. Confirma que las claves públicas se hayan copiado correctamente entre las configuraciones del servidor y del cliente. Asegúrate de que el «Endpoint» de la configuración del cliente apunte a la dirección IP pública real del servidor, no a la dirección interna del túnel.

El DNS no funciona tras la conexión. Añade un servidor DNS a la sección de la interfaz del cliente:

[Interface] PrivateKey = ... Address = ... DNS = 1.1.1.1, 1.0.0.1

Los contadores de paquetes no aumentan. El túnel no está transmitiendo datos. Comprueba que «AllowedIPs» esté configurado correctamente en ambos lados, que las direcciones internas de WireGuard no entren en conflicto con la red local existente y que el «ListenPort» no esté ya en uso por otra aplicación.

Necesitas más detalles para diagnosticar el problema. Abre el túnel en la aplicación WireGuard y consulta la pestaña «Log», que registra los handshakes, los errores y los eventos de conexión a medida que se producen. Puedes exportar el registro desde allí si necesitas compartirlo.

Iniciar WireGuard automáticamente tras reiniciar el servidor

Para que el túnel siga funcionando tras los reinicios, instálalo como un servicio de Windows. Cuando un túnel se instala como servicio, se inicia automáticamente tras un reinicio. Abre el Símbolo del sistema o PowerShell como administrador y ejecuta lo siguiente, utilizando la ruta a tu archivo de configuración del servidor:

wireguard /installtunnelservice "C:\Program Files\WireGuard\wg_server.conf"

Ejecuta este comando solo una vez, no en cada inicio del sistema. Al activar el túnel desde la aplicación WireGuard, normalmente se instala el mismo servicio, por lo que en muchos casos basta con activarlo una sola vez. Para eliminar el servicio más adelante, utiliza el nombre del túnel, que es el nombre del archivo de configuración sin la extensión .conf.

wireguard /uninstalltunnelservice wg_server

Para reiniciar el servicio, por ejemplo, tras editar la configuración, ejecuta primero el comando de desinstalación y, a continuación, vuelve a ejecutar el comando de instalación.

Info

Dado que el túnel se ejecuta como un servicio, no es necesaria una tarea independiente en el Programador de tareas.

Reinicia el servidor y comprueba que el túnel se inicia por sí solo.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA