Bagikan melalui


Mengakses aplikasi jaringan dengan WSL

Ada beberapa pertimbangan yang perlu diperhatikan saat bekerja dengan aplikasi jaringan dan WSL. Secara default WSL menggunakan arsitektur berbasis NAT, dan sebaiknya coba mode jaringan Mirrored baru untuk mendapatkan fitur dan peningkatan terbaru.

Mode jaringan default: NAT

Secara default, WSL menggunakan arsitektur berbasis NAT (Network Address Translation) untuk jaringan. Ingatlah pertimbangan berikut saat bekerja dengan arsitektur jaringan berbasis NAT:

Mengakses aplikasi jaringan Linux dari Windows (localhost)

Jika Anda membangun aplikasi jaringan (misalnya aplikasi yang berjalan di nodeJS atau server SQL) di distribusi Linux, Anda dapat mengaksesnya dari aplikasi Windows (seperti browser internet Edge atau Chrome Anda) menggunakan localhost (seperti biasa).

Mengakses aplikasi jaringan Windows dari Linux (IP host)

Jika Anda ingin mengakses aplikasi jaringan yang berjalan di Windows (misalnya aplikasi yang berjalan di server NodeJS atau SQL) dari distribusi Linux Anda (yaitu Ubuntu), maka Anda perlu menggunakan alamat IP komputer host Anda. Meskipun ini bukan skenario umum, Anda dapat mengikuti langkah-langkah ini untuk membuatnya berfungsi.

  1. Dapatkan alamat IP komputer host Anda dengan menjalankan perintah ini dari distribusi Linux Anda: ip route show | grep -i default | awk '{ print $3}'
  2. Sambungkan ke server Windows mana pun menggunakan alamat IP yang disalin.

Gambar di bawah ini memperlihatkan contoh ini dengan menyambungkan ke server Node.js yang berjalan di Windows melalui curl.

Menyambungkan ke server NodeJS di Windows melalui Curl

Menyambungkan melalui alamat IP jarak jauh

Saat menggunakan alamat IP jarak jauh untuk terhubung ke aplikasi Anda, alamat IP tersebut akan diperlakukan sebagai koneksi dari Jaringan Area Lokal (LAN). Ini berarti Bahwa Anda harus memastikan aplikasi Anda dapat menerima koneksi LAN.

Misalnya, Anda mungkin perlu mengikat aplikasi Anda ke 0.0.0.0 alih-alih 127.0.0.1. Dalam contoh aplikasi Python menggunakan Flask, ini dapat dilakukan dengan perintah: app.run(host='0.0.0.0'). Ingatlah keamanan saat membuat perubahan ini karena ini akan memungkinkan koneksi dari LAN Anda.

Mengakses distribusi WSL 2 dari jaringan area lokal (LAN) Anda

Saat menggunakan distribusi WSL 1, jika komputer Anda disiapkan untuk diakses oleh LAN Anda, maka aplikasi yang berjalan di WSL juga dapat diakses di LAN Anda.

Ini bukan kasus default di WSL 2. WSL 2 memiliki adaptor ethernet virtual dengan alamat IP uniknya sendiri. Saat ini, untuk mengaktifkan alur kerja ini, Anda harus melalui langkah-langkah yang sama seperti yang Anda lakukan untuk komputer virtual biasa. (Kami mencari cara untuk meningkatkan pengalaman ini.)

Berikut adalah contoh penggunaan perintah Windows portproxy antarmuka Netsh untuk menambahkan proksi port yang mendengarkan port host Anda dan menyambungkan proksi port tersebut ke alamat IP untuk VM WSL 2.

netsh interface portproxy add v4tov4 listenport=<yourPortToForward> listenaddress=0.0.0.0 connectport=<yourPortToConnectToInWSL> connectaddress=(wsl hostname -I)

Dalam contoh ini, Anda harus memperbarui <yourPortToForward> ke nomor port, misalnya listenport=4000. listenaddress=0.0.0.0 berarti bahwa permintaan masuk akan diterima dari alamat IP APA PUN. Alamat Dengar menentukan alamat IPv4 yang akan didengarkan dan dapat diubah ke nilai yang mencakup: alamat IP, nama NetBIOS komputer, atau nama DNS komputer. Jika alamat tidak ditentukan, defaultnya adalah komputer lokal. Anda perlu memperbarui nilai ke <yourPortToConnectToInWSL> nomor port tempat Anda ingin WSL tersambung, misalnya connectport=4000. Terakhir, connectaddress nilai harus menjadi alamat IP distribusi Linux Anda yang diinstal melalui WSL 2 (alamat VM WSL 2), yang dapat ditemukan dengan memasukkan perintah: wsl.exe hostname -I.

Jadi perintah ini mungkin terlihat seperti:

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100

Untuk mendapatkan alamat IP, gunakan:

  • wsl hostname -I untuk alamat IP distribusi Linux Anda yang diinstal melalui WSL 2 (alamat VM WSL 2)
  • cat /etc/resolv.conf untuk alamat IP komputer Windows seperti yang terlihat dari WSL 2 (WSL 2 VM)

Menggunakan listenaddress=0.0.0.0 akan mendengarkan di semua port IPv4.

Catatan

Menggunakan huruf kecil "i" dengan perintah nama host akan menghasilkan hasil yang berbeda dari menggunakan huruf besar "I". wsl hostname -i adalah komputer lokal Anda (127.0.1.1 adalah alamat diagnostik tempat penampung), sedangkan wsl hostname -I akan mengembalikan alamat IP komputer lokal Anda seperti yang terlihat oleh komputer lain dan harus digunakan untuk mengidentifikasi connectaddress distribusi Linux Anda yang berjalan melalui WSL 2.

Akses IPv6

  • wsl hostname -i untuk alamat IP distribusi Linux Anda yang diinstal melalui WSL 2 (alamat VM WSL 2)
  • ip route show | grep -i default | awk '{ print $3}' untuk alamat IP komputer Windows seperti yang terlihat dari WSL 2 (WSL 2 VM)

Menggunakan listenaddress=0.0.0.0 akan mendengarkan di semua port IPv4.

Jaringan mode cermin

Pada komputer yang menjalankan Windows 11 22H2 dan yang lebih tinggi, Anda dapat mengatur networkingMode=mirrored di bawah [wsl2] dalam .wslconfig file untuk mengaktifkan jaringan mode cermin. Mengaktifkan perubahan ini WSL ke arsitektur jaringan yang sama sekali baru yang memiliki tujuan 'mencerminkan' antarmuka jaringan yang Anda miliki di Windows ke Linux, untuk menambahkan fitur jaringan baru dan meningkatkan kompatibilitas.

Berikut adalah manfaat saat ini untuk mengaktifkan mode ini:

  • Dukungan IPv6
  • Sambungkan ke server Windows dari dalam Linux menggunakan alamat 127.0.0.1localhost . Alamat ::1 localhost IPv6 tidak didukung
  • Kompatibilitas jaringan yang ditingkatkan untuk VPN
  • Dukungan multicast
  • Sambungkan ke WSL langsung dari jaringan area lokal (LAN) Anda

Catatan

Jalankan perintah berikut di jendela PowerShell dengan hak istimewa admin untuk Mengonfigurasi pengaturan firewall Hyper-V untuk mengizinkan koneksi masuk: Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow atau New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80.

Mode baru ini mengatasi masalah jaringan yang terlihat dengan menggunakan arsitektur berbasis NAT (Network Address Translation). Temukan masalah yang diketahui atau umpan balik file pada bug apa pun yang diidentifikasi dalam repositori produk WSL di GitHub.

Penerowongan DNS

Pada komputer yang menjalankan Windows 11 22H2 dan yang lebih tinggi, pengaturan dnsTunneling=true di bawah [wsl2] dalam .wslconfig file memiliki WSL menggunakan fitur virtualisasi untuk menjawab permintaan DNS dari dalam WSL, alih-alih memintanya melalui paket jaringan. Fitur ini bertujuan untuk meningkatkan kompatibilitas dengan VPN, dan pengaturan jaringan kompleks lainnya.

Proksi Otomatis

Pada komputer yang menjalankan Windows 11 22H2 dan yang lebih tinggi, pengaturan autoProxy=true di bawah [wsl2] dalam .wslconfig file memberlakukan WSL untuk menggunakan informasi proksi HTTP Windows. Jika Anda memiliki proksi yang sudah disiapkan di Windows, mengaktifkan fitur ini akan membuat proksi tersebut juga diatur secara otomatis di WSL.

WSL dan firewall

Pada komputer yang menjalankan Windows 11 22H2 dan yang lebih tinggi, dengan WSL 2.0.9 dan yang lebih tinggi, fitur firewall Hyper-V akan diaktifkan secara default. Ini akan memastikan bahwa: