VPNSmith
self-host-vpn-headINFO

Tailscale Funnel : le mot qui met votre application sur l'internet public

Tailscale Serve partage un service local à l'intérieur de votre tailnet. Tailscale Funnel le met sur l'internet ouvert, accessible à n'importe qui. Même syntaxe, un mot d'écart, exposition inverse. Ce que Funnel fait réellement, ses trois ports autorisés, ce qu'il faut activer avant, et quand Cloudflare Tunnel convient mieux.

Par Eric Gerard · Fondateur · VPNSmith - Spécialiste self-host VPN & VPS GDPR5 min de lecturePhoto via Pexels

Deux commandes Tailscale ne diffèrent que d'un mot. tailscale serve partage un service local avec les appareils de votre propre tailnet. tailscale funnel achemine le trafic depuis l'internet au sens large vers ce même service, accessible à quiconque possède l'URL.

Même syntaxe, exposition inverse. C'est tout l'article en deux phrases — mais se tromper de sens laisse sur l'internet ouvert un service que vous croyiez privé, alors il vaut la peine d'être précis sur ce que Funnel fait, et ne fait pas.

Ce qu'est réellement Funnel

La description de Tailscale est directe : Funnel « permet d'acheminer le trafic depuis l'internet au sens large vers un service local tournant sur un appareil de votre réseau Tailscale ». L'objectif est de partager avec des personnes qui ne sont pas sur votre tailnet et n'ont pas de compte Tailscale.

Serve est le cas inverse, et la documentation le dit sans détour : si vous voulez partager des services locaux uniquement avec les autres appareils de votre tailnet, utilisez Serve.

La décision n'est donc pas une préférence technique, c'est une question sur votre public :

  • Uniquement vos machines et les personnes invitées dans le tailnet → Serve.
  • N'importe qui avec le lien, y compris des inconnus → Funnel.

Si vous ne savez pas répondre à cette question pour un service donné, ne lancez encore aucune des deux commandes.

Les trois contraintes qui décident si Funnel convient

Funnel est volontairement étroit, et ses limites sont documentées plutôt que subies. Trois d'entre elles tranchent la plupart des cas avant même d'écrire une ligne de configuration.

Les ports : 443, 8443, 10000. C'est toute la liste. Funnel ne peut écouter que sur ces trois-là. Ce n'est pas une valeur par défaut à surcharger — si votre service doit être joignable publiquement sur un autre port, Funnel n'est pas le bon outil.

Le nom d'hôte appartient à Tailscale. Funnel ne peut utiliser que des noms DNS du domaine de votre tailnet, de la forme tailnet-name.ts.net. Si vous comptiez poser un produit, une démo client ou quoi que ce soit portant votre marque sur un domaine à vous, ce n'est pas ce que fait cet outil.

La bande passante est plafonnée, et le plafond n'est pas le vôtre. Tailscale indique que le trafic envoyé via Funnel est soumis à des limites non configurables. Pour une page de configuration ou un petit outil interne, sans importance. Pour diffuser une médiathèque à des proches, ce plafond sera probablement la contrainte, avant votre débit montant.

Gros plan des mains d'un développeur sur un clavier devant un écran rempli de code
Gros plan des mains d'un développeur sur un clavier devant un écran rempli de code

Ce que l'on saute : il n'y a aucune authentification devant

C'est la raison pour laquelle la confusion Serve/Funnel compte davantage qu'une faute de frappe ordinaire.

La documentation de Tailscale ne décrit aucune couche d'authentification devant un point d'entrée Funnel — et c'est délibéré, puisque toute la finalité est de servir des gens qui ne sont pas sur votre tailnet et ne peuvent donc pas être authentifiés par lui. Funnel vous donne un point d'entrée HTTPS public ; il ne vous donne pas de porte.

Conséquence pratique : l'authentification de votre application est la seule chose entre l'internet et vos données. Un tableau de bord sans mot de passe, un explorateur de fichiers qui fait confiance au réseau local, un panneau d'administration qui n'était joignable que depuis votre LAN — tous deviennent ouverts dès l'instant où ils sont « funnelés » plutôt que « servis ».

Avant d'activer cela sur quoi que ce soit, le test honnête tient en une question : serais-je à l'aise de publier cette URL publiquement ? Si la réponse est non, le service a besoin de sa propre authentification, ou bien de Serve plutôt que de Funnel.

L'activer : le fichier de politique d'abord

Funnel n'est pas actif par défaut sur un nœud. Il exige un attribut de nœud funnel dans le fichier de politique de votre tailnet, qui indique à Tailscale quels utilisateurs ont le droit de s'en servir. Par défaut, ce droit va à autogroup:member.

Cette indirection mérite d'être comprise plutôt que cliquée : elle signifie que Funnel est une décision administrative au niveau du tailnet, pas seulement une commande qu'un utilisateur lance sur son portable. Dans un tailnet partagé, celui qui contrôle le fichier de politique contrôle la possibilité même d'exposer des services publiquement.

★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · 200+ Mbps garantis

Un VPS avec sa propre IP publique, sans tunnel → ContaboIPv4 publique · Vous maîtrisez le pare-feu, les ports et le reverse proxy · Aucun plafond de bande passante imposé par un tiers

Quand Funnel est la bonne réponse, et quand il ne l'est pas

Funnel convient quand vous voulez donner à quelqu'un d'extérieur à votre tailnet une URL HTTPS qui marche, avec un minimum de cérémonie : un point d'entrée webhook qu'un service tiers doit atteindre, un aperçu de ce que vous construisez, un partage temporaire. Les certificats et le point d'entrée public sont pris en charge, et cela fonctionne sur tous les plans.

Funnel ne convient pas quand il vous faut un domaine à vous, un port hors des trois autorisés, un débit soutenu, ou une couche d'authentification que vous maîtrisez. Ces besoins pointent ailleurs : un reverse proxy sur une machine avec sa propre IP publique, ou un produit de tunnel bâti autour des domaines personnalisés.

Et pour le cas auquel les gens pensent le plus souvent en se tournant vers Funnel — je veux que mes propres appareils atteignent ce service depuis n'importe où — ni Funnel ni un tunnel public n'est la réponse. C'est ce que le tailnet fait déjà, et ce qu'un nœud de sortie ou un serveur WireGuard auto-hébergé fait sans rien exposer publiquement.

L'essentiel

serve et funnel sont à un mot d'écart dans le terminal et opposés dans ce qu'ils publient. Serve garde un service à l'intérieur du tailnet ; Funnel le met sur l'internet, sur l'un de trois ports, sous un nom d'hôte ts.net, avec un plafond de bande passante et rien qui authentifie les visiteurs.

Décidez du public que vous visez réellement avant de taper l'une ou l'autre. Si la réponse est « mes propres machines », vous n'aviez jamais besoin d'un point d'entrée public — et l'exposition la plus sûre reste celle que l'on n'a jamais ouverte.

★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · 200+ Mbps garantis

Héberge ton VPN sur ton propre VPS → ContaboAccès root complet · IPv4 publique · choisis ta région

Questions fréquentes

Quelle est la différence entre Tailscale Funnel et Tailscale Serve ?
Serve partage un service local uniquement avec les autres appareils de votre tailnet. Funnel achemine le trafic depuis l'internet au sens large vers ce service, donc n'importe qui peut l'atteindre — y compris des gens sans compte Tailscale. La documentation est explicite sur cette séparation : si vous voulez partager seulement avec vos propres appareils, utilisez Serve. Les deux commandes se ressemblent presque, et c'est précisément pour cela que l'erreur arrive.
Quels ports Tailscale Funnel peut-il utiliser ?
Trois seulement : 443, 8443 et 10000. C'est une limite dure, pas une valeur par défaut que l'on peut contourner. Si votre service doit être joignable publiquement sur un autre port, Funnel n'est pas le bon outil et il vous faut un reverse proxy ou un autre tunnel.
Tailscale Funnel place-t-il une authentification devant mon service ?
Non. La documentation de Tailscale ne décrit aucune couche d'authentification intégrée devant un point d'entrée Funnel — c'est justement le principe de Funnel que de servir des personnes qui ne sont pas sur votre tailnet. La seule chose entre l'internet et votre service est l'authentification de votre application elle-même. Si elle n'en a pas, le service est ouvert.
Faut-il un plan payant pour utiliser Funnel ?
Non. Tailscale indique que Funnel est disponible sur tous les plans. Ce qu'il faut, c'est l'attribut de nœud « funnel » dans le fichier de politique de votre tailnet, qui détermine quels utilisateurs ont le droit de l'activer — par défaut autogroup:member.
Quel nom d'hôte utilise un point d'entrée Funnel ?
Un nom appartenant au domaine de votre propre tailnet, de la forme tailnet-name.ts.net. Funnel ne peut pas servir directement un domaine qui vous appartient, ce qui compte si vous comptiez y héberger un produit.
Funnel est-il assez rapide pour diffuser des médias ?
Le trafic passant par Funnel est soumis à des limites de bande passante que Tailscale décrit comme non configurables. C'est conçu pour partager un service, pas pour de la diffusion soutenue. Pour une médiathèque partagée avec des personnes extérieures à votre tailnet, attendez-vous à ce que la limite soit la contrainte, plutôt que votre débit montant.