Publier un service qui tourne sur un portable ou sur un serveur derrière un routeur, pour recevoir un webhook, montrer une démo ou accéder à un panneau interne, est devenu une tâche quotidienne dans de nombreuses équipes, et le choix de l’outil a plus d’implications qu’il n’y paraît. Il existe des options open source qui se déploient sur une infrastructure propre, comme frp, zrok, sish ou la redirection de ports de SSH, et des services gérés comme Cloudflare Tunnel, Tailscale Funnel ou ngrok, dans lesquels le trafic passe par le réseau d’un tiers.
Les points clés des tunnels pour services locaux en 20 secondes
- frp, zrok, sish et SSH permettent de garder le point d’extrémité public sur une infrastructure propre.
- Cloudflare Tunnel, Tailscale Funnel et ngrok sont plus pratiques, mais placent un tiers sur le chemin.
- Tout tunnel est une porte d’entrée vers le réseau interne et exige une authentification.
- Pour avoir uniquement du HTTPS en local, aucun tunnel n’est nécessaire.
Chez OpenSecurity, nous avons publié un guide détaillé des outils de HTTPS local et de tunnels, avec leurs risques de sécurité un par un. Ici, nous nous concentrons sur la décision de fond pour les équipes qui travaillent dans le cloud : où se termine le trafic, qui le contrôle et combien coûte son maintien.
D’abord, séparer les deux problèmes
Beaucoup de gens recourent à un tunnel alors qu’ils ont seulement besoin que le navigateur fasse confiance à leur environnement local. Cela se résout sans rien exposer, avec une autorité de certification de développement comme mkcert ou la CA interne de Caddy, ou avec un vrai certificat Let’s Encrypt obtenu par le défi DNS-01, qui ne nécessite aucune connexion entrante. Le tunnel n’a de sens que lorsque quelque chose d’extérieur, un prestataire de paiement, un client ou un collègue, doit atteindre une machine qui n’est pas accessible depuis internet.
Auto-hébergé : le point d’extrémité public est le vôtre
frp, sous licence Apache 2.0, est l’option la plus complète : un serveur sur un VPS propre et un client sur la machine locale, avec des proxys HTTP, HTTPS, TCP et UDP. zrok, également sous Apache 2.0 et fondé sur le réseau Zero Trust OpenZiti, ajoute des partages privés dans lesquels seul un autre utilisateur autorisé peut entrer. sish propose quelque chose de similaire à ngrok en utilisant uniquement SSH, et la redirection distante d’OpenSSH (ssh -R) n’exige rien à installer si l’on dispose déjà d’un serveur.
L’avantage est qu’il n’y a ni intermédiaires ni limites d’une offre gratuite, et que le trafic ne quitte pas l’infrastructure que l’on contrôle, ce qui compte lorsque l’on manipule des données de clients ou que des exigences de souveraineté s’appliquent. Le prix est opérationnel : le serveur qui joue le rôle de point d’extrémité public est un service exposé à internet qu’il faut corriger, surveiller et protéger avec des jetons ou des clés. Pour beaucoup d’entreprises, il est logique de l’héberger sur un VPS ou un serveur dédié chez un fournisseur européen, avec réseau et pare-feu gérés.
Géré : la commodité en échange de la dépendance
Cloudflare Tunnel connecte un démon open source, cloudflared, au réseau de Cloudflare par une connexion sortante, et permet de placer devant des politiques d’accès de Cloudflare Access. Tailscale Funnel ouvre sur internet un service d’un réseau Tailscale, tandis que Serve le limite aux machines de ce réseau privé. ngrok, propriétaire, se distingue par son inspecteur de requêtes, très utile pour déboguer des webhooks.
Ce sont des options rapides à mettre en service, avec des certificats valides et sans serveurs à maintenir. En contrepartie, le trafic traverse l’infrastructure d’un fournisseur américain, les conditions des offres gratuites changent fréquemment et la configuration reste liée à un compte et, dans le cas de Cloudflare, à une zone DNS hébergée chez lui. Pour des tests ponctuels, cela vaut souvent la peine ; pour des services permanents, mieux vaut y réfléchir à deux fois.
Dans les deux cas, la même règle s’applique : un tunnel est une voie d’entrée. Que la connexion soit sortante n’empêche pas n’importe qui sur internet d’atteindre le port publié. Il faut le limiter à un seul service, ajouter une authentification et le fermer quand on n’en a plus besoin.
Questions fréquentes
Quels tunnels peut-on auto-héberger ?
frp, zrok et sish, ainsi que la redirection distante de ports de SSH. Tous sont open source et s’exécutent sur un serveur propre.
Quelle différence entre Tailscale Serve et Funnel ?
Serve publie un service uniquement au sein du réseau privé de Tailscale ; Funnel l’ouvre à tout internet.
Faut-il un tunnel pour avoir du HTTPS en développement ?
Non. Une CA de développement comme mkcert ou Caddy, ou un certificat Let’s Encrypt obtenu par DNS-01, suffit.
Sources :