Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ağ uygulamaları ve WSL ile çalışırken dikkat edilmesi gereken birkaç nokta vardır. Varsayılan olarak WSL, NAT tabanlı bir mimari kullanır ve en son özellikleri ve iyileştirmeleri almak için yeni Yansıtılmış ağ modu denemenizi öneririz.
IP adresini tanımlama
WSL aracılığıyla çalışan bir Linux dağıtımı için kullanılan IP adresini tanımlarken dikkate alınması gereken iki senaryo vardır:
Senaryo Bir: Windows konağı perspektifinden bakıldığında, Windows ana bilgisayarındaki bir programın dağıtımın (örneğin) içinde çalışan bir sunucu programına bağlanabilmesi için WSL2 aracılığıyla çalışan bir Linux dağıtımının IP adresini sorgulamak istiyorsunuz.
Windows konağı şu komutu kullanabilir:
wsl.exe --distribution <DistroName> hostname -i
Varsayılan dağıtımı sorgularsanız, dağıtımı belirten komutun bu bölümü atlanabilir: -d <DistroName>. Küçük harf -i bayrağı kullandığınızdan emin olun.
Başlık altında konak komutu wsl.exe hedef örneği başlatır ve Linux komutunu hostname --ip-addressesyürütür. Bu komut daha sonra WSL örneğinin IP adresini STDOUTyazdırır. daha sonra STDOUT metin içeriği wsl.exe'a geri iletilir. Son olarak, wsl.exe bu çıkışı komut satırına görüntüler.
Tipik bir çıkış şöyle olabilir:
172.30.98.229
Senaryo İki: WSL2 (örnek) aracılığıyla linux dağıtımı içinde çalışan bir program, Bir Linux programının bir Windows ana bilgisayar sunucusu programına bağlanabilmesi için Windows ana bilgisayarının IP adresini bilmek ister.
WSL2 Linux kullanıcısı şu komutu kullanabilir:
ip route show | grep -i default | awk '{ print $3}'
Tipik bir çıkış şöyle olabilir:
172.30.96.1
Bu örnekte 172.30.96.1 Windows için ana bilgisayar IP adresidir.
Not
WSL2 varsayılan NAT ağ moduile çalışırken yukarıdaki IP adresi sorgulama eylemi genellikle gereklidir.
WSL2, yeniyansıtılmış modla çalışırken, Windows ana bilgisayarı ve WSL2 VM hedef adres olarak localhost (127.0.0.1) kullanarak birbirine bağlanabilir, bu nedenle sorgu eşinin IP adresini kullanma hilesi gerekli değildir.
Varsayılan ağ modu: NAT
Varsayılan olarak, WSL ağ için NAT (Ağ Adresi Çevirisi) tabanlı bir mimari kullanır. NAT tabanlı bir ağ mimarisiyle çalışırken aşağıdaki noktaları göz önünde bulundurun:
Windows'tan Linux ağ uygulamalarına erişme (localhost)
Linux dağıtımınızda bir ağ uygulaması (örneğin NodeJS veya SQL sunucusunda çalışan bir uygulama) oluşturuyorsanız, localhost kullanarak bir Windows uygulamasından (Edge veya Chrome internet tarayıcınız gibi) erişebilirsiniz (normalde yaptığınız gibi).
Linux'tan Windows ağ uygulamalarına erişme (ana bilgisayar IP'si)
Linux dağıtımınızdan (örneğin, Ubuntu) Windows üzerinde çalışan bir ağ uygulamasına (örneğin NodeJS veya SQL sunucusunda çalışan bir uygulama) erişmek istiyorsanız, konak makinenizin IP adresini kullanmanız gerekir. Bu yaygın bir senaryo olmasa da, çalışmasını sağlamak için bu adımları izleyebilirsiniz.
Linux dağıtımınızdan şu komutu çalıştırarak konak makinenizin IP adresini alın:
ip route show | grep -i default | awk '{ print $3}'Kopyalanan IP adresini kullanarak herhangi bir Windows sunucusuna bağlanın.
Aşağıdaki resimde curl aracılığıyla Windows'ta çalışan bir Node.js sunucusuna bağlanarak bunun bir örneği gösterilmektedir.
aracılığıyla Windows'ta NodeJS sunucusuna bağlanma
Uzak IP adresleri üzerinden bağlanma
Uygulamalarınıza bağlanmak için uzak IP adresleri kullanılırken, bunlar Yerel Ağ 'dan (LAN) bağlantı olarak değerlendirilir. Bu, uygulamanızın LAN bağlantılarını kabul edebildiğine emin olmanız gerektiği anlamına gelir.
Örneğin, uygulamanızı 0.0.0.0yerine 127.0.0.1 bağlamanız gerekebilir. Flask kullanan bir Python uygulaması örneğinde bu işlem şu komutla yapılabilir: app.run(host='0.0.0.0'). Bu değişiklikleri yaparken güvenliği göz önünde bulundurun, bu da LAN'ınızdan bağlantılara izin verir.
Yerel ağınızdan (LAN) WSL 2 dağıtımına erişme
WSL 1 dağıtımı kullanılırken, bilgisayarınız LAN'ınız tarafından erişilecek şekilde ayarlandıysa WSL'de çalıştırılan uygulamalara LAN'ınızdan da erişilebilir.
WSL 2'de varsayılan durum bu değildir. WSL 2,kendi benzersiz IP adresine sahip sanallaştırılmış bir ethernet bağdaştırıcısına sahiptir. Şu anda bu iş akışını etkinleştirmek için normal bir sanal makineyle aynı adımları uygulamanız gerekir. (Bu deneyimi geliştirmenin yollarını arıyoruz.)
Burada, ana bilgisayar bağlantı noktanızı dinleyen ve bu bağlantı noktası ara sunucusunu WSL 2 VM'sinin IP adresine bağlayan bir bağlantı noktası ara sunucusu eklemek için Netsh arabirimi portproxy Windows komutunu kullanma örneği verilmiştir.
netsh interface portproxy add v4tov4 listenport=<yourPortToForward> listenaddress=0.0.0.0 connectport=<yourPortToConnectToInWSL> connectaddress=(wsl hostname -I)
Bu örnekte, <yourPortToForward>listenport=4000gibi bir bağlantı noktası numarasına güncelleştirmeniz gerekir.
listenaddress=0.0.0.0 gelen isteklerin HERHANGİ Bİr IP adresinden kabul edildiği anlamına gelir. Dinleme Adresi, dinlenecek IPv4 adresini belirtir ve ip adresi, bilgisayar NetBIOS adı veya bilgisayar DNS adı gibi değerlere değiştirilebilir. Adres belirtilmezse, varsayılan değer yerel bilgisayardır.
<yourPortToConnectToInWSL> değerini WSL'nin bağlanmasını istediğiniz bir bağlantı noktası numarasıyla güncelleştirmeniz gerekir, örneğin connectport=4000. Son olarak, connectaddress değerinin WSL 2 (WSL 2 VM adresi) aracılığıyla yüklenen Linux dağıtımınızın IP adresi olması gerekir ve bu adres şu komutu girerek bulunabilir: wsl.exe hostname -I.
Bu nedenle bu komut şuna benzer olabilir:
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100
IP adresini almak için şunu kullanın:
- WSL 2 (WSL 2 VM adresi) aracılığıyla yüklenen Linux dağıtımınızın IP adresi için
wsl hostname -I - WSL 2'den (WSL 2 VM) görüldüğü gibi Windows makinesinin IP adresi için
cat /etc/resolv.conf
listenaddress=0.0.0.0 kullanarak tüm IPv4 portlarını dinler.
Not
Hostname komutuyla küçük harfli bir "i" kullanılması, büyük harf "I" kullanmaktan farklı bir sonuç oluşturur.
wsl hostname -i yerel makinenizdir (127.0.1.1 yer tutucu tanılama adresidir), ancak wsl hostname -I diğer makineler tarafından görüldüğü gibi yerel makinenizin IP adresini döndürür ve WSL 2 aracılığıyla çalışan Linux dağıtımınızın connectaddress tanımlamak için kullanılmalıdır.
IPv6 erişimi
- WSL 2 (WSL 2 VM adresi) aracılığıyla yüklenen Linux dağıtımınızın IP adresi için
wsl hostname -i - WSL 2'den (WSL 2 VM) görüldüğü gibi Windows makinesinin IP adresi için
ip route show | grep -i default | awk '{ print $3}'
listenaddress=0.0.0.0 kullanarak tüm IPv4 portlarını dinler.
Yansıtılmış modda ağ iletişimi
Windows 11 22H2 ve üzeri çalıştıran makinelerde networkingMode=mirrored[wsl2] altında ayarlayarak yansıtılmış mod ağını etkinleştirebilirsiniz. Bunun etkinleştirilmesi, yeni ağ özellikleri eklemek ve uyumluluğu geliştirmek için WSL'yi, Windows'ta sahip olduğunuz ağ arabirimlerini Linux'a 'yansıtma' hedefi olan tamamen yeni bir ağ mimarisine dönüştürür.
Bu modu etkinleştirmenin geçerli avantajları şunlardır:
- IPv6 desteği
-
127.0.0.1localhost adresini kullanarak Linux içinden Windows sunucularına bağlanın. IPv6 localhost adresi::1desteklenmiyor - VPN'ler için geliştirilmiş ağ uyumluluğu
- Çok noktaya yayın desteği
- WSL'ye doğrudan yerel ağınızdan (LAN) bağlanma
Not
Gelen bağlantılara izin vermek için Hyper-V güvenlik duvarı ayarlarını yapılandırmaya yönelik yönetici ayrıcalıklarıyla PowerShell penceresinde aşağıdaki komutu çalıştırın:
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
veya
New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80
Bu yeni mod, NAT (Ağ Adresi Çevirisi) tabanlı mimari kullanırken karşılaşılan ağ sorunlarını giderir. GitHub üzerindeWSL ürün deposundaki bilinen sorunları bulun veya tespit edilen hatalar hakkında geri bildirimde bulunun.
DNS Tüneli
Windows 11 22H2 ve üzeri dnsTunneling çalıştıran makinelerde bu özellik varsayılan olarak açıktır (dosyanın altında [wsl2].wslconfigbulunabilir) ve bir ağ paketi üzerinden istemek yerine WSL'nin içinden DNS isteklerini yanıtlamak için bir sanallaştırma özelliği kullanır. Bu özellik VPN'ler ve diğer karmaşık ağ kurulumlarıyla uyumluluğu iyileştirmeyi hedeflemektedir.
Otomatik Ara Sunucu
Windows 11 22H2 ve üzeri çalıştıran makinelerde, autoProxy=true dosyasındaki [wsl2] altında .wslconfig ayarlanması WSL'nin Windows'un HTTP proxy bilgilerini kullanmasını zorlar. Windows'ta önceden ayarlanmış bir ara sunucunuz varsa, bu özelliğin etkinleştirilmesi söz konusu proxy'nin WSL'de de otomatik olarak ayarlanmasını sağlar.
WSL ve güvenlik duvarı
Windows 11 22H2 ve üzerini çalıştıran makinelerde WSL 2.0.9 ve üzeri yüklü olan Hyper-V güvenlik duvarı özelliği varsayılan olarak açılır. Bu, aşağıdakilerin sağlanmasını sağlar:
- WSL'ye otomatik olarak uygulanacak Windows güvenlik özellikleri hakkında daha fazla bilgi edinmek için bkz. Gelişmiş Güvenlik ile Windows Defender Güvenlik Duvarı.
- Bu kuralları ve ayarları hem yerel olarak hem de Intune gibi çevrimiçi araçlar aracılığıyla uygulama hakkında daha fazla bilgi edinmek için bkz. Hyper-V güvenlik duvarını yapılandırma .
Windows Subsystem for Linux