GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan Tailscale di Windows untuk membuat jaringan lebih mudah dengan WSL2 dan Visual Studio Code

Tailscale adalah "VPN" tanpa konfigurasi mesh yang berjalan di atas jaringan lain dan secara efektif "meratakan" jaringan dan memungkinkan pengguna/layanan untuk berkomunikasi dengan lebih mudah (dan aman) satu sama lain.

Sebagai contoh, saya telah banyak menulis tentang cara SSH ke WSL2 di Windows 10 dari komputer lain dan Anda akan melihat bahwa tidak hanya ada banyak langkah tetapi ada lebih dari satu cara untuk melakukannya !

Saya telah membicarakan hal ini untuk SSH, tetapi jika Anda seorang pengembang aktif dan ingin berbagi layanan dan situs yang sedang Anda kerjakan dengan rekan kerja dan kolaborator Anda, ada sejumlah pengaturan, pengelolaan, dan pemeliharaan yang tidak sepele untuk ditangani. dengan.

Dengan ungkapan yang berbeda, "bukankah akan lebih mudah jika kita semua hanya berada di jaringan dan subnet yang sama?"

WSL1 berbagi tumpukan jaringannya dengan Windows 10, jadi "mesin"nya sama. Apa pun YourMachineName, menjalankan layanan pada 5000 adalah sama jika itu adalah layanan Windows atau aplikasi yang berjalan di Linux di bawah WSL1. Namun, di WSL2, lingkungan Linux Anda "di belakang" host Windows Anda. Meskipun WSL2 memudahkan untuk mencapai http://localhost:5000 dengan penerusan port transparan, mesin Linux WSL2 Anda sebenarnya bukan rekan di jaringan yang sama dengan perangkat Anda yang lain.

Menggunakan sistem jaringan tanpa konfigurasi seperti Tailscale (dan layanan serupa) menyamakan kedudukan - dan jaringan. Karena beberapa karakteristik WSL2, ada beberapa gotcha. Inilah cara saya membuatnya bekerja untuk saya.

Tailscale di WSL2

Dapatkan WSL

  • Instal WSL2 - ikuti petunjuk di sini
  • Instal distro Linux - Saya menggunakan Ubuntu 20.04
    • lalui prosesnya, buat pengguna, dll.
  • Instal Terminal Windows - Jauh lebih baik, dan benar-benar membuat pengalaman baris perintah Anda lebih baik

Dapatkan Tailscale

  • Instal Tailscale - Saya menggunakan instruksi Ubuntu 20.04

Ubah WSL2

  • Saya tidak dapat mengaktifkan Tailscale hari ini untuk memulai di WSL2 dengan pemasangan ipv6, jadi saya menonaktifkannya.
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Jalankan Tailscale

Di sini Anda memulai daemon. Tidak ada systemd (belum) di WSL2, tetapi jika Anda menggunakan versi di atas Windows 10 build 21286, ada cara menjalankan perintah saat startup di Subsistem Windows untuk Linux. Secara pribadi, saya hanya melakukan ini dalam skrip bash.

sudo tailscaled 

WSL tidak memiliki cara untuk melakukan proses login interaktif, jadi Anda ingin membuat kunci pra-otentikasi untuk mengotentikasi satu mesin. Kemudian gunakan kunci itu, seperti yang saya lakukan di sini, untuk memunculkan Tailscale dalam WSL:

tailscale up --authkey=tskey-9e85d94f237c54253cf0

Saya suka membiarkan ini tetap terbuka di Tab Terminal atau Panel Jendela lain sehingga saya dapat menonton log. Ini menarik dan bertele-tele!

Di dalam panel admin mesin Tailscale, Anda dapat melihat semua mesin yang hidup di jaringan Tailscale baru Anda. Perhatikan bahwa saya memiliki scottha-proto terdaftar sebagai Windows, dan scottha-proto-1 terdaftar sebagai Linux. Yang pertama adalah mesin Host saya dan yang kedua (-1) adalah instance WSL2 Linux saya! Mereka sekarang berada di jaringan datar!

Saya juga dapat mengundang pengguna dari luar jaringan saya dengan fitur berbagi simpul Tailscale yang baru (segera hadir). Teman saya Glenn BUKAN dalam organisasi saya, tetapi seperti saya menggunakan OneDrive atau DropBox untuk membuat tautan untuk mengakses SATU entitas tetapi tidak ke SELURUH sistem, saya dapat melakukan hal yang sama di sini.

Sekarang saya dapat meminta Glenn melakukan layanan yang berjalan di WSL2 dari rumahnya.

Membuat Layanan dan Mengikatnya ke Jaringan Tailscale

Saya telah menginstal .NET 5 di sistem Ubuntu WSL2 saya, membuat folder, dan menjalankan dotnet new web untuk membuat layanan mikro Hello World.

Ketika saya menjalankan layanan - .NET atau Node, atau apa pun - penting agar layanan mendengarkan di jaringan Tailscale. Sistem Linux Anda di WSL2 adalah 'multi-homed' dan terhubung ke beberapa jaringan. Secara default, sistem pengembang saya hanya mendengarkan di localhost.

Untuk .NET ada beberapa cara untuk mendengarkan di semua jaringan (termasuk Tailscale) tetapi saya menggunakan yang ini:

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

Jadi di sini saya menghubungkan diri saya ke IP Tailscale yang terkait dengan instance WSL2 saya dan menjalankan layanan Linux saya di dalam:

Seberapa jauh kita bisa mengambil ini? Yah, karena saya berada di jaringan Tailscale dan Glenn telah terhubung dengannya, seluruh jaringan datar, jadi memukul layanan saya itu sepele! Ini saya di Teams dengan desktop saya di bawah dan desktop Glenn di atas.

Dingin. Seberapa jauh kita bisa pergi?

Tambahkan Kode Visual Studio dan Ekstensi SSH Pengembangan Jarak Jauh

Ok, jaringan aman begitu datar, tidak ada batas! Dapatkah saya membuat instans WSL2 saya diperlakukan sebagai sistem pengembangan jarak jauh untuk Glenn? Tentu, mengapa tidak?

Agar jelas - ini hanya saya yang berbicara dan bereksperimen, tetapi ada sesuatu di sini. Ini juga bisa lintas platform, Mac ke Windows ke WSL2, dll. Anda juga pasti dapat menggunakan bagian ini untuk membuat VM di cloud host atau hoster mana pun, menginstal Tailscale, berhenti mengkhawatirkan penerusan port, dan menggunakannya sebagai kotak pengembangan. Ya, Anda bisa saja menggunakan WSL lokal, tetapi ini menyenangkan dan dapat dimanfaatkan dengan cara keren lainnya.

Di mesin WSL2 saya, saya akan memulai layanan ssh. Saya dapat membagikan kunci publik dan melakukan login berbasis kunci yang tepat, tetapi untuk ini saya akan melakukannya dengan nama pengguna.

Saya akan mengedit /etc/ssh/sshd_config dan atur port, ListenAddress, dan PasswordAuthentication ke Ya. Ini contohnya:

Port 22
#AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

PasswordAuthentication yes

Saya menjadikan glenn pengguna super lokal hanya dalam contoh WSL2 saya:

sudo adduser glenn
usermoid -aG sudo glenn

Glenn kemudian menginstal paket Pengembangan Jarak Jauh Kode VS dan menghubungkan menggunakan Remote melalui SSH ke IP Tailscale saya. Di sini Anda dapat melihat VS Code dari mesin Glenn sebenarnya menginstal VS Code Server dan pengembang jarak jauh, dan Glenn dan kode dengan VS Code secara arsitektur dibagi dua dengan klien di mesin Windows-nya dan server di instans WSL2 saya.

Perhatikan di sudut kiri bawah, Anda dapat melihat Kode VS-nya terhubung ke IP Tailscale instance WSL2 Linux saya!

Bagaimana menurutmu?

Anda dapat membandingkan Tailscale dengan hal-hal seperti NGrok yang menawarkan tunneller localhost berorientasi pengembang, tetapi ada beberapa perbedaan penting. Lakukan penelitian Anda! Saya tidak memiliki hubungan dengan perusahaan ini selain saya seorang penggemar.

Sponsor: Sponsor minggu ini adalah...aku! Blog ini dan podcast saya telah menjadi karya cinta selama 19 tahun. Sponsor Anda membayar tagihan hosting saya untuk keduanya DAN memungkinkan saya membeli gadget untuk ditinjau DAN taco sesekali. Bergabunglah dengan saya!


Linux
  1. Cara Menginstal Ekstensi Kode Visual Studio

  2. Bagaimana Cara Menginstal Kode Visual Studio di CentOS 7?

  3. Bagaimana menggunakan Qt dalam Visual Studio Code?

  1. Aktifkan dan jalankan podman di Windows menggunakan Linux

  2. Memulai Visual Studio Code (VSC) di Linux

  3. Instal Kode Microsoft Visual Studio Di Linux

  1. Menginstal Kode Microsoft Visual Studio di Linux

  2. Bagikan File dengan Mudah Antara Linux, Windows, dan Mac Menggunakan NitroShare

  3. 3 Cara menginstal kode Visual studio di Ubuntu menggunakan terminal