Ir al contenido
  1. Posts/

Tailscale: la VPN mesh que cambió cómo accedo a mi homelab

·1611 palabras·8 mins

Antes de Tailscale tenía un servidor WireGuard en casa. Funcionaba, pero mantenerlo era un trabajo constante: añadir peers a mano, gestionar claves, actualizar la configuración cada vez que un dispositivo cambiaba de IP. Cuando lo dejé de lado durante tres semanas y volví a intentar conectarme desde fuera, tardé una hora en recordar cómo había configurado todo.

Eso fue hace dos años. Desde entonces uso Tailscale y no he mirado atrás.

Qué es Tailscale (y qué no es)
#

Tailscale no es una VPN tradicional donde tienes un servidor central por el que pasa todo tu tráfico. Es una red mesh: cada dispositivo se conecta directamente con los demás usando WireGuard por debajo, y un servidor de control (los servidores de Tailscale) coordina quién puede hablar con quién.

La diferencia práctica es enorme. En una VPN clásica, si estás en Madrid y tu servidor está en A Coruña, todo el tráfico pasa por ese servidor. Con una red mesh, cuando dos dispositivos se pueden ver directamente, la conexión va punto a punto. Sin latencia extra, sin cuello de botella.

Lo que Tailscale aporta por encima de WireGuard puro es la gestión de claves y el enrutamiento automático. WireGuard es el protocolo, Tailscale es la infraestructura que lo hace funcionar sin que tengas que pensar en ello.

Por qué no me quedé con WireGuard puro
#

Técnicamente WireGuard es superior en algunos aspectos. Más control, sin dependencia de servidores externos, puedes auditar todo. Lo entiendo y respeto a quien lo prefiera.

Pero en la práctica, añadir un dispositivo nuevo a WireGuard requería: generar par de claves en el dispositivo, copiar la clave pública al servidor, añadir el peer en la configuración, aplicar cambios, verificar. Con Tailscale es: instalar el cliente, hacer login. Eso es todo.

Tengo más de veinte dispositivos en mi red ahora mismo. Servidores Proxmox, VMs individuales, el Mac mini de escritorio, el portátil, el móvil, el iPad. Con WireGuard hubiera abandonado a mitad del proceso. Con Tailscale lo tuve todo conectado en una tarde.

La instalación es tan simple que da desconfianza
#

En Linux (Debian/Ubuntu):

1
2
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up

Eso abre un enlace en el terminal. Lo abres en el navegador, autentificas con tu cuenta (Google, Microsoft, GitHub), y el dispositivo aparece en el panel de control.

En Windows y macOS hay un instalador gráfico. En iOS y Android está en las tiendas. En una hora puedes tener todos tus dispositivos conectados si ya tienes claro qué quieres hacer.

La primera vez que lo instalé pensé que algo había salido mal porque fue demasiado rápido. Fui al panel de control, vi el nodo en la lista, hice ping desde otro dispositivo y respondió. Ningún error, ningún paso misterioso.

La arquitectura de mi red
#

Mi homelab tiene varios nodos Proxmox. Cada nodo tiene Tailscale instalado directamente en el hipervisor, y las VMs más importantes también tienen su propio cliente.

Para no tener que instalar Tailscale en cada VM, uso la función de subnet router. Un nodo con Tailscale puede anunciar una subred completa, y todos los dispositivos de esa subred son accesibles desde cualquier parte de la red Tailscale aunque no tengan el cliente instalado.

La configuración en el nodo que hace de router:

1
tailscale up --advertise-routes=192.168.1.0/24 --accept-routes

Y en el panel de control de Tailscale tienes que aprobar esa ruta. Es un paso deliberado para evitar que alguien anuncie rutas por error.

Con esto, desde mi portátil en cualquier sitio puedo acceder a cualquier dispositivo de mi red local como si estuviera en casa. La interfaz web de Proxmox, el NAS, el router, cualquier cosa.

ACLs: el control de acceso que pocas guías explican bien
#

Por defecto, cuando instalas Tailscale todos los dispositivos pueden comunicarse con todos. Eso está bien al principio, pero cuando tienes servidores de trabajo mezclados con el homelab personal, o cuando alguien más necesita acceso a parte de tu red, quieres más control.

Las ACLs de Tailscale se configuran en el panel de control como JSON. La sintaxis es sencilla cuando la entiendes, pero la documentación oficial asume que ya sabes lo que haces.

Un ejemplo básico que tengo yo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
{
  "acls": [
    {
      "action": "accept",
      "src": ["group:admins"],
      "dst": ["*:*"]
    },
    {
      "action": "accept",
      "src": ["tag:servers"],
      "dst": ["tag:servers:*"]
    }
  ],
  "groups": {
    "group:admins": ["[email protected]"]
  },
  "tagOwners": {
    "tag:servers": ["grupo:admins"]
  }
}

Los servidores se comunican entre ellos, los admins pueden acceder a todo, y cualquier otro dispositivo que añadas queda aislado hasta que lo permitas explícitamente. No es obligatorio complicarse así al principio, pero cuando tienes más de cinco o seis máquinas, las ACLs son lo que te mantiene organizado.

MagicDNS: el detalle que más uso en el día a día
#

Tailscale asigna a cada dispositivo una IP fija dentro del rango 100.x.x.x. Eso ya es una mejora enorme frente a WireGuard con IPs que cambian, pero lo que realmente uso es MagicDNS.

Con MagicDNS activado, cada dispositivo es accesible por su nombre. Si tengo un servidor llamado “archivos”, puedo hacer ssh archivos desde cualquier dispositivo en la red Tailscale. Sin recordar IPs, sin configurar DNS manualmente.

También puedes configurar DNS split. Tengo un AdGuard Home en casa que resuelve los dominios locales. Con Tailscale puedo anunciar ese servidor DNS solo para los dispositivos en la red, así cuando consulto “mi-servidor.local” desde fuera, la resolución pasa por el AdGuard Home de casa y funciona igual que si estuviera en la red local.

Tailscale Funnel: exponer servicios sin abrir puertos
#

Esta es una función más nueva y menos conocida. Funnel te permite exponer un servicio de tu máquina a internet a través de los servidores de Tailscale, sin abrir puertos en tu router.

1
tailscale funnel 3000

Ese comando hace que el puerto 3000 de tu máquina sea accesible desde tu-dispositivo.tu-red.ts.net. Tailscale actúa como proxy inverso.

Lo uso ocasionalmente para mostrar algo a alguien sin montarme todo el proceso de Cloudflare Tunnels. No es para uso en producción, la URL es larga y fea, pero para una demo rápida va perfectamente.

Las limitaciones que debes conocer
#

Nada es perfecto, y Tailscale tiene sus compromisos.

El servidor de control es de Tailscale. Si su servicio cae, los nuevos dispositivos no pueden autenticarse y algunos cambios de red pueden fallar. Las conexiones existentes suelen aguantar porque son punto a punto, pero dependes de ellos para la coordinación. Hay una alternativa open source llamada Headscale que te permite montar tu propio servidor de control, pero añade complejidad.

El plan gratuito tiene un límite de tres usuarios y permite un número razonable de dispositivos para uso personal. Si tienes un equipo o necesitas más, los planes de pago no son baratos.

La velocidad máxima depende de si la conexión es directa o pasa por los servidores relay de Tailscale (DERP). Cuando NAT traversal falla, el tráfico pasa por esos servidores y la latencia sube. En mi experiencia la conexión directa funciona el 90% del tiempo, pero en redes corporativas o con NAT doble puede ser problemático.

Headscale: si quieres control total
#

Si la dependencia de los servidores de Tailscale te preocupa, Headscale es una implementación open source del servidor de control que puedes montar en tu propio servidor.

El cliente de Tailscale sigue siendo el mismo, pero apuntas a tu servidor en vez de a los de Tailscale:

1
tailscale up --login-server=https://mi-headscale.mi-dominio.com

Lo probé durante un mes y funciona bien. Lo que pierdes es la comodidad del panel de control web de Tailscale y algunas funciones como Funnel. Lo que ganas es control total y ninguna dependencia externa.

Al final volví a Tailscale normal porque el panel de control me ahorra tiempo y los datos de coordinación no me preocupan especialmente, pero Headscale es una opción legítima si tienes necesidades de privacidad más estrictas.

Comparando con otras opciones
#

ZeroTier es el competidor más directo. También es mesh, también tiene un plan gratuito, también funciona bien. Lo probé antes que Tailscale y la experiencia fue similar. La diferencia principal es que Tailscale usa WireGuard (moderno, auditado, rápido) y ZeroTier tiene su propio protocolo. El rendimiento de Tailscale en mis pruebas fue consistentemente mejor.

Cloudflare Tunnels resuelve un problema diferente. Es para exponer servicios públicamente, no para acceso privado entre dispositivos. Los dos se complementan: uso Tunnels para los servicios que quiero accesibles desde internet, y Tailscale para el acceso interno.

VPN en el router (OpenVPN, WireGuard en pfSense/OPNsense) te da más control sobre el tráfico de red y no dependes de servicios externos. La contrapartida es que toda la gestión es manual y el rendimiento depende de tu router. Para homelabs grandes o con requisitos de seguridad estrictos puede tener sentido. Para uso personal, Tailscale gana en comodidad.

El resultado después de dos años
#

Mi homelab es mucho más accesible desde que uso Tailscale. Puedo estar en cualquier sitio y tener acceso a cualquier servicio como si estuviera en casa. Cuando algo falla, puedo diagnosticar desde el móvil sin necesidad de estar delante del servidor.

La gestión de la red dejó de ser algo que pienso activamente. Instalo un servidor nuevo, añado Tailscale, aparece en la lista, y ya está conectado con todo lo demás. Esa fricción cero tiene un valor que no es fácil de cuantificar hasta que lo has experimentado.

Si tienes más de dos o tres dispositivos que quieres conectar y no quieres pasar tiempo configurando y manteniendo una VPN tradicional, prueba Tailscale. El plan gratuito es más que suficiente para empezar, y la curva de aprendizaje es mínima comparada con las alternativas.