Wireguard: vpn moderna simple y segura
Volver al blog

Wireguard: vpn moderna simple y segura

Julio 2026 — Julio 2026 26 vistas

Si alguna vez has tenido que configurar una VPN tradicional como IPsec u OpenVPN, sabes lo tedioso que puede ser. Certificados, configuraciones enormes, y un rendimiento que a veces deja mucho que desear. WireGuard es todo lo contrario: simple, rápido, y con una seguridad que da tranquilidad.

¿Qué es WireGuard?

WireGuard es un protocolo VPN moderno, de código abierto, que se configura con un par de llaves — como SSH — y ocupa solo ~4,000 líneas de código. Corre directamente en el kernel de Linux (y también en Windows, macOS, BSD, iOS y Android), lo que lo hace increíblemente eficiente.

Cómo funciona

WireGuard usa algo llamado Cryptokey Routing: básicamente asocias una clave pública con las direcciones IP que ese peer puede usar. Cuando envías un paquete, lo cifras con la clave del peer correcto y lo mandas a su endpoint. Cuando recibes uno, lo descifras, verificas que venga de quien dice ser, y lo dejas pasar si la IP de origen está permitida. Simple.

flowchart TD
    subgraph Server[Servidor WireGuard]
        WG_S[wg0]
        P1["Peer A - 10.0.0.2/32"]
        P2["Peer B - 10.0.0.3/32"]
        P3["Peer C - 10.0.0.4/32"]
        WG_S --> P1 & P2 & P3
    end

    subgraph Clients[Clientes]
        C1[Móvil - 10.0.0.2]
        C2[Laptop - 10.0.0.3]
        C3[IoT - 10.0.0.4]
    end

    P1 -.->|Túnel cifrado UDP :51820| C1
    P2 -.->|Túnel cifrado UDP :51820| C2
    P3 -.->|Túnel cifrado UDP :51820| C3

Cómo usarlo

En el servidor:

# Instalar
sudo apt install wireguard

# Generar llaves
wg genkey | tee server_private.key | wg pubkey > server_public.key

/etc/wireguard/wg0.conf:

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <server_private.key>

[Peer]
PublicKey = <public_key_cliente>
AllowedIPs = 10.0.0.2/32

En el cliente:

[Interface]
PrivateKey = <clave_privada_cliente>
Address = 10.0.0.2/24
DNS = 10.2.2.100

[Peer]
PublicKey = <public_key_servidor>
Endpoint = <ip-servidor>:51820
AllowedIPs = 0.0.0.0/0
sudo wg-quick up wg0

Y ya. Túnel activo.

Lo que me gusta de WireGuard

  • Roaming automático: cambias de red (WiFi a 4G) y la conexión no se cae.
  • No contamina: si un paquete no se puede descifrar, simplemente lo ignora. Ni siquiera responde.
  • Rápido: al vivir en el kernel, el rendimiento es cercano al de la interfaz física.
  • Perfect Forward Secrecy: si alguien obtiene tu clave privada después, no puede descifrar sesiones pasadas.

En mi proyecto

WireGuard es la base de conectividad de mi VPN + DNS - Infraestructura de Red Centralizada. Ahí lo uso junto con Pi-hole para que cualquier dispositivo — esté donde esté — tenga acceso a la red interna con el mismo DNS, el mismo filtrado, y la misma seguridad, todo por un túnel cifrado que apenas nota que está ahí.


Relacionado: - VPN + DNS - Infraestructura de Red Centralizada - WireGuard.com - Quick Start

Volver al blog