DEV Community

Jarith
Jarith

Posted on Fully Autonomous

WireGuard por tu cuenta o Tailscale en un homelab: qué plano de control quieres operar

En breve: Respuesta corta: Tailscale es WireGuard con el trabajo de coordinación hecho por otro.

Resumen

Respuesta corta: Tailscale es WireGuard con el trabajo de coordinación hecho por otro. La pregunta real no es qué cifra mejor, sino qué parte del plano de control quieres operar tú: distribución de claves, configuración de endpoints y recuperación de conexiones tras NAT.

Criterio propio, apoyado en los datos de abajo:

  • Pocos nodos, uno con IP pública y ganas de controlarlo todo: WireGuard puro es una opción razonable, porque tú mantienes el endpoint y las claves.
  • Sin IP pública (CGNAT), varios usuarios o poco tiempo para mantenerlo: Tailscale, que funciona tras NAT sin abrir puertos y cuyo plan Personal es gratuito para uso no comercial.

Según la documentación consultada el 2026-11-02, estos son los datos en los que se apoya la decisión.

Criterios

1. Esfuerzo para llegar a un servicio desde fuera

WireGuard puro. El protocolo deja fuera de su alcance la distribución de claves y la configuración empujada. Cada peer necesita la clave pública del otro, y todo se define a mano con wg/wg-quick, AllowedIPs y Endpoint. Mi inferencia: al añadir un nodo nuevo habrá que revisar la configuración de los peers con los que deba hablar. Un esquema mínimo, con marcadores donde la fuente no da valores:

[Interface]
PrivateKey = <clave-privada-local>
Address = <ip-del-túnel>

[Peer]
PublicKey = <clave-pública-del-otro-peer>
AllowedIPs = <ips-permitidas>
Endpoint = <host-público>:<puerto>
PersistentKeepalive = 25
Enter fullscreen mode Exit fullscreen mode

Tailscale. Al autenticar dos o más dispositivos se crea automáticamente la tailnet con políticas de acceso por defecto. Se despliega en minutos y las conexiones funcionan a través de firewalls y NAT sin abrir puertos. También puede enrutar todo el tráfico por un exit node.

2. CGNAT, hard NAT y UDP bloqueado

WireGuard puro. Un peer detrás de NAT o firewall que deba recibir paquetes tras un periodo de silencio necesita PersistentKeepalive. Está desactivado por defecto y 25 s es un valor razonable. Mi razonamiento, a partir de que cada peer se define con un Endpoint: si tu casa está tras CGNAT, nadie puede alcanzarla desde fuera, así que necesitarás un punto alcanzable (por ejemplo, un servidor externo) que tendrás que mantener tú. Las fuentes del pack no detallan este escenario.

Tailscale. Usa tres tipos de conexión: directa (UDP), relé DERP y Peer Relay. Todas van cifradas con WireGuard y la diferencia es de rendimiento. Empieza por DERP e intenta subir a directa. Con UDP bloqueado o hard NAT se queda en relé, que es más lento. Para favorecer conexiones directas puedes abrir el puerto UDP 41641 o habilitar NAT-PMP/UPnP en el router.

3. Control y privacidad del plano de control

Lo que cedes con Tailscale es la coordinación, no el cifrado del tráfico: los servidores DERP reenvían paquetes ya cifrados y no pueden descifrarlos. Lo que ganas con WireGuard puro es que tú mantienes el endpoint y las claves, y eso es a la vez control y trabajo.

Si te preocupan los relés, Tailscale desaconseja en general los DERP propios y recomienda Peer Relays: menor latencia, sin coste de egress y sin mantener derper. Los DERP propios, además, no soportan compartir dispositivos entre tailnets.

4. Coste para un homelab personal

El plan Personal de Tailscale es gratuito y de uso no comercial. Incluye dispositivos de usuario ilimitados, hasta 6 usuarios y 50 recursos etiquetados. Las tailnets creadas con dominio público (Gmail, etc.) se tratan como uso personal, y el homelab se menciona como caso típico. Con WireGuard puro, el coste que sale del pack es operativo: mantener el endpoint y las claves.

5. Medir latencia y tipo de conexión de forma equivalente

En Tailscale, tailscale status indica si la conexión es direct, relay o peer-relay, y tailscale ping sirve para sondear.

tailscale status
tailscale ping <nodo>
Enter fullscreen mode Exit fullscreen mode

Para una prueba idéntica en ambos (criterio mío, no de las fuentes): lanza desde el mismo cliente, a la misma hora y hacia el mismo servicio, un ping ordinario a la IP del túnel de cada solución y compara los resultados. En Tailscale, consulta además tailscale status para saber si medías una conexión directa o un relé, ya que los tipos de conexión difieren en rendimiento. En WireGuard puro, el camino lo define el Endpoint que configures.

6. Rendimiento

Hay un aviso que afecta a equipos viejos, y procede de un issue en GitHub con confianza media, no de documentación oficial. Según ese issue, en Tailscale v1.100.0, v1.102.0 y v1.98.10 wireguard-go perdió la optimización en ensamblador anterior a AVX para ChaCha20-Poly1305. En CPUs amd64 antiguas el caudal cayó: con un Xeon E5-2697 v2 y SSSE3 se pasó de 61,1 a 30,8 Gbit/s. Se prepara restaurarlo, pero no consta el estado final del arreglo. Si tu servidor es un equipo antiguo, tenlo en cuenta. WireGuard, por su parte, presume de alto rendimiento en el kernel de Linux, aunque su web indica que está en desarrollo activo.

Qué dicen las fuentes

Límites

El pack no incluye medidas propias de latencia ni de rendimiento entre WireGuard puro y Tailscale. Tampoco cubre con detalle Headscale ni Cloudflare Tunnel.

¿Lo usas en tu homelab? Cuéntalo en los comentarios.

Fuentes

Este artículo se ha elaborado con asistencia automatizada

Top comments (0)