Tutoriales 7 min de lectura

Configurar VPN WireGuard en tu servidor en 10 minutos

Guía rápida para instalar y configurar un servidor VPN con WireGuard en Ubuntu, conectar clientes y asegurar el tráfico entre tu equipo y tus servidores.

Diagrama de red mostrando conexión VPN WireGuard entre clientes remotos y servidor empresarial
Diagrama de red mostrando conexión VPN WireGuard entre clientes remotos y servidor empresarial

WireGuard es el protocolo VPN que debería haber existido desde el principio. Es rápido (más que OpenVPN e IPsec), simple (un archivo de configuración de 10 líneas), seguro (criptografía moderna sin opciones inseguras) y está integrado en el kernel de Linux desde la versión 5.6. Si necesitas conectar tu equipo de forma segura a tus servidores, WireGuard es la respuesta.

En esta guía vas a tener un servidor VPN funcionando en menos de 10 minutos.

Requisitos previos

Un servidor Ubuntu 24.04 con IP pública y acceso root. Tu firewall UFW debe permitir el puerto UDP que elijas para WireGuard.

Paso 1: Instalar WireGuard

sudo apt update
sudo apt install wireguard -y

WireGuard ya está en los repositorios oficiales de Ubuntu 24.04. Verifica:

sudo modprobe wireguard
lsmod | grep wireguard

Paso 2: Generar llaves del servidor

WireGuard usa criptografía de llave pública — cada peer (servidor y cada cliente) tiene un par de llaves:

# Generar llaves del servidor
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

# Proteger la llave privada
sudo chmod 600 /etc/wireguard/server_private.key

Guarda las llaves — las necesitarás en la configuración:

echo "Privada: $(sudo cat /etc/wireguard/server_private.key)"
echo "Pública: $(sudo cat /etc/wireguard/server_public.key)"

Paso 3: Configurar el servidor

Crea el archivo de configuración de la interfaz WireGuard:

sudo tee /etc/wireguard/wg0.conf > /dev/null <<EOF
[Interface]
# Llave privada del servidor
PrivateKey = $(sudo cat /etc/wireguard/server_private.key)

# IP del servidor dentro del túnel VPN
Address = 10.10.0.1/24

# Puerto UDP donde escucha WireGuard
ListenPort = 51820

# Reglas para enrutar tráfico de los clientes a internet
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
EOF

Interfaz de red

Cambia eth0 por el nombre de tu interfaz de red principal. Puedes verificarlo con ip route | grep default. En muchos servidores cloud es ens3, ens5 o enp0s3.

Habilita el reenvío de paquetes IP (necesario para que los clientes puedan acceder a internet o a otras redes a través del servidor):

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Paso 4: Abrir el puerto en el firewall

sudo ufw allow 51820/udp comment 'WireGuard VPN'

Paso 5: Arrancar WireGuard

# Levantar la interfaz
sudo systemctl enable --now wg-quick@wg0

# Verificar estado
sudo wg show

Deberías ver la interfaz wg0 con la llave pública del servidor y el puerto de escucha.

Paso 6: Agregar un cliente

Para cada cliente que quieras conectar, necesitas generar un par de llaves y agregar su configuración al servidor.

Generar llaves del cliente

# En el servidor (o en cualquier máquina con wg)
wg genkey | tee client1_private.key | wg pubkey > client1_public.key

Agregar el peer al servidor

sudo tee -a /etc/wireguard/wg0.conf > /dev/null <<EOF

[Peer]
# Cliente: laptop-juan
PublicKey = $(cat client1_public.key)
AllowedIPs = 10.10.0.2/32
EOF

Recarga la configuración sin desconectar clientes existentes:

sudo wg syncconf wg0 <(sudo wg-quick strip wg0)

Crear la configuración del cliente

Este archivo se copia al dispositivo del usuario:

cat > client1.conf <<EOF
[Interface]
PrivateKey = $(cat client1_private.key)
Address = 10.10.0.2/24
DNS = 1.1.1.1, 8.8.8.8

[Peer]
PublicKey = $(sudo cat /etc/wireguard/server_public.key)
Endpoint = TU_IP_PUBLICA:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF

AllowedIPs = 0.0.0.0/0 enruta TODO el tráfico del cliente por la VPN (full tunnel). Si solo quieres que el tráfico hacia tu red interna pase por la VPN (split tunnel), cámbialo por la subred específica:

AllowedIPs = 10.10.0.0/24, 10.0.1.0/24

Generar código QR para móviles

Para conectar desde el celular, genera un QR que la app de WireGuard puede escanear:

sudo apt install qrencode -y
qrencode -t ansiutf8 < client1.conf

Seguridad de las llaves

La llave privada del cliente es como una contraseña. Envíala por un canal seguro (no por correo sin cifrar) y borra los archivos de llaves del servidor después de entregar la configuración al usuario.

Paso 7: Conectar el cliente

Linux

sudo apt install wireguard -y
sudo cp client1.conf /etc/wireguard/wg0.conf
sudo wg-quick up wg0

Verifica la conexión:

# Ver estado de WireGuard
sudo wg show

# Ping al servidor dentro del túnel
ping 10.10.0.1

# Verificar que tu IP pública cambió (si usas full tunnel)
curl ifconfig.me

macOS y Windows

Descarga la app oficial de WireGuard, importa el archivo client1.conf y activa el túnel.

iOS y Android

Descarga la app WireGuard desde la App Store o Play Store, escanea el código QR y activa.

Agregar más clientes

Para cada cliente nuevo, repite el proceso:

  1. Generar par de llaves
  2. Agregar [Peer] al archivo del servidor con una IP diferente (10.10.0.3/32, 10.10.0.4/32, etc.)
  3. Recargar con wg syncconf
  4. Crear el archivo de configuración del cliente

Script para automatizar

#!/bin/bash
# add-client.sh — Agrega un nuevo cliente WireGuard
# Uso: sudo ./add-client.sh nombre-del-cliente 10.10.0.X

CLIENT_NAME=$1
CLIENT_IP=$2
SERVER_PUBKEY=$(sudo cat /etc/wireguard/server_public.key)
SERVER_ENDPOINT="TU_IP_PUBLICA:51820"

# Generar llaves
wg genkey | tee "/etc/wireguard/clients/${CLIENT_NAME}_private.key" \
  | wg pubkey > "/etc/wireguard/clients/${CLIENT_NAME}_public.key"

CLIENT_PRIVKEY=$(cat "/etc/wireguard/clients/${CLIENT_NAME}_private.key")
CLIENT_PUBKEY=$(cat "/etc/wireguard/clients/${CLIENT_NAME}_public.key")

# Agregar peer al servidor
cat >> /etc/wireguard/wg0.conf <<EOF

[Peer]
# ${CLIENT_NAME}
PublicKey = ${CLIENT_PUBKEY}
AllowedIPs = ${CLIENT_IP}/32
EOF

# Recargar
wg syncconf wg0 <(wg-quick strip wg0)

# Generar config del cliente
cat > "/etc/wireguard/clients/${CLIENT_NAME}.conf" <<EOF
[Interface]
PrivateKey = ${CLIENT_PRIVKEY}
Address = ${CLIENT_IP}/24
DNS = 1.1.1.1

[Peer]
PublicKey = ${SERVER_PUBKEY}
Endpoint = ${SERVER_ENDPOINT}
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF

echo "Cliente ${CLIENT_NAME} creado. Config en /etc/wireguard/clients/${CLIENT_NAME}.conf"
qrencode -t ansiutf8 < "/etc/wireguard/clients/${CLIENT_NAME}.conf"

VPN sitio a sitio (conectar dos redes)

WireGuard también sirve para conectar dos redes — por ejemplo, la oficina con el centro de datos o con un cloud:

Oficina (10.0.1.0/24) ◄──WireGuard──► Datacenter (10.0.2.0/24)

La configuración es similar, pero en AllowedIPs de cada peer pones la subred del otro lado. Ambos lados pueden iniciar tráfico — ideal para que los usuarios de la oficina accedan a los servidores del datacenter y viceversa.

Siguientes pasos

Con WireGuard corriendo, puedes mejorar la configuración:

  • DNS privado — configura un servidor DNS dentro de la VPN (Pi-hole o Unbound) para resolver nombres internos
  • Monitoreo — agrega métricas de WireGuard a Prometheus y Grafana con wireguard_exporter
  • Alta disponibilidad — dos servidores WireGuard con failover DNS para que la VPN no tenga punto único de falla
  • Redes empresariales — diseño de VPN multi-sitio con segmentación y políticas de acceso por grupo

Conectividad segura

¿Necesitas conectar sucursales o equipos remotos de forma segura?

Diseñamos e implementamos VPN con WireGuard para conectar tus ubicaciones con seguridad, rendimiento y simplicidad.

Solicitar evaluación

Preguntas frecuentes

Temas relacionados

#vpn#wireguard#linux#seguridad#redes#tutorial

¿Te fue útil? Compártelo

Artículos relacionados

Ver todos

Consultoría gratuita

¿Necesitas una VPN empresarial para tu equipo?

Diseñamos e implementamos VPN con WireGuard para conectar sucursales, equipos remotos y acceso seguro a tu infraestructura.

Solicitar evaluación