GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo di Tailscale su Windows per una rete più semplice con WSL2 e Visual Studio Code

Tailscale è una "VPN" mesh a configurazione zero che funziona su altre reti e "appiattisce" efficacemente le reti e consente agli utenti/servizi di comunicare tra loro in modo più semplice (e sicuro).

Ad esempio, ho scritto ampiamente su come eseguire SSH in WSL2 su Windows 10 da un'altra macchina e noterai che non ci sono solo un sacco di passaggi, ma c'è più di un modo per farlo !

Ne ho parlato per SSH, ma se sei uno sviluppatore attivo e vuoi condividere i servizi e i siti su cui stai lavorando con i tuoi colleghi e collaboratori, c'è una quantità non banale di configurazione, gestione e manutenzione da affrontare insieme a.

Espresso in modo diverso, "non sarebbe più facile se fossimo tutti sulla stessa rete e sottorete?"

WSL1 condivide il suo stack di rete con Windows 10, quindi la "macchina" è la stessa. Qualunque sia YourMachineName, l'esecuzione di un servizio su 5000 è la stessa se si tratta di un servizio Windows o di un'app in esecuzione in Linux sotto WSL1. Tuttavia, in WSL2, il tuo ambiente Linux è "dietro" il tuo host Windows. Mentre WSL2 rende facile raggiungere http://localhost:5000 tramite un port forwarding trasparente, la tua macchina Linux WSL2 non è davvero un peer sulla stessa rete degli altri tuoi dispositivi.

L'uso di un sistema di rete a configurazione zero come Tailscale (e servizi simili) livella il campo di gioco e la rete. A causa di alcune caratteristiche di WSL2 ci sono alcuni problemi. Ecco come l'ho fatto funzionare per me.

Tailscale su WSL2

Ottieni WSL

  • Installa WSL2:segui le istruzioni qui
  • Installa una distribuzione Linux - Ho usato Ubuntu 20.04
    • esegui il processo, crea un utente, ecc.
  • Installa il terminale di Windows:è molto meglio e migliora davvero la tua esperienza da riga di comando

Ottieni Tailscale

  • Installa Tailscale - Ho usato le istruzioni di Ubuntu 20.04

Modifica WSL2

  • Non riesco ad avviare Tailscale oggi su WSL2 con l'installazione ipv6, quindi lo disabilito.
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Esegui Tailscale

Qui avvii il demone. Non esiste (ancora) systemd su WSL2, ma se sei su una versione su Windows 10 build 21286, ci sono modi per eseguire comandi all'avvio nel sottosistema Windows per Linux. Personalmente, lo faccio semplicemente in uno script bash.

sudo tailscaled 

WSL non ha un modo per eseguire un processo di accesso interattivo, quindi non vuoi creare una chiave di preautenticazione per autenticare una singola macchina. Quindi usa quella chiave, come faccio qui, per visualizzare Tailscale in WSL:

tailscale up --authkey=tskey-9e85d94f237c54253cf0

Mi piace tenerlo aperto in un'altra scheda Terminale o riquadro della finestra in modo da poter guardare i registri. È interessante e dettagliato!

All'interno del pannello di amministrazione delle macchine Tailscale, puoi vedere tutte le macchine che vivono sulla tua nuova rete Tailscale. Nota che ho scottha-proto elencato come Windows e scottha-proto-1 elencato come Linux. La prima è la mia macchina Host e la seconda (la -1) è la mia istanza Linux WSL2! Ora sono su una rete piatta!

Sono stato anche in grado di invitare un utente esterno alla mia rete con la nuova (in arrivo) funzionalità di condivisione del nodo Tailscale. Il mio amico Glenn NON fa parte della mia organizzazione, ma proprio come uso OneDrive o DropBox per creare un collegamento per accedere a UN'entità ma non all'INTERO sistema, posso fare lo stesso qui.

Ora posso fare in modo che Glenn abbia attivato un servizio in esecuzione in WSL2 da casa sua.

Crea un servizio e collegalo alla rete Tailscale

Ho installato .NET 5 nel mio sistema Ubuntu WSL2, creato una cartella ed eseguito dotnet new web per creare un microservizio Hello World.

Quando eseguo il servizio - .NET o Node, o altro - è essenziale che il servizio ascolta sulla rete Tailscale. Il tuo sistema Linux in WSL2 è "multihomed" ed è connesso a più reti. Per impostazione predefinita, i miei sistemi di sviluppo sono in ascolto solo su localhost.

Per .NET ci sono diversi modi per ascoltare su tutte le reti (incluso Tailscale), ma ho usato questo:

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

Quindi qui mi sono connesso all'IP Tailscale associato alla mia istanza WSL2 e ho colpito il mio servizio Linux in esecuzione all'interno di:

Quanto lontano possiamo portarlo? Bene, dal momento che sono sulla rete Tailscale e Glenn si è connesso ad essa, l'intera rete è piatta, quindi colpire il mio servizio è banale! Eccomi in Teams con il mio desktop in basso e il desktop di Glenn in alto.

Freddo. Quanto lontano possiamo andare?

Aggiungi codice di Visual Studio e l'estensione SSH per lo sviluppo remoto

Ok, rete sicura così piatta, nessun limite! Posso fare in modo che la mia istanza WSL2 venga trattata come un sistema di sviluppo remoto per Glenn? Certo, perché no?

Per essere chiari - questo sono solo io che parlo e sperimento, ma c'è qualcosa qui. Questo può anche essere multipiattaforma, da Mac a Windows a WSL2, ecc. Puoi anche utilizzare questa sezione per creare una VM in qualsiasi host o host cloud, installare Tailscale, smettere di preoccuparti del port forwarding e usarlo come scatola di sviluppo. Sì, puoi semplicemente usare WSL local, ma è divertente e può essere sfruttato in altri modi interessanti.

Sulla mia macchina WSL2, avvierò il servizio ssh. Potrei condividere le chiavi pubbliche ed eseguire un accesso corretto basato su chiavi, ma per questo lo farò tramite nome utente.

Modificherò /etc/ssh/sshd_config e impostare la porta, ListenAddress e PasswordAuthentication su Sì. Ecco un esempio:

Port 22
#AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

PasswordAuthentication yes

Ho reso Glenn un super utente locale solo nella mia istanza WSL2:

sudo adduser glenn
usermoid -aG sudo glenn

Glenn installa quindi il pacchetto di sviluppo VS Code Remote e si connette utilizzando Remote tramite SSH al mio IP Tailscale. Qui puoi vedere che VS Code dalla macchina di Glenn sta effettivamente installando VS Code Server e sviluppatori remoti, e Glenn e codifica con VS Code architettonicamente divisi a metà con il client sulla sua macchina Windows e il server sulla mia istanza WSL2.

Nota nell'angolo in basso a sinistra, puoi vedere che il suo codice VS è connesso all'IP Tailscale della mia istanza Linux WSL2!

Cosa ne pensi?

Puoi confrontare Tailscale con cose come NGrok che offre un localhost tunneller orientato agli sviluppatori, ma ci sono alcune differenze importanti. Fai la tua ricerca! Non ho alcun rapporto con questa azienda se non sono un fan.

Sponsor: Lo sponsor di questa settimana sono... io! Questo blog e il mio podcast sono stati un lavoro d'amore per 19 anni. La tua sponsorizzazione paga le mie bollette di hosting per entrambi E mi consente di acquistare gadget da rivedere E il taco occasionale. Unisciti a me!


Linux
  1. Ottieni podman attivo e funzionante su Windows usando Linux

  2. Introduzione a Visual Studio Code (VSC) su Linux

  3. Come installare le estensioni del codice di Visual Studio

  4. Come installare il codice di Visual Studio su CentOS 7?

  5. Come utilizzare Qt in Visual Studio Code?

Utilizzo di Tailscale su Windows per una rete più semplice con WSL2 e Visual Studio Code

Debug remoto di un'app Linux .NET Core in WSL2 da Visual Studio in Windows

Sposta facilmente le distribuzioni WSL tra macchine Windows 10 con l'importazione e l'esportazione!

Ruby on Rails su Windows non è solo possibile, è favoloso usando WSL2 e VS Code

Scrittura e debug di applicazioni C++ Linux da Visual Studio usando il sottosistema Windows per Linux

Come collegare in rete Ubuntu e Windows 10?