Saltar a contenido

WireGuard — VPN del homelab

Reemplaza a Tailscale/Headscale (jul 2026). VPN plana punto a punto, sin control plane.

Servidor

Item Valor
Interfaz wg010.66.66.1/24
Puerto 51820/udp (router monopuesto, llega directo)
Config /etc/wireguard/wg0.conf (600 root)
Servicio wg-quick@wg0 (enabled)
NAT MASQUERADE hacia enp42s0 vía PostUp (acceso a LAN 192.168.0.0/24)
Endpoint público matias7235.com.ar:51820 (registro raíz, mantenido por DDNS deSEC)

Clientes

Configs en /etc/wireguard/clients/:

Cliente IP Config
notebook 10.66.66.2 notebook.conf
celular 10.66.66.3 celular.conf

Regenerado desde cero el 2026-07-04 (claves nuevas). Un solo perfil por dispositivo: full tunnel (AllowedIPs = 0.0.0.0/0, ::/0 — todo el tráfico sale por casa, 600 Mbps simétricos) con MTU = 1380 explícito para evitar fragmentación en redes móviles.

  • DNS: 192.168.0.12 (AdGuard) → resuelve *.matias7235.com.ar a la IP LAN (split-horizon).
  • PresharedKey por peer (defensa extra post-cuántica).
  • El server ya soporta exit node sin cambios adicionales: el MASQUERADE de wg0.conf no distingue destino, y las reglas FORWARD aceptan todo el tráfico entrante/saliente de wg0.

Operaciones

sudo wg show                          # estado y handshakes
sudo systemctl restart wg-quick@wg0   # aplicar cambios de wg0.conf
sudo qrencode -t ansiutf8 < /etc/wireguard/clients/celular.conf   # QR para el móvil

Agregar un cliente nuevo

umask 077
K=$(wg genkey); P=$(echo $K | wg pubkey); PSK=$(wg genpsk)
# 1. Agregar [Peer] en /etc/wireguard/wg0.conf con PublicKey=$P, PresharedKey=$PSK, AllowedIPs=10.66.66.X/32
# 2. Crear /etc/wireguard/clients/<nombre>.conf con PrivateKey=$K (mismo formato que los existentes, Address=10.66.66.X/32)
# 3. sudo systemctl restart wg-quick@wg0

Migración desde Headscale — COMPLETADA (2026-07-04)

  • Headplane y Headscale eliminados: stacks archivados en /opt/docker/headplane.removed.20260704 y /opt/docker/headscale.removed.20260704, entradas quitadas del Caddyfile.
  • tailscaled detenido, deshabilitado y desinstalado del server (las reglas ts-* de iptables se fueron con él). Desinstalar también el cliente Tailscale de los dispositivos si quedó alguno.
  • WireGuard verificado como exit node en notebook y celular (handshakes y tráfico confirmados).