GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de Tailscale sur Windows pour réseauter plus facilement avec WSL2 et Visual Studio Code

Tailscale est un "VPN" maillé sans configuration qui s'exécute sur d'autres réseaux et "aplatit" efficacement les réseaux et permet aux utilisateurs/services de communiquer plus facilement (et en toute sécurité) entre eux.

Par exemple, j'ai beaucoup écrit sur la façon de SSH dans WSL2 sur Windows 10 à partir d'une autre machine et vous remarquerez qu'il n'y a pas seulement une tonne d'étapes mais il y a plus d'une façon de le faire !

J'en ai parlé pour SSH, mais si vous êtes un développeur actif et que vous souhaitez partager les services et les sites sur lesquels vous travaillez avec vos collègues et collaborateurs, il y a une quantité non négligeable de configuration, de gestion et de maintenance à gérer. avec.

Autrement dit, "ne serait-il pas plus facile si nous étions tous sur le même réseau et sous-réseau ?"

WSL1 partage sa pile réseau avec Windows 10, donc la "machine" est la même. Quel que soit YourMachineName, l'exécution d'un service sur 5000 est la même s'il s'agit d'un service Windows ou d'une application exécutée sous Linux sous WSL1. Cependant, dans WSL2, votre environnement Linux est "derrière" votre hôte Windows. Bien que WSL2 facilite l'accès à http://localhost:5000 grâce à une redirection de port transparente, votre machine Linux WSL2 n'est pas vraiment un pair sur le même réseau que vos autres appareils.

L'utilisation d'un système de réseau sans configuration comme Tailscale (et des services similaires) uniformise les règles du jeu - et le réseau. En raison de certaines caractéristiques de WSL2, il y a quelques pièges. Voici comment je l'ai fait fonctionner pour moi.

Tailscale sur WSL2

Obtenir WSL

  • Installez WSL2 - suivez les instructions ici
  • Installer une distribution Linux - J'ai utilisé Ubuntu 20.04
    • passer par le processus, créer un utilisateur, etc.
  • Installez le terminal Windows :c'est tellement mieux et améliore vraiment votre expérience en ligne de commande

Obtenir Tailscale

  • Installer Tailscale - J'ai utilisé les instructions d'Ubuntu 20.04

Modifier WSL2

  • Je n'arrive pas à faire démarrer Tailscale aujourd'hui sur WSL2 avec l'installation ipv6, donc je l'ai désactivé.
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Exécuter Tailscale

Ici, vous démarrez le démon. Il n'y a pas (encore) de systemd sur WSL2, mais si vous utilisez une version sur Windows 10 build 21286, il existe des moyens d'exécuter des commandes au démarrage dans le sous-système Windows pour Linux. Personnellement, je le fais simplement dans un script bash.

sudo tailscaled 

WSL n'a aucun moyen d'effectuer un processus de connexion interactif, vous devez donc créer une clé de pré-authentification pour authentifier une seule machine. Utilisez ensuite cette clé, comme je le fais ici, pour afficher Tailscale dans WSL :

tailscale up --authkey=tskey-9e85d94f237c54253cf0

J'aime garder cela ouvert dans un autre onglet Terminal ou volet de fenêtre afin que je puisse regarder les journaux. C'est intéressant et verbeux !

Dans le panneau d'administration des machines Tailscale, vous pouvez voir toutes les machines vivant sur votre nouveau réseau Tailscale. Notez que j'ai scottha-proto répertorié comme Windows et scottha-proto-1 répertorié comme Linux. Le premier est ma machine hôte et le second (le -1) est mon instance Linux WSL2 ! Ils sont maintenant sur un réseau plat !

J'ai également pu inviter un utilisateur extérieur à mon réseau avec la nouvelle fonctionnalité (à venir) de partage de nœud Tailscale. Mon ami Glenn ne fait PAS partie de mon organisation, mais tout comme j'utilise OneDrive ou DropBox pour créer un lien pour accéder à UNE entité mais pas à TOUT le système, je peux faire la même chose ici.

Maintenant, je peux demander à Glenn d'accéder à un service fonctionnant en WSL2 depuis sa maison.

Créer un service et le lier au réseau Tailscale

J'ai installé .NET 5 dans mon système WSL2 Ubuntu, créé un dossier et exécuté dotnet new web pour créer un microservice Hello World.

Lorsque j'exécute le service - .NET ou Node, ou autre - il est essentiel que le service écoute sur le réseau Tailscale. Votre système Linux dans WSL2 est "multi-hébergé" et est connecté à plusieurs réseaux. Par défaut, mes systèmes de développement n'écoutent que sur localhost.

Pour .NET, il existe plusieurs façons d'écouter sur tous les réseaux (y compris Tailscale) mais j'ai utilisé celui-ci :

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

Donc, ici, je me connecte à l'adresse IP Tailscale associée à mon instance WSL2 et je lance mon service Linux en cours d'exécution :

Jusqu'où pouvons-nous aller? Eh bien, puisque je suis sur le réseau Tailscale et que Glenn s'y est connecté, tout le réseau est plat, donc utiliser mon service est trivial ! Me voici sur Teams avec mon bureau en bas et le bureau de Glenn en haut.

Cool. Jusqu'où pouvons-nous aller ?

Ajouter le code Visual Studio et l'extension SSH de développement à distance

Ok, donc réseau sécurisé plat, pas de limites ! Puis-je faire en sorte que mon instance WSL2 soit traitée comme un système de développement à distance pour Glenn ? Bien sûr, pourquoi pas?

Pour être clair - c'est juste moi qui parle et expérimente, mais il y a quelque chose ici. Cela peut également être multiplateforme, Mac vers Windows vers WSL2, etc. Vous pouvez également utiliser cette section pour créer une machine virtuelle dans n'importe quel hôte ou hébergeur cloud, installer Tailscale, ne plus vous soucier de la redirection de port et l'utiliser comme boîte de développement. Oui, vous pouvez simplement utiliser WSL local, mais c'est amusant et peut être exploité d'autres manières intéressantes.

Sur ma machine WSL2, je vais démarrer le service ssh. Je pourrais partager des clés publiques et effectuer une connexion basée sur une clé appropriée, mais pour cela, je le ferai par nom d'utilisateur.

Je vais modifier /etc/ssh/sshd_config et définissez le port, ListenAddress et PasswordAuthentication sur Oui. Voici un exemple :

Port 22
#AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

PasswordAuthentication yes

J'ai fait de Glenn un super utilisateur local uniquement dans mon instance WSL2 :

sudo adduser glenn
usermoid -aG sudo glenn

Glenn installe ensuite le pack de développement à distance VS Code et se connecte à distance via SSH à mon adresse IP Tailscale. Ici, vous pouvez voir que VS Code de la machine de Glenn est en train d'installer le serveur VS Code et les développeurs distants, et Glenn et le code avec VS Code architecturalement divisé en deux avec le client sur sa machine Windows et le serveur sur mon instance WSL2.

Notez que dans le coin inférieur gauche, vous pouvez voir que son code VS est connecté à l'adresse IP Tailscale de mon instance WSL2 Linux !

Qu'en pensez-vous ?

Vous pouvez comparer Tailscale à des choses comme NGrok qui offre un tunnelier localhost orienté développeur, mais il y a quelques différences importantes. Faire votre recherche! Je n'ai aucune relation avec cette entreprise autre que je suis un fan.

Parrain : Le parrain de cette semaine, c'est... moi ! Ce blog et mon podcast sont un travail d'amour depuis 19 ans. Votre parrainage paie mes factures d'hébergement pour les deux ET me permet d'acheter des gadgets à revoir ET le taco occasionnel. Rejoins moi!


Linux
  1. Obtenez podman opérationnel sur Windows en utilisant Linux

  2. Premiers pas avec Visual Studio Code (VSC) sous Linux

  3. Comment installer les extensions de code Visual Studio

  4. Comment installer Visual Studio Code sur CentOS 7 ?

  5. Comment utiliser Qt dans Visual Studio Code ?

Utilisation de Tailscale sur Windows pour réseauter plus facilement avec WSL2 et Visual Studio Code

Débogage à distance d'une application .NET Core Linux dans WSL2 à partir de Visual Studio sous Windows

Déplacez facilement les distributions WSL entre les machines Windows 10 avec importation et exportation !

Ruby on Rails sur Windows n'est pas seulement possible, c'est fabuleux en utilisant WSL2 et VS Code

Écriture et débogage d'applications Linux C++ à partir de Visual Studio à l'aide du sous-système Windows pour Linux

Comment mettre en réseau Ubuntu et Windows 10 ?