GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von Tailscale unter Windows für eine einfachere Vernetzung mit WSL2 und Visual Studio Code

Tailscale ist ein konfigurationsfreies Mesh-"VPN", das auf anderen Netzwerken läuft und Netzwerke effektiv "flacht" und es Benutzern/Diensten ermöglicht, einfacher (und sicherer) miteinander zu kommunizieren.

Zum Beispiel habe ich ausführlich darüber geschrieben, wie man SSH in WSL2 unter Windows 10 von einem anderen Computer herstellt und Sie werden feststellen, dass es nicht nur eine Menge Schritte gibt, sondern es gibt mehr als einen Weg, es zu tun !

Ich habe darüber für SSH gesprochen, aber wenn Sie ein aktiver Entwickler sind und die Dienste und Sites, an denen Sie arbeiten, mit Ihren Kollegen und Mitarbeitern teilen möchten, müssen Sie sich mit einer nicht trivialen Menge an Einrichtung, Verwaltung und Wartung befassen mit.

Anders ausgedrückt:"Wäre es nicht einfacher, wenn wir alle nur im selben Netzwerk und Subnetz wären?"

WSL1 teilt seinen Netzwerkstapel mit Windows 10, sodass die „Maschine“ dieselbe ist. Was auch immer YourMachineName ist, das Ausführen eines Dienstes auf 5000 ist dasselbe, wenn es sich um einen Windows-Dienst oder eine App handelt, die unter Linux unter WSL1 ausgeführt wird. In WSL2 befindet sich Ihre Linux-Umgebung jedoch „hinter“ Ihrem Windows-Host. Während WSL2 es einfach macht, http://localhost:5000 durch transparente Portweiterleitung zu erreichen, ist Ihr WSL2-Linux-Computer nicht wirklich ein Peer im selben Netzwerk wie Ihre anderen Geräte.

Die Verwendung eines konfigurationsfreien Netzwerksystems wie Tailscale (und ähnlicher Dienste) ebnet das Spielfeld – und das Netzwerk. Aufgrund einiger Eigenschaften von WSL2 gibt es ein paar Fallstricke. So habe ich es für mich zum Laufen gebracht.

Tailscale auf WSL2

WSL abrufen

  • Installieren Sie WSL2 – folgen Sie den Anweisungen hier
  • Installieren Sie eine Linux-Distribution - ich habe Ubuntu 20.04
      verwendet
    • den Prozess durchlaufen, einen Benutzer erstellen usw.
  • Installieren Sie das Windows-Terminal – es ist einfach viel besser und macht Ihre Befehlszeilenerfahrung wirklich besser

Schwanzschuppe erhalten

  • Installieren Sie Tailscale - Ich habe die Ubuntu 20.04-Anweisungen verwendet

Ändern Sie WSL2

  • Ich kann Tailscale heute nicht auf WSL2 mit IPv6-Installation starten, also deaktiviere ich es.
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Tailscale ausführen

Hier starten Sie den Daemon. Es gibt (noch) kein systemd auf WSL2, aber wenn Sie eine Version über Windows 10 Build 21286 verwenden, gibt es Möglichkeiten, Befehle beim Start im Windows-Subsystem für Linux auszuführen. Ich persönlich mache das einfach in einem Bash-Skript.

sudo tailscaled 

WSL hat keine Möglichkeit, einen interaktiven Anmeldeprozess durchzuführen, daher möchten Sie einen Vorauthentifizierungsschlüssel erstellen, um einen einzelnen Computer zu authentifizieren. Verwenden Sie dann diesen Schlüssel, wie ich es hier tue, um Tailscale in WSL aufzurufen:

tailscale up --authkey=tskey-9e85d94f237c54253cf0

Ich lasse dies gerne in einem anderen Terminal-Tab oder Fensterbereich geöffnet, damit ich die Protokolle ansehen kann. Es ist interessant und ausführlich!

Im Verwaltungsbereich der Tailscale-Maschinen können Sie alle Maschinen sehen, die sich in Ihrem neuen Tailscale-Netzwerk befinden. Beachten Sie, dass ich scottha-proto als Windows und scottha-proto-1 als Linux aufgelistet habe. Der erste ist mein Host-Computer und der zweite (der -1) ist meine Linux-WSL2-Instanz! Sie befinden sich jetzt in einem flachen Netzwerk!

Ich konnte auch einen Benutzer von außerhalb meines Netzwerks mit der neuen (in Kürze erhältlichen) Tailscale-Funktion zum Teilen von Knoten einladen. Mein Freund Glenn ist NICHT in meiner Organisation, aber so wie ich OneDrive oder DropBox verwende, um einen Link zu erstellen, um auf EINE Entität zuzugreifen, aber nicht auf das GANZE System, kann ich dasselbe hier tun.

Jetzt kann ich Glenn von seinem Haus aus auf einen Dienst zugreifen lassen, der in WSL2 ausgeführt wird

Erstellen Sie einen Dienst und binden Sie ihn an das Tailscale-Netzwerk

Ich habe .NET 5 in meinem WSL2-Ubuntu-System installiert, einen Ordner erstellt und dotnet new web ausgeführt um einen „Hello World“-Microservice zu erstellen.

Wenn ich den Dienst ausführe – .NET oder Node oder was auch immer – ist es wichtig, dass der Dienst das Tailscale-Netzwerk überwacht. Ihr Linux-System in WSL2 ist „multi-homed“ und mit mehreren Netzwerken verbunden. Standardmäßig lauschen meine Entwicklersysteme nur auf localhost.

Für .NET gibt es mehrere Möglichkeiten, auf allen Netzwerken (einschließlich Tailscale) zu lauschen, aber ich habe diese verwendet:

dotnet run --urls http://*:5100;https://*:5101

Hier habe ich mich also mit der Tailscale-IP verbunden, die mit meiner WSL2-Instanz verknüpft ist, und auf meinen Linux-Dienst zugegriffen, der darin ausgeführt wird:

Wie weit können wir das bringen? Nun, da ich im Tailscale-Netzwerk bin und Glenn sich damit verbunden hat, ist das gesamte Netzwerk flach, also ist es trivial, meinen Service zu treffen! Hier bin ich in Teams mit meinem Desktop unten und Glenns Desktop oben.

Kühl. Wie weit können wir gehen?

Fügen Sie Visual Studio Code und die SSH-Erweiterung für die Remote-Entwicklung hinzu

Ok, also flaches sicheres Netzwerk, keine Grenzen! Kann ich dafür sorgen, dass meine WSL2-Instanz als Remote-Entwicklungssystem für Glenn behandelt wird? Sicher warum nicht?

Um es klar zu sagen - hier rede und experimentiere nur ich, aber hier ist etwas. Dies kann auch plattformübergreifend sein, von Mac zu Windows zu WSL2 usw. Sie können diesen Abschnitt sicherlich auch verwenden, um eine VM in einem beliebigen Cloud-Host oder Hoster zu erstellen, Tailscale zu installieren, sich keine Gedanken mehr über die Portweiterleitung zu machen und es als Entwicklungsbox zu verwenden. Ja, Sie können WSL einfach lokal verwenden, aber das macht Spaß und kann auf andere coole Weise ausgenutzt werden.

Auf meinem WSL2-Rechner starte ich den ssh-Dienst. Ich könnte öffentliche Schlüssel teilen und eine ordnungsgemäße schlüsselbasierte Anmeldung durchführen, aber dafür werde ich es mit dem Benutzernamen tun.

Ich werde /etc/ssh/sshd_config bearbeiten und setzen Sie Port, ListenAddress und PasswordAuthentication auf Yes. Hier ist ein Beispiel:

Port 22
#AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

PasswordAuthentication yes

Ich habe Glenn nur in meiner WSL2-Instanz zu einem lokalen Superuser gemacht:

sudo adduser glenn
usermoid -aG sudo glenn

Glenn installiert dann das VS Code Remote Development Pack und verbindet sich mit Remote über SSH mit meiner Tailscale-IP. Hier können Sie sehen, dass VS Code von Glenns Maschine tatsächlich den VS Code Server und entfernte Entwickler installiert, und Glenn und Code mit VS Code architektonisch in zwei Hälften geteilt mit dem Client auf seinem Windows-Rechner und dem Server auf meiner WSL2-Instanz.

Beachten Sie in der unteren linken Ecke, dass sein VS-Code mit der Tailscale-IP meiner WSL2-Linux-Instanz verbunden ist!

Was denkst du?

Sie können Tailscale mit Dingen wie NGrok vergleichen, das einen entwicklerorientierten Localhost-Tunneller anbietet, aber es gibt einige wichtige Unterschiede. Recherchieren Sie! Ich habe keine Beziehung zu diesem Unternehmen, außer dass ich ein Fan bin.

Sponsor: Der Sponsor dieser Woche bin ich! Dieser Blog und mein Podcast sind seit 19 Jahren eine Herzensangelegenheit. Ihr Sponsoring bezahlt meine Hosting-Rechnungen für beide UND ermöglicht es mir, Gadgets zu kaufen, um sie zu überprüfen, UND gelegentlich einen Taco. Begleite mich!


Linux
  1. Bringen Sie podman unter Windows mit Linux zum Laufen

  2. Erste Schritte mit Visual Studio Code (VSC) unter Linux

  3. So installieren Sie Visual Studio-Codeerweiterungen

  4. Wie installiere ich Visual Studio Code unter CentOS 7?

  5. Wie verwende ich Qt in Visual Studio Code?

Verwenden von Tailscale unter Windows für eine einfachere Vernetzung mit WSL2 und Visual Studio Code

Remotedebuggen einer .NET Core-Linux-App in WSL2 von Visual Studio unter Windows

Verschieben Sie WSL-Verteilungen einfach zwischen Windows 10-Computern mit Import und Export!

Ruby on Rails unter Windows ist nicht nur möglich, es ist fabelhaft mit WSL2 und VS Code

Schreiben und Debuggen von Linux-C++-Anwendungen aus Visual Studio mit dem Windows-Subsystem für Linux

Wie vernetzt man Ubuntu und Windows 10?