¿Por Qué WireGuard?

WireGuard es un protocolo VPN moderno y de alto rendimiento diseñado para la simplicidad, velocidad y seguridad fuerte. A diferencia de soluciones VPN tradicionales como OpenVPN o IPSec, WireGuard consiste en aproximadamente 4,000 líneas de código.

Requisitos Previos

  • Un servidor Linux con IP pública.
  • Acceso root o sudo en servidor y cliente.
  • Puerto UDP 51820 abierto en el firewall del servidor.

Solución Paso a Paso

1. Instalar WireGuard

sudo apt update
sudo apt install -y wireguard

2. Generar Pares de Claves

wg genkey | tee /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key
chmod 600 /etc/wireguard/private.key

3. Configurar el Servidor

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <CLAVE_PRIVADA_SERVIDOR>
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

[Peer]
PublicKey = <CLAVE_PUBLICA_CLIENTE>
AllowedIPs = 10.0.0.2/32
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0

4. Configurar el Cliente

[Interface]
Address = 10.0.0.2/24
PrivateKey = <CLAVE_PRIVADA_CLIENTE>
DNS = 1.1.1.1, 8.8.8.8

[Peer]
PublicKey = <CLAVE_PUBLICA_SERVIDOR>
Endpoint = <IP_PUBLICA_SERVIDOR>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Solución de Problemas

Sin Handshake

  1. Verifique el firewall: UDP 51820 abierto.
  2. Verifique las claves: la clave pública del peer debe ser correcta.
  3. Verifique el reenvío de IP: sysctl net.ipv4.ip_forward debe retornar 1.

Fugas DNS

Agregue DNS = 1.1.1.1 a la sección [Interface] del cliente.

Cliente Alcanza el Servidor Pero No Internet

Verifique las reglas PostUp de iptables y que el nombre de la interfaz de red sea correcto.


Resumen

  • WireGuard es un protocolo VPN moderno, rápido y simple integrado en el kernel Linux desde la versión 5.6.
  • La configuración es un solo archivo por interfaz con autenticación basada en claves.
  • Use PersistentKeepalive = 25 para clientes detrás de NAT.

Artículos Relacionados