Ein moderner, einfacher TCP -Tunnel in Rost, der lokale Ports einem Remote -Server aussetzt und die Firewalls von Standard -NAT -Verbindung umgeht. Das ist alles, was es tut: nicht mehr und nicht weniger.
# Installation (erfordert Rost, siehe Alternativen unten) Ladung Installieren Sie Bohrungs-Cli# auf Ihrem örtlichen Maschinenbore Local 8000-to Bohrung.pub
Dadurch wird Ihr lokaler Port bei localhost:8000
dem öffentlichen Internet bei bore.pub:<PORT>
, wobei die Portnummer zufällig zugewiesen wird.
Ähnlich wie bei LocalTunnel und NGROK soll bore
ein hocheffizientes, nicht optimiertes Werkzeug zum Weiterleiten von TCP-Verkehr sein, das einfach zu installieren und einfach zu veranstalten ist, ohne dass die Schnickschnack befestigt ist.
( bore
von etwa 400 Zeilen sicherer, asynchronischer Rostcode und ist trivial eingerichtet - führen Sie einfach eine einzige Binärdatei für Client und Server aus.)
Wenn Sie auf MacOS sind, wird bore
als Homebrew -Kernformel verpackt.
Brew Install Bohrung-Cli
Ansonsten ist der einfachste Weg, Bohrungen zu installieren, aus vorgebauten Binärdateien. Diese finden Sie auf der Releases -Seite für MacOS, Windows und Linux. Entpacken Sie einfach die entsprechende Datei für Ihre Plattform und verschieben Sie die ausführbare bore
in einen Ordner auf Ihrem Pfad.
Sie können auch bore
aus der Quelle mit Fracht, dem Rust -Paket -Manager, bauen. Dieser Befehl installiert die bore
Binary auf einem benutzergerechten Pfad.
Fracht Installieren Sie Bohrungs-Cli
Wir veröffentlichen auch versionierte Docker -Bilder für jede Version. Das Bild ist für eine AMD 64-Bit-Architektur erstellt. Sie sind mit der spezifischen Version markiert und ermöglichen es Ihnen, den statisch verknüpften bore
von einem minimalen "Kratzer" -Container auszuführen.
Docker Run -it - -init - -RM -Network -Host Ekzhang/Bohrung <args>
In diesem Abschnitt wird die detaillierte Verwendung für den bore
-CLI -Befehl beschrieben.
Sie können einen Port auf Ihrem lokalen Computer weiterleiten, indem Sie den bore local
verwenden. Dies erfordert ein Positionsargument, den lokalen Port, um sowohl weiterzuleiten, als auch eine --to
Option, die die Adresse des Remote -Servers angibt.
Bohrung lokal 5000 -nach Bohrung.pub
Sie können optional eine Option --port
übergeben, um einen bestimmten Port auf der Fernbedienung auszuwählen, um auszusetzen, obwohl der Befehl fehlschlägt, wenn dieser Port nicht verfügbar ist. Durch Passing --local-host
können Sie neben der Loopback-Adresse localhost
einen anderen Host in Ihrem örtlichen Netzwerk aufdecken.
Die vollständigen Optionen sind unten angezeigt.
Startet einen lokalen Proxy mit dem Remote -Server Nutzung: Lokale [Optionen] -to> <local_port> Argumente: <Local_Port> Der lokale Port zur Enthüllung Optionen: -l,-Local-Host <Host> Der lokale Host, der entlarvt [Standard: localhost] -t, -zu <an> Adresse des Remote -Servers, um lokale Ports an [Env: bore_server =] auszusetzen -P, --port <Port> Optionaler Port auf dem Remote -Server auszuwählen [Standard: 0] -S, -Sekret <Secret> Optionales Geheimnis für die Authentifizierung [env: bore_secret] -h, -Help Print -Hilfeinformationen
Wie in den Startanweisungen erwähnt, gibt es eine öffentliche Instanz des bore
bei bore.pub
. Wenn Sie jedoch in Ihrem eigenen Netzwerk selbst bore
möchten, können Sie dies mit dem folgenden Befehl tun:
Bohrerserver
Das ist alles, was es braucht! Nachdem der Server an einer bestimmten Adresse ausgeführt wurde, können Sie den Befehl bore local
mit Option --to <ADDRESS>
aktualisieren, um einen lokalen Port an diesem Remote -Server weiterzuleiten.
Die vollständigen Optionen für den bore server
-Befehl finden Sie unten.
Führt den Remote -Proxy -Server aus Verwendung: Bohrerserver [Optionen] Optionen: -Min-Port <min_port> Minimum akzeptiert TCP-Portnummer [Standard: 1024, env: bore_min_port] -Max-Port <max_port> Maximum akzeptierte TCP-Portnummer [Standard: 65535, env: bore_max_port] -S, -Sekret <Secret> Optionales Geheimnis für die Authentifizierung [env: bore_secret] -h, -Help Print -Hilfeinformationen
Bei 7835
gibt es einen impliziten Kontrollport , der zum Erstellen neuer Verbindungen bei Bedarf verwendet wird. Bei der Initialisierung sendet der Client eine "Hallo" -Meldung an den Server am TCP -Steuerport und bittet um einen ausgewählten Remote -Port. Der Server reagiert dann mit einer Bestätigung und laugt nach externen TCP -Verbindungen.
Immer wenn der Server eine Verbindung am Remote -Port erhält, generiert er eine sichere UUID für diese Verbindung und sendet sie an den Client zurück. Der Client öffnet dann einen separaten TCP -Stream an den Server und sendet eine "Akzeptanz" -Rokal, die die UUID in diesem Stream enthält. Der Server stellt dann die beiden Verbindungen untereinander an.
Aus Gründen der Richtigkeit und zur Vermeidung von Speicherlecks werden eingehende Verbindungen nur vom Server bis zu 10 Sekunden gespeichert, bevor der Client sie nicht akzeptiert.
Bei einer benutzerdefinierten Bereitstellung von bore server
können Sie optional ein Geheimnis benötigen, um zu verhindern, dass der Server von anderen verwendet wird. Das Protokoll verlangt von Clients, den Besitz des Geheimnisses auf jeder TCP -Verbindung zu überprüfen, indem zufällige Herausforderungen in Form von HMAC -Codes beantwortet werden. (Dieses Geheimnis wird nur für den anfänglichen Handschlag verwendet, und standardmäßig wird kein weiterer Datenverkehr verschlüsselt.)
# auf dem Serverbore -Server -Sekret my_secret_string# auf der Clientbore Local <Lococ_port> -to> -Secret my_secret_string
Wenn in den Argumenten kein Geheimnis vorhanden ist, wird bore
auch versucht, aus der Umgebungsvariablen BORE_SECRET
zu lesen.
Erstellt von Eric Zhang (@ekzhang1). Lizenziert unter der MIT -Lizenz.
Der Autor bedankt sich bei den Mitwirkenden und Betreuern des Tokio -Projekts, dass er es ermöglicht, ergonomische und effiziente Netzwerkdienste in Rost zu schreiben.