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!