Cliente 1.1.1
Funciones de WireGuard que vienen en el protocolo y en el cliente para Windows.
Cryptokey Routing es la función que se encuentra primero: una clave pública más una lista AllowedIPs. El handshake es Noise_IKpsk2_25519_ChaChaPoly_BLAKE2s, con Curve25519, ChaCha20-Poly1305 y BLAKE2s. La compilación de Windows que corresponde a esta página es 1.1.1, del 20 de septiembre de 2026.
Actualizado el .
La criptografía es una sola construcción
La página del protocolo nombra un conjunto fijo. No hay menú de cifrados. Una clave precompartida opcional añade un secreto simétrico extra. Si esa clave no está, la construcción usa 32 bytes a cero. El handshake busca confidencialidad directa perfecta, ocultación de la identidad y protección contra reinyección, y evita reservar estado de sesión para un paquete que no supera la comprobación mac1.
| Primitiva | Función |
|---|---|
| ChaCha20-Poly1305 | Cifrado autenticado de paquetes, construcción del RFC 7539. |
| XChaCha20-Poly1305 | Se usa donde el protocolo pide un nonce aleatorio de 24 bytes. |
| Curve25519 | ECDH. Las claves públicas son puntos Curve25519. |
| BLAKE2s | Hash y hash con clave, RFC 7693. |
| SipHash24 | Claves de tabla hash. |
| HKDF | Derivación de claves, RFC 5869. |
| Noise_IKpsk2 | Patrón de handshake. Cadena de construcción: Noise_IKpsk2_25519_ChaChaPoly_BLAKE2s. |
El libro blanco dice que la implementación de Linux queda por debajo de 4.000 líneas, sin contar las primitivas criptográficas, de modo que una persona pueda leerla. Un recuento público posterior del árbol del núcleo situó los archivos C un poco por encima cuando se incluían las cabeceras. Linux 5.6, publicado el 29 de marzo de 2020, incorporó el túnel. Una auditoría de terceros anterior a esa versión no encontró vulnerabilidades y añadió una nota de defensa en profundidad.
Cryptokey Routing
Cada interfaz tiene una clave privada y una lista de pares. Cada par tiene una clave pública y AllowedIPs. Al enviar, la dirección de destino elige el par, el paquete se cifra para esa clave pública y UDP lo lleva al endpoint del par. Al recibir, el paquete debe descifrarse para un par conocido y el origen interior debe estar en los AllowedIPs de ese par. Si no, se descarta.
Por eso una regla de cortafuegos a menudo puede coincidir con «desde esta dirección, en esta interfaz» y tratar el paquete como ya autenticado. IPv4 e IPv6 pueden compartir un par. El puerto de escucha habitual en los ejemplos es 51820. El tuyo puede ser otro.
Cliente para Windows, WireGuardNT
El repositorio de Windows describe este cliente como la forma oficial de ejecutar WireGuard en Windows. Usa WireGuardNT. El servicio administrador, WireGuardManager, posee la interfaz de la bandeja. Cada túnel es un servicio aparte llamado WireGuardTunnel$ y el nombre de la configuración.
La importación acepta un archivo .conf o un .zip. La versión 1.1.1 rechaza nombres duplicados en una misma importación. El administrador vigila la carpeta de configuraciones, cifra un archivo nuevo a .conf.dpapi con CryptProtectData, lo limita a Local System y borra la copia en claro. Exportar desde la interfaz vuelve a escribir las configuraciones.
Un par con AllowedIPs 0.0.0.0/0 o ::/0 activa Block untunneled traffic (Bloquear el tráfico fuera del túnel). Las rutas /1 omiten ese comportamiento del cortafuegos. El editor tiene una casilla para ello. Pasos si la red se queda en silencio
| Comando | Qué hace |
|---|---|
| wireguard /installtunnelservice path.conf | Crea WireGuardTunnel$ y el nombre de la configuración. |
| wireguard /uninstalltunnelservice name | Quita ese servicio de túnel. |
| wireguard /installmanagerservice | Instala WireGuardManager para la interfaz de la bandeja. |
| wireguard /dumplog | Imprime el registro circular compartido. Añade /tail para seguirlo. |
| wireguard /update | Ejecuta el actualizador. La interfaz también puede hacerlo. |
| wireguard /removedriver | Quita el controlador del adaptador cuando no queda ningún adaptador de túnel. |
PreUp, PostUp, PreDown y PostDown solo se ejecutan si está definida la clave de registro de administrador que los permite. Un archivo .conf.dpapi necesita Local System o un administrador para wg show.
Dónde corre el mismo túnel
| Sistema | Qué se instala | Nota |
|---|---|---|
| Windows 10, 11, Server 2016 a 2025 | MSI o el instalador que lo obtiene | Cliente 1.1.1. amd64 y x86 pesan 3.3 MB. arm64 pesa 2.9 MB. MIT. |
| Linux | Módulo del núcleo desde 5.6, más wireguard-tools | En el árbol desde el 29 de marzo de 2020. Las distribuciones empaquetan las herramientas. Términos GPL de la compilación del núcleo. |
| macOS | Cliente de la App Store, o wireguard-tools desde Homebrew o MacPorts | La vía de las herramientas es un túnel de línea de comandos, no el MSI de Windows. |
| Android e iOS | Aplicaciones de las tiendas. Android también tiene un APK directo. | Los teléfonos pueden importar un código QR. El cliente de Windows importa un archivo. |
| FreeBSD, OpenBSD | Paquete wireguard o wireguard-tools | Figuran en la página de instalación del proyecto junto con los demás sistemas. |
Los archivos de este sitio son los MSI de Windows. Los demás sistemas usan sus propios paquetes. Versión, tamaño y requisitos de Windows
Itinerancia, keepalive y contenedores
Los dos lados envían al endpoint más reciente que produjo un paquete autenticado. Un portátil puede cambiar de red sin una configuración nueva. El servidor aprende el endpoint de un cliente con el primer paquete válido, así que la configuración del servidor a menudo no tiene línea Endpoint para ese par.
PersistentKeepalive vale 0 de forma predeterminada. Pon 25 solo si el par está detrás de NAT o de un cortafuegos con estado y debe aceptar sesiones nuevas cuando el tráfico se queda en silencio. La edición exacta
En Linux, la interfaz usa el espacio de nombres de red donde se creó. Puedes moverla al espacio de nombres de un contenedor para que la única salida de ese contenedor sea el túnel.
[Interface]
PrivateKey = (stays on the machine that owns it)
Address = 10.10.10.2/32
[Peer]
PublicKey = gN65BkIKy1eCE9pP1wdc8ROUtkHLF2PfAqYdyYBz6EA=
AllowedIPs = 10.10.10.230/32
Endpoint = 192.95.5.69:51820
PersistentKeepalive = 25
Direcciones de ejemplo publicadas y una clave pública de ejemplo publicada. No reutilices la clave. Omite PersistentKeepalive cuando no lo necesites.