Nasıl Yapılır?

WSL Localhost Bağlantı Reddedildi Hatasının Kapsamlı Çözümleri

Windows alt sisteminde Linux (WSL) kullanırken geliştiricilerin sıkça karşılaştığı sorunlardan biri, WSL localhost bağlantı reddedildi hatasıdır. Bu durum genellikle bir web sunucusu, veritabanı veya başka bir ağ servisinin Linux ortamında çalışmasına rağmen Windows tarafından erişilememesiyle ortaya çıkar. Çözüm, ağ yapılandırması ve güvenlik duvarı ayarlarında gizli olabilir, bu nedenle hatanın temel nedenlerini anlamak ve doğru adımları uygulamak kritik önem taşır.

Güvenlik Duvarı Engellerini Aşmak

WSL üzerinden çalışan bir servise Windows tarafından erişmeye çalışırken, en yaygın nedenlerden biri Windows Güvenlik Duvarı’nın bu bağlantıyı engellemesidir. Varsayılan olarak, güvenlik duvarı bilinmeyen gelen bağlantılara karşı koruma sağlar. Bu durumu aşmak için, özellikle WSL 2 gibi sanal bir ağ adaptörü kullanan kurulumlarda, gelen ve giden kurallar oluşturmak gerekebilir. Bu adımlar, belirli portlar üzerinden WSL’deki servislere erişim sağlamak için güvenlik duvarını uygun şekilde yapılandırmayı içerir.

Güvenlik duvarı ayarlarını yapılandırmak için Yönetici olarak Komut İstemi’ni (CMD) açmak ve aşağıdaki komutları kullanmak çoğu zaman yeterlidir. Unutulmamalıdır ki `[PORT_NUMARASI]` kısmına erişmek istediğiniz servisin kullandığı port numarasını (örneğin 80, 443, 3000, 8080) girmelisiniz. Bu komutlar, belirlenen port üzerinden herhangi bir programın gelen ve giden bağlantılarını serbest bırakır ve WSL ile Windows arasındaki iletişimi kolaylaştırır.

netsh advfirewall firewall add rule name=”WSL2 [PORT_NUMARASI] Inbound” dir=in action=allow protocol=TCP localport=[PORT_NUMARASI] netsh advfirewall firewall add rule name=”WSL2 [PORT_NUMARASI] Outbound” dir=out action=allow protocol=TCP localport=[PORT_NUMARASI]

Bu komutların başarıyla uygulanmasının ardından, güvenlik duvarının WSL bağlantısını engelleme ihtimali önemli ölçüde azalır. Ancak, bağlantı hala reddediliyorsa, sorun başka bir katmanda olabilir ve ağ yapılandırmasına daha derinlemesine bakmak gerekebilir.

WSL Ağ Yapılandırmasını Anlamak

WSL, özellikle WSL 2 mimarisiyle, kendi sanal ağ adaptörüne ve dinamik IP adresine sahiptir. Bu, Windows’tan doğrudan localhost adresine yapılan çağrıların beklenen WSL servisine ulaşamamasına neden olabilir. WSL 1 ise doğrudan ana bilgisayarın IP adresini kullandığından bu tür sorunlar daha az görülür. WSL 2’de, WSL sanal makinesinin mevcut IP adresini öğrenmek, bağlantı sorunlarını teşhis etmede ilk adımdır.

WSL içerisinde Linux terminalini açarak aşağıdaki komutu çalıştırabilirsiniz. Bu komut, WSL örneğinizin yerel ağdaki IP adresini gösterecektir. Genellikle eth0 adaptörü altında listelenen inet adresine bakmanız gerekir. Bu IP adresi, Windows’tan WSL içindeki servisinize erişmek için kullanılabilecek geçerli bir adrestir. Dinamik IP yapısı nedeniyle, bu adres WSL her yeniden başlatıldığında değişebilir, bu da sürekli erişim için ek yapılandırmalar gerektirebilir.

ip addr show eth0

Elde edilen IP adresini kullanarak Windows tarayıcınızdan veya uygulamanızdan http://[WSL_IP_ADRESI]:[PORT_NUMARASI] şeklinde erişim sağlamayı deneyebilirsiniz. Eğer bu yöntemle bağlantı başarılı olursa, sorunun doğrudan localhost çözümlemesi veya port yönlendirme eksikliğinden kaynaklandığı anlaşılır. Bu durumda, her yeniden başlatmada IP adresini manuel olarak güncellemek yerine daha kalıcı çözümlere yönelmek önemlidir.

Port Yönlendirme ve Dinamik IP Yönetimi

WSL 2’nin dinamik IP yapısı, her yeniden başlatmada farklı bir IP almasına yol açtığından, statik bir çözüm sunmak için port yönlendirme devreye girer. Windows ana bilgisayarında bir portu dinleyerek gelen bağlantıları WSL içindeki belirli bir IP ve porta yönlendirmek mümkündür. Bu, Windows’ta localhost üzerinden erişim sağlamayı kolaylaştırır, çünkü Windows doğrudan WSL’nin değişen IP’si ile uğraşmak zorunda kalmaz.

Port yönlendirme için netsh interface portproxy komutu kullanılır. Bu komut, Windows’taki belirli bir porttan gelen trafiği WSL’deki bir IP ve porta aktarır. Aşağıdaki örnekte, Windows’ta 8000 portuna gelen isteklerin WSL’nin 172.20.10.2:8000 adresine yönlendirildiği varsayılmıştır. Kendi WSL IP adresinizi ve hedef portunuzu kullanarak bu komutu özelleştirmelisiniz.

netsh interface portproxy add v4tov4 listenport=[ANA_BILGISAYAR_PORTU] listenaddress=0.0.0.0 connectport=[WSL_SERVIS_PORTU] connectaddress=[WSL_IP_ADRESI]

Bu yöntemin en büyük dezavantajı, WSL IP adresinin dinamik olmasıdır. Eğer WSL’nin IP adresi değişirse, bu kuralı manuel olarak güncellemeniz veya otomatik bir betik aracılığıyla her açılışta yenilemeniz gerekir. Aksi takdirde, önceden oluşturulan yönlendirme kuralı geçersiz hale gelir ve bağlantı sorunları yeniden baş gösterebilir. Bu durum, sürekli geliştirme ortamları için otomasyonu kaçınılmaz kılar.

Alternatif Çözümler ve Kontrol Noktaları

Güvenlik duvarı ve port yönlendirme ayarları kontrol edildikten sonra dahi WSL localhost bağlantı reddedildi hatası devam ediyorsa, sorunun kaynağı daha basit olabilir. İlk olarak, WSL içindeki servisin gerçekten çalışır durumda olup olmadığını kontrol etmek önemlidir. Bazen servisler beklenmedik bir şekilde durabilir veya başlangıçta hatalar verebilir. Linux terminalinde servisin durumunu kontrol eden komutları (örneğin sudo systemctl status [SERVIS_ADI] veya ps aux | grep [SERVIS_ADI]) çalıştırmak faydalı olacaktır.

Bunun yanı sıra, üçüncü taraf antivirüs yazılımları veya VPN istemcileri de ağ bağlantılarını engelleyebilir. Bu tür yazılımların geçici olarak devre dışı bırakılması veya WSL ile uyumlu ayarlarının yapılması sorunu çözebilir. Son olarak, tüm bu adımlara rağmen sorun devam ediyorsa, Windows ve WSL’nin tamamen yeniden başlatılması basit ancak etkili bir çözüm sunabilir. Bu, ağ yığınını ve WSL sanal makinesini sıfırlayarak geçici ağ sorunlarını gidermeye yardımcı olur. WSL’i tamamen kapatmak için Komut İstemi’ne wsl –shutdown yazıp ardından tekrar başlatmak yeterlidir.

Sık Sorulan Sorular

WSL'de localhost bağlantı reddedildi hatası neden oluşur?

Bu hata genellikle Windows Güvenlik Duvarı'nın WSL bağlantılarını engellemesi, WSL'nin dinamik IP adresi kullanması veya Linux içindeki servisin çalışmaması nedeniyle ortaya çıkar.

WSL 2'nin IP adresini nasıl bulabilirim?

WSL terminalinde 'ip addr show eth0' komutunu çalıştırarak WSL örneğinizin mevcut IP adresini öğrenebilirsiniz. Bu adres genellikle 'inet' etiketi altında listelenir.

Port yönlendirme kuralı her WSL yeniden başlatıldığında neden bozulur?

WSL 2 dinamik bir IP adresi kullandığı için, her yeniden başlatıldığında IP adresi değişebilir. Bu da önceden tanımlanmış port yönlendirme kurallarının geçersiz kalmasına neden olur ve manuel veya otomatik güncelleme gerektirir.

Esme Buğlem

Merhaba, ben Esma Buğlem. Bilgisayar teknolojileri, Windows işletim sistemleri ve donanım sorunlarının çözümü üzerine içerikler üreten bir teknoloji içerik üreticisiyim. Özellikle Windows 10 ve Windows 11 kullanıcılarının karşılaştığı hatalar, performans problemleri, güncelleme sorunları, sürücü uyumsuzlukları ve sistem optimizasyonu konularında pratik ve anlaşılır çözümler paylaşmayı hedefliyorum. Teknolojinin karmaşık görünmesine rağmen doğru anlatımla herkes tarafından öğrenilebileceğine inanıyorum. Bu nedenle hazırladığım içeriklerde teknik terimleri sadeleştirerek kullanıcıların sorunlarını hızlı ve güvenli şekilde çözmelerine yardımcı olmaya çalışıyorum. Bilgisayar toplama, donanım yükseltme, SSD ve RAM optimizasyonu, BIOS ayarları, sürücü kurulumu ve sistem bakımı gibi konular da içeriklerimin önemli bir bölümünü oluşturuyor. Amacım; teknolojiyle ilgili sorun yaşayan kullanıcıların güvenilir bir bilgi kaynağına ulaşmasını sağlamak, bilgisayarlarını daha verimli kullanmalarına yardımcı olmak ve sürekli değişen teknoloji dünyasını herkes için daha anlaşılır hale getirmektir. Edindiğim bilgi ve deneyimleri paylaşarak kullanıcıların teknolojiyle daha güçlü bir bağ kurmasına katkı sağlamaya devam ediyorum.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu