VPNSmith
self-host-vpn-headINFO

Tailscale Funnel: la palabra que pone tu aplicación en internet público

Tailscale Serve comparte un servicio local dentro de tu tailnet. Tailscale Funnel lo pone en internet abierto, al alcance de cualquiera. Misma sintaxis, una palabra de diferencia, exposición opuesta. Qué hace Funnel en realidad, sus tres puertos permitidos, qué hay que activar antes y cuándo encaja mejor Cloudflare Tunnel.

Por Eric Gerard · Fundador · VPNSmith - Especialista en VPN self-host y VPS GDPR5 min de lecturaFoto vía Pexels

Dos comandos de Tailscale se diferencian en una palabra. tailscale serve comparte un servicio local con los dispositivos de tu propio tailnet. tailscale funnel encamina el tráfico desde internet en sentido amplio hacia ese mismo servicio, al alcance de cualquiera que tenga la URL.

Misma sintaxis, exposición opuesta. Ese es todo el artículo en dos frases, pero equivocarse de sentido deja en internet abierto un servicio que creías privado, así que conviene ser preciso sobre lo que Funnel hace y lo que no.

Qué es Funnel en realidad

La descripción de Tailscale es directa: Funnel «permite encaminar tráfico desde internet en sentido amplio hacia un servicio local que se ejecuta en un dispositivo de tu red Tailscale». El objetivo es compartir con personas que no están en tu tailnet y no tienen cuenta de Tailscale.

Serve es el caso inverso, y la documentación lo dice sin rodeos: si quieres compartir servicios locales solo con los demás dispositivos de tu tailnet, usa Serve.

La decisión no es una preferencia técnica, es una pregunta sobre tu público:

  • Solo tus máquinas y las personas invitadas al tailnet → Serve.
  • Cualquiera con el enlace, incluidos desconocidos → Funnel.

Si no sabes responder a esa pregunta para un servicio concreto, no ejecutes todavía ninguno de los dos comandos.

Las tres restricciones que deciden si Funnel encaja

Funnel es deliberadamente estrecho, y sus límites están documentados en lugar de descubrirse sobre la marcha. Tres de ellos resuelven la mayoría de los casos antes de escribir una línea de configuración.

Los puertos: 443, 8443, 10000. Esa es la lista entera. Funnel solo puede escuchar en esos tres. No es un valor por defecto que se pueda sobrescribir: si tu servicio debe ser accesible públicamente en otro puerto, Funnel no es la herramienta.

El nombre de host pertenece a Tailscale. Funnel solo puede usar nombres DNS del dominio de tu tailnet, con la forma tailnet-name.ts.net. Si pensabas poner un producto, una demo para clientes o algo con tu marca en un dominio propio, no es lo que hace.

El ancho de banda está limitado, y el límite no es tuyo. Tailscale afirma que el tráfico enviado por Funnel está sujeto a límites no configurables. Para una página de configuración o una herramienta interna pequeña, da igual. Para transmitir una mediateca a familiares, ese tope será seguramente la restricción, antes que tu velocidad de subida.

Primer plano de las manos de un desarrollador sobre un teclado frente a una pantalla llena de código
Primer plano de las manos de un desarrollador sobre un teclado frente a una pantalla llena de código

La parte que se salta: no hay ningún inicio de sesión delante

Esta es la razón por la que la confusión Serve/Funnel importa más que una errata cualquiera.

La documentación de Tailscale no describe ninguna capa de autenticación delante de un punto de entrada Funnel, y es por diseño: toda su finalidad es servir a gente que no está en tu tailnet y que, por tanto, no puede ser autenticada por él. Funnel te da una entrada HTTPS pública; no te da una puerta.

Consecuencia práctica: la autenticación de tu aplicación es lo único que hay entre internet y tus datos. Un panel sin contraseña, un explorador de archivos que confía en la red local, un panel de administración que solo era accesible desde tu LAN: todos quedan abiertos en cuanto se «funnelan» en lugar de servirse.

Antes de activarlo sobre nada, la prueba honesta cabe en una pregunta: ¿publicaría esta URL abiertamente sin incomodidad? Si la respuesta es no, el servicio necesita su propia autenticación, o necesita Serve en lugar de Funnel.

Activarlo: primero el archivo de políticas

Funnel no está activo por defecto en un nodo. Requiere un atributo de nodo funnel en el archivo de políticas de tu tailnet, que le indica a Tailscale qué usuarios pueden utilizarlo. Por defecto, ese permiso va a autogroup:member.

Esa indirección merece entenderse en vez de saltarse: significa que Funnel es una decisión administrativa a nivel de tailnet, no solo un comando que alguien ejecuta en su portátil. En un tailnet compartido, quien controla el archivo de políticas controla si alguien puede exponer servicios públicamente.

★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · 200+ Mbps garantizados

Un VPS con su propia IP pública, sin túnel → ContaboIPv4 pública · Tú controlas el cortafuegos, los puertos y el proxy inverso · Sin tope de ancho de banda impuesto por terceros

Cuándo Funnel es la respuesta correcta y cuándo no

Funnel encaja cuando quieres dar a alguien ajeno a tu tailnet una URL HTTPS que funcione con el mínimo de ceremonia: un endpoint de webhook que un servicio externo debe alcanzar, una vista previa de lo que estás construyendo, un envío temporal. Los certificados y la entrada pública se gestionan por ti, y funciona en todos los planes.

Funnel no encaja cuando necesitas un dominio propio, un puerto fuera de los tres permitidos, caudal sostenido o una capa de autenticación que controles. Esos requisitos apuntan a otra parte: un proxy inverso en una máquina con IP pública propia, o un producto de túnel construido en torno a dominios personalizados.

Y para el caso en el que la gente suele pensar al recurrir a Funnel — quiero que mis propios dispositivos alcancen este servicio desde cualquier lugar — ni Funnel ni un túnel público son la respuesta. Eso ya lo hace el tailnet, y lo hace un nodo de salida o un servidor WireGuard autoalojado sin exponer nada públicamente.

Lo esencial

serve y funnel están a una palabra de distancia en la terminal y son opuestos en lo que publican. Serve mantiene un servicio dentro del tailnet; Funnel lo pone en internet, en uno de tres puertos, bajo un nombre ts.net, con un tope de ancho de banda y sin nada que autentique a los visitantes.

Decide a qué público te diriges realmente antes de teclear cualquiera de los dos. Si la respuesta es «mis propias máquinas», nunca necesitaste una entrada pública, y la exposición más segura es la que jamás se abrió.

★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · 200+ Mbps garantizados

Aloja tu VPN en tu propio VPS → ContaboAcceso root completo · IPv4 pública · elige tu región

Preguntas frecuentes

¿Cuál es la diferencia entre Tailscale Funnel y Tailscale Serve?
Serve comparte un servicio local solo con los demás dispositivos de tu tailnet. Funnel encamina el tráfico desde internet en sentido amplio hacia ese servicio, así que cualquiera puede alcanzarlo, incluidas personas sin cuenta de Tailscale. La documentación es explícita: si quieres compartir solo con tus propios dispositivos, usa Serve. Los comandos se parecen muchísimo, y por eso ocurre el error.
¿Qué puertos puede usar Tailscale Funnel?
Solo tres: 443, 8443 y 10000. Es un límite duro, no un valor por defecto que puedas sobrescribir. Si tu servicio debe ser accesible públicamente en otro puerto, Funnel no es la herramienta adecuada y necesitas un proxy inverso u otro túnel.
¿Funnel pone autenticación delante de mi servicio?
No. La documentación de Tailscale no describe ninguna capa de autenticación integrada delante de un punto de entrada Funnel: precisamente su finalidad es servir a personas que no están en tu tailnet. La autenticación de tu propia aplicación es lo único que separa internet de tus datos. Si la aplicación no tiene inicio de sesión, está abierta.
¿Hace falta un plan de pago para usar Funnel?
No. Tailscale indica que Funnel está disponible en todos los planes. Lo que sí hace falta es el atributo de nodo «funnel» en el archivo de políticas de tu tailnet, que determina qué usuarios pueden activarlo; por defecto, autogroup:member.
¿Qué nombre de host usa un punto de entrada Funnel?
Uno del propio dominio de tu tailnet, con la forma tailnet-name.ts.net. Funnel no puede servir directamente un dominio tuyo, lo cual importa si pensabas alojar ahí un producto.
¿Es Funnel lo bastante rápido para transmitir contenido multimedia?
El tráfico que pasa por Funnel está sujeto a límites de ancho de banda que Tailscale describe como no configurables. Está pensado para compartir un servicio, no para una difusión sostenida. Para una mediateca compartida con gente ajena a tu tailnet, es probable que el límite sea la restricción antes que tu subida.