Bore - Un tunnel TCP rapide et léger pour exposer vos ports locaux sur le net
Si vous avez déjà galéré à rendre accessible votre serveur web local à des testeurs externes, ne désespérez pas car aujourd’hui, je vais vous présenter Bore, un petit utilitaire qui va vous changer la vie, comme tous les supers outils que je vous présente ici.
Développé par Eric Zhang (celui-là même qui nous avait déjà régalés avec SSHX hier), Bore est un tunnel TCP nouvelle génération codé en Rust. Son objectif est de vous permettre d’exposer n’importe quel port local sur Internet en quelques secondes, sans prise de tête avec la configuration de votre box ou de votre pare-feu.
Contrairement à certaines solutions qui vous noient sous des fonctionnalités dont vous n’aurez jamais l’utilité, Bore adopte une philosophie radicalement simple : il fait une seule chose, mais il la fait particulièrement bien. Son code source ne fait que 400 lignes de Rust asynchrone sécurisé, ce qui en fait probablement l’un des outils les plus légers et les plus auditables dans sa catégorie.
Plusieurs options s’offrent à vous pour installer Bore :
Sur macOS via Homebrew : bashbrew install bore-cli
Via Cargo (le gestionnaire de paquets Rust) : bashcargo install bore-cli
Avec Docker : bashdocker run -it --init --rm --network host ekzhang/bore <ARGS>
Vous pouvez aussi télécharger directement les binaires précompilés sur la page des releases GitHub pour Windows, macOS ou Linux.
Imaginez que vous développiez une application web sur le port 8000 en local et que vous souhaitiez la montrer à un client. Et bien rien de plus simple, voici comment procéder :
bore local 8000 --to bore.pub
Et voilà !!! Votre application est instantanément accessible via bore.pub:<PORT>
, où <PORT>
est un numéro attribué automatiquement. Pas de compte à créer, pas de configuration complexe, pas de limitation de bande passante cachée.
Bien que minimaliste, Bore propose quelques options bien pensées :
--local-host
: pour exposer un service qui n’est pas sur localhost--port
: pour choisir un port spécifique sur le serveur distant (si disponible)--secret
: pour sécuriser l’accès avec une clé partagée
Bore.pub est super pratique pour des tests rapides, mais rien ne vous empêche d’héberger votre propre serveur Bore. C’est très intéressant pour une utilisation en entreprise par exemple :
bore serverbore local 8000 --to votre-serveur.com
Vous pouvez même configurer des plages de ports autorisés et un secret d’authentification :
bore server --min-port 1024 --max-port 65535 --secret votresecret
Bore utilise surtout une architecture intelligente basée sur deux composants :
- Un port de contrôle (7835) qui gère l’établissement des connexions
- Des connexions TCP distinctes pour chaque tunnel de données
Comme ça, quand un client demande à exposer un port, voici ce qui se passe :
- Le client envoie une requête “Hello” au serveur
- Le serveur commence à écouter sur le port distant
- Pour chaque nouvelle connexion entrante, le serveur génère un UUID
- Le client ouvre une nouvelle connexion TCP et envoie l’UUID
- Le serveur fait le pont entre les deux connexions
Bien sûr, pour des raisons de sécurité, les connexions entrantes ne sont conservées que pendant 10 secondes maximum avant d’être supprimées si le client ne les accepte pas. L’authentification par secret utilise également un système de challenge-réponse basé sur des codes HMAC pour vérifier la possession du secret à chaque connexion TCP. Aussi, cette vérification ne concerne que la phase initiale de connexion, le trafic n’étant pas chiffré par défaut.
Quelques règles essentielles à garder à l’esprit quand même :
- Utilisez toujours l’option
--secret
sur un serveur public - Limitez les ports exposés au strict nécessaire
- Surveillez les connexions entrantes
- N’exposez pas de services sensibles sans authentification supplémentaire
Bien sûr, Bore n’est pas la solution universelle et si vous avez besoin de fonctionnalités avancées comme le support HTTPS, l’inspection du trafic ou des règles de routage complexes, vous devrez quand même vous tourner vers des alternatives comme ngrok ou localtunnel…. Mais pour 90% des cas d’usage, la simplicité et l’efficacité de Bore en font un choix excellent. C’est une fois encore l’illustration parfaite du principe UNIX : faire une seule chose, mais la faire parfaitement. C’est ce que je fais depuis +20 ans avec mon site quand j’y pense… lol.