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
İlgili Makaleler
- ›Copilot Görevlerini Zamanlayarak İş Akışınızı Nasıl Hızlandırırsınız?
- ›Zamanlanmış Copilot Cowork Görevleriyle İş Akışını Optimize Etme Rehberi
- ›Windows Üzerinde WSL Localhost Bağlantı Hatasına Çözümler
- ›Windows 11'de Sürekli Beliren Uygulama Seçme Penceresini Durdurma
- ›Windows 11 Ayarlar Uygulaması Donuyor: Etkili Çözüm Yolları
