Un tunnel TCP moderne et simple dans la rouille qui expose les ports locaux à un serveur distant, en contournant les pare-feu de connexion NAT standard. C'est tout ce qu'il fait: pas plus, et rien de moins.
# Installation (nécessite de la rouille, voir les alternatives ci-dessous) Installation de cargaison Bore-Cli # Sur votre machinebore local local local 8000 --to bore.pub
Cela exposera votre port local à localhost:8000
à Internet public sur bore.pub:<PORT>
, où le numéro de port est attribué au hasard.
Semblable à LocalTunnel et Ngrok, à l'exception de bore
il est destiné à être un outil très efficace et non opiné pour transmettre le trafic TCP simple à installer et facile à héberger, sans fioritures.
( bore
totalise environ 400 lignes de code de rouille en toute sécurité et asynchrone et est trivial à configurer - il suffit d'exécuter un seul binaire pour le client et le serveur.)
Si vous êtes sur macOS, bore
est emballé sous forme de formule de noyau.
Brew Install Bore-CLI
Sinon, le moyen le plus simple d'installer l'alésage provient de binaires prédéfinis. Ceux-ci sont disponibles sur la page des versions pour macOS, Windows et Linux. Décompressez simplement le fichier approprié pour votre plate-forme et déplacez l'exécutable bore
dans un dossier sur votre chemin.
Vous pouvez également construire bore
à partir de la source à l'aide de cargo, le Rust Package Manager. Cette commande installe le binaire bore
sur un chemin accessible à l'utilisateur.
Installation de cargaison Bore-CLI
Nous publions également des images docker versées pour chaque version. L'image est conçue pour une architecture AMD 64 bits. Ils sont tagués avec la version spécifique et vous permettent d'exécuter le binaire bore
lié au statique à partir d'un conteneur "à gratter" minimal.
docker run -it - init --rm --network hôte ekzhang / bore <ggs>
Cette section décrit une utilisation détaillée de la commande bore
CLI.
Vous pouvez transmettre un port sur votre machine locale en utilisant la commande bore local
. Cela prend un argument positionnel, le port local à transmettre, ainsi qu'une option obligatoire --to
pour spécifier l'adresse du serveur distant.
alésage local 5000 - à forcer.pub
Vous pouvez éventuellement transmettre une option --port
pour choisir un port spécifique sur la télécommande à exposer, bien que la commande échouera si ce port n'est pas disponible. En outre, passer --local-host
vous permet d'exposer un hôte différent sur votre réseau local en plus de l'adresse de bouclage localhost
.
Les options complètes sont présentées ci-dessous.
Démarre un proxy local au serveur distant Utilisation: portant des arguments locaux [Options] --to <To> <local_port>: <local_port> le port local à exposer Options: -l, --local-host <host> l'hôte local pour exposer [par défaut: localhost] -T, --to <à> Adresse du serveur distant pour exposer les ports locaux à [Env: bore_server =] -p, --port <port> Port facultatif sur le serveur distant pour sélectionner [par défaut: 0] -s, - secrète <cre secret> Secret facultatif pour l'authentification [Env: bore_secret] -H, - Help Imprimer des informations d'aide
Comme mentionné dans les instructions de démarrage, il existe une instance publique du serveur bore
exécutant sur bore.pub
. Cependant, si vous souhaitez l'auto- bore
sur votre propre réseau, vous pouvez le faire avec la commande suivante:
alésage
C'est tout ce qu'il faut! Une fois que le serveur a commencé à s'exécuter à une adresse donnée, vous pouvez ensuite mettre à jour la commande bore local
avec l'option --to <ADDRESS>
pour transférer un port local sur ce serveur distant.
Les options complètes pour la commande bore server
sont affichées ci-dessous.
Exécute le serveur proxy distant Utilisation: serveur d'alésage [Options] Options: --min-port <min_port> numéro de port TCP minimum accepté [par défaut: 1024, env: bore_min_port] - max-port <max_port> Numéro de port TCP maximum accepté [par défaut: 65535, env: bore_max_port] -s, - secrète <cre secret> Secret facultatif pour l'authentification [Env: bore_secret] -H, - Help Imprimer des informations d'aide
Il existe un port de contrôle implicite à 7835
, utilisé pour créer de nouvelles connexions à la demande. À l'initialisation, le client envoie un message "Hello" au serveur du port de contrôle TCP, demandant à proxyer un port distant sélectionné. Le serveur répond ensuite par une reconnaissance et commence à écouter les connexions TCP externes.
Chaque fois que le serveur obtient une connexion sur le port distant, il génère un UUID sécurisé pour cette connexion et le renvoie au client. Le client ouvre ensuite un flux TCP séparé sur le serveur et envoie un message "accepter" contenant l'UUID sur ce flux. Le serveur indique ensuite les deux connexions entre elles.
Pour des raisons d'exactitude et pour éviter les fuites de mémoire, les connexions entrantes ne sont stockées que par le serveur jusqu'à 10 secondes avant d'être jetées si le client ne les accepte pas.
Sur un déploiement personnalisé de bore server
, vous pouvez éventuellement exiger un secret pour empêcher le serveur d'être utilisé par d'autres. Le protocole oblige les clients à vérifier la possession du secret sur chaque connexion TCP en répondant aux défis aléatoires sous forme de codes HMAC. (Ce secret n'est utilisé que pour la poignée de main initiale, et aucun autre trafic n'est chiffré par défaut.)
# sur le serveur Serverbore - secrète my_secret_string # sur le clientbore local <local_port> --to <To> - secret my_secret_string
Si un secret n'est pas présent dans les arguments, bore
tentera également de lire à partir de la variable d'environnement BORE_SECRET
.
Créé par Eric Zhang (@ ekzhang1). Licencié sous la licence du MIT.
L'auteur tient à remercier les contributeurs et maintenants du projet Tokio pour avoir permis d'écrire des services de réseau ergonomiques et efficaces à Rust.