- WSL2 wykorzystuje maszynę wirtualną z własną siecią, którą można konfigurować za pomocą NAT lub trybu lustrzanego i zarządzać nią za pomocą Hyper-V.
- Połączenie plików wsl.conf i .wslconfig umożliwia dostosowanie wszystkich parametrów, od automatycznego montowania i systemd po pamięć, procesory i zasady sieciowe.
- Funkcje takie jak dnsTunneling, autoProxy i zapora Hyper-V poprawiają integrację z sieciami VPN, serwerami proxy i zabezpieczeniami w systemie Windows 11.
- Dzięki starannej konfiguracji WSL2 staje się solidną platformą do tworzenia oprogramowania, kontenerów i bezpiecznego samodzielnego hostingu.

WSL2 całkowicie zmienił sposób integracji Linuksa z systemem WindowsZwłaszcza w kontekście sieci: mamy teraz lekką maszynę wirtualną z własnym stosem sieciowym, własnym adresem IP i oddzielnymi regułami dostępu. Otwiera to wiele możliwości w zakresie rozwoju, testowania, kontenerów i środowisk samoobsługowych, ale rodzi również obawy, gdy usługi stają się niedostępne, jak to miało miejsce w przypadku WSL1.
Zrozumienie konfiguracji sieci WSL2, jej trybów NAT i lustrzanego odbicia, użycia plików .wslconfig i wsl.conf oraz ich interakcji z zaporami sieciowymi, sieciami VPN, platformą Docker lub narzędziami takimi jak Tailscale To klucz do uniknięcia problemów. Zobaczmy krok po kroku, jak działa cała ta konfiguracja, jak udostępnić usługi w systemie Windows i sieci LAN, jakich poleceń użyć, aby uzyskać prawidłowe adresy IP, oraz jakie zaawansowane opcje konfiguracji masz do dyspozycji, aby dostroić środowisko, zapewniając mu stabilność i, przede wszystkim, bezpieczeństwo.
Jak właściwie działa sieć w WSL2
WSL2 nie współdzieli już stosu sieciowego hosta, tak jak WSL1Zamiast tego uruchamia każdą dystrybucję Linuksa na małej maszynie wirtualnej zarządzanej przez Hyper-V. Ta maszyna wirtualna ma własny adapter wirtualny (zwykle eth0) i prywatny adres IP przypisany przez wewnętrzny wirtualny przełącznik.
W trybie domyślnym WSL2 wykorzystuje architekturę opartą na NAT (Tłumaczenie adresów sieciowych). System Windows pełni rolę routera/hosta, a dystrybucja Linuksa znajduje się w prywatnej podsieci, zazwyczaj w zasięgu. 172.16.0.0/12Ta podsieć może ulec zmianie po ponownym uruchomieniu komputera lub ponownym uruchomieniu WSL, co doprowadziło już niejedną osobę do szału podczas konfigurowania statycznych reguł zapory.
Z praktycznego punktu widzenia oznacza to, że adres IP dystrybucji WSL2 nie jest ani stabilny, ani bezpośrednio dostępny z sieci LAN Podobnie jak w przypadku WSL1: domyślnie łączność między systemem Windows a WSL2 odbywa się wyłącznie za pośrednictwem reguł przekierowywania i NAT, a udostępnienie połączenia z siecią lokalną wymaga dodatkowych czynności lub użycia trybu lustrzanego.
Oprócz tej podstawowej architektury, system Windows 11 22H2 i nowsze wersje dodają nowe możliwości sieciowe (tryb lustrzany, dnsTunneling, autoProxy, zapora Hyper-V itp.) kontrolowane z pliku globalnego .wslconfigpodczas gdy niektóre opcje w Linuksie są zarządzane za pomocą /etc/wsl.conf.
Identyfikacja adresów IP w WSL2
Praca z WSL2 wymaga wyraźnego rozróżnienia dwóch scenariuszy IP: gdy potrzebujesz adresu IP dystrybucji Linuksa i gdy potrzebujesz adresu IP hosta Windows wyświetlanego z Linuksa. Każdy z tych adresów jest rozwiązywany za pomocą innego polecenia.
Scenariusz 1: Z systemu Windows chcesz poznać adres IP dystrybucji WSL2 Aby zezwolić aplikacji na hoście (na przykład klientowi, przeglądarce lub narzędziu testowemu) na połączenie się z usługą działającą w systemie Linux, możesz uruchomić następujące polecenia w systemie Windows (za pomocą wiersza poleceń CMD lub programu PowerShell):
wsl.exe --distribution <DistroName> hostname -i
Jeśli chcesz użyć domyślnej dystrybucji, możesz pominąć parametr distribution. i po prostu zadzwoń wsl.exe hostname -iW tle to polecenie uruchamia się w systemie Linux hostname --ip-addresses i zwraca adres IP instancji. Typowy wynik może wyglądać mniej więcej tak:
172.30.98.229
Scenariusz 2: Z dystrybucji Linuksa musisz znać adres IP hosta WindowsNa przykład, aby połączyć aplikację WSL2 z serwerem działającym natywnie w systemie Windows (Node.js, SQL Server, Caddy itp.), w powłoce Linuksa można użyć:
ip route show | grep -i default | awk '{ print $3 }'
Dane wyjściowe będą domyślną bramą maszyny wirtualnej WSL2, który odpowiada adresowi IP hosta Windows widzianemu z poziomu Linuksa, na przykład:
172.30.96.1
Wartość ta (na przykład, 172.30.96.1) to adres, na który powinni wskazywać Twoi klienci Linux gdy chcesz uzyskać dostęp do usług uruchomionych na hoście Windows w trybie klasycznym NAT.
Tryb NAT: domyślne zachowanie sieci WSL2
Domyślnie WSL2 działa w trybie NAT, co w przypadku wielu prostych środowisk programistycznych jest więcej niż wystarczające.Ważne jest, aby zrozumieć, co działa „samo w sobie”, a co nie, aby nie tracić czasu na pogoń za duchami.
Dostęp do usług Linux z systemu Windows przy użyciu localhostJeśli uruchamiasz aplikację sieciową (na przykład serwer Node.js, serwer Flask, SQL Server w systemie Linux) na swojej dystrybucji WSL2, możesz uzyskać do niej dostęp z systemu Windows za pomocą localhost:puertoSystem Windows automatycznie przekierowuje połączenia przychodzące na wewnętrzny adres IP maszyny wirtualnej WSL2.
Dostęp do usług działających w systemie Windows z poziomu systemu LinuxTutaj sytuacja się zmienia. Aby dotrzeć do aplikacji sieciowej na hoście (takiej jak serwer Node.js, SQL Server lub Caddy w systemie Windows) z WSL2, należy użyć adresu IP hosta odczytanego z Linuksa, uzyskanego za pomocą polecenia default route:
ip route show | grep -i default | awk '{ print $3 }'
Za pomocą tego adresu IP możesz połączyć się z Linuksem do dowolnej usługi na hoście, na przykład http://172.30.96.1:3000 jeśli serwer Windows nasłuchuje na porcie 3000 na wszystkich interfejsach.
Jeśli łączysz się za pomocą zdalnych adresów IP (nie localhost), aplikacje widzą je jako połączenia LAN.Oznacza to, że wiele serwerów musi zostać skonfigurowanych do nasłuchiwania 0.0.0.0 zamiast 127.0.0.1Na przykład za pomocą Flaska możesz uruchomić:
app.run(host='0.0.0.0')
Zmiana ta poprawia dostępność, ale wymaga skupienia się na bezpieczeństwie.ponieważ zezwalasz na połączenia z sieci lokalnej, a nie tylko z samego komputera.
Dostęp do WSL2 z sieci lokalnej (LAN) przy użyciu NAT
Jedną z najbardziej irytujących zmian po przejściu z WSL1 na WSL2 jest to, że dystrybucje nie są już bezpośrednio dostępne z sieci LANW WSL1, jeśli Twój system Windows był widoczny w sieci, usługi dystrybucji przejmowały tę widoczność niemal bez wysiłku.
W WSL2 maszyna wirtualna ma swój własny prywatny adres IP i nie jest automatycznie reklamowana w sieci LAN.Aby osiągnąć coś podobnego do starego zachowania, w trybie NAT należy utworzyć serwer proxy portu w systemie Windows, tak jak ma to miejsce w przypadku dowolnej maszyny wirtualnej Hyper-V.
W systemie Windows dostępne jest klasyczne narzędzie do tego celu: netsh interface portproxyTypowe polecenie przekierowania portu hosta na adres IP/port WSL2 wygląda następująco:
netsh interface portproxy add v4tov4 listenport=<puertoHost> listenaddress=0.0.0.0 connectport=<puertoWSL> connectaddress=(wsl hostname -I)
W praktyce należy zastąpić znaczniki konkretnymi wartościami., na przykład:
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100
Tutaj listenaddress=0.0.0.0 Oznacza to, że system Windows będzie nasłuchiwał na wszystkich adresach IPv4 hosta.i przekaże to, co przychodzi przez port 4000 do 192.168.101.100:4000który będzie adresem IP WSL2 uzyskanym za pomocą:
wsl hostname -IPodaje adres IP dystrybucji Linuksa wewnątrz maszyny wirtualnej WSL2cat /etc/resolv.confUjawnia adres IP hosta Windows Vista z WSL2.
Dzięki tej technice możesz udostępnić usługę działającą na WSL2 z dowolnego komputera w sieci LANpod warunkiem, że zapora systemu Windows na to pozwala i masz pewność, że udostępniasz usługę maszyny wirtualnej, a nie bezpośrednio hosta.
IPv6 i nowoczesne funkcje sieciowe
WSL2 może również współpracować z protokołem IPv6, co jest szczególnie istotne w nowoczesnych środowiskach, sieciach VPN i sieciach korporacyjnych.Do obsługi adresów podstawowe polecenia w systemie Linux są równoważne tym z IPv4:
wsl hostname -iZ poziomu systemu Windows, aby wyświetlić adres IP dystrybucji WSL2ip route show | grep -i default | awk '{ print $3 }'z Linuksa, aby uzyskać adres IP hosta Windows
Prawdziwy skok jakościowy w obsłudze protokołu IPv6 i sieci VPN jest zauważalny w trybie sieci lustrzanej, dostępne w systemie Windows 11 22H2 i nowszych wersjach, które omówimy szczegółowo później.
Tryb sieciowy z dublowaniem: dublowanie interfejsów systemu Windows w systemie Linux
Na komputerach z systemem Windows 11 22H2 lub nowszym można włączyć tryb sieciowy „lustrzany”. W WSL2 model ten zmienia się całkowicie: zamiast klasycznego NAT, Linux „widzi” odzwierciedlenie interfejsów sieciowych Windows.
Aby włączyć tę funkcję, należy edytować plik .wslconfig Twojego użytkownika, który jest w %UserProfile%\.wslconfigZ poziomu programu PowerShell z uprawnieniami administratora możesz go otworzyć za pomocą:
notepad $env:USERPROFILE\.wslconfig
Wewnątrz dodaj (lub zmodyfikuj) sekcję [wsl2], aby aktywować tryb lustrzany:
[wsl2]
networkingMode=mirrored
Po zapisaniu pliku należy ponownie uruchomić WSL2, aby zmiany zostały uwzględnione.Na przykład z:
wsl --shutdown
Po ponownym uruchomieniu WSL użyje nowej, lustrzanej architektury sieciowej.co niesie ze sobą kilka bardzo istotnych korzyści:
- Natywna obsługa protokołu IPv6 i ulepszona integracja z sieciami korporacyjnymi i sieciami VPN
- Możliwość połączenia się z usługami Windows z poziomu systemu Linux za pomocą
127.0.0.1directamente (chociaż nie jest to dozwolone)::1(na przykład pętla zwrotna IPv6) - Ulepszona obsługa multicastingu w ramach integracji Windows-Linux
- Bezpośredni dostęp do WSL z sieci LAN bez konieczności używania netsh portproxykorzystając z adresu IP samego komputera z systemem Windows
Włączenie tego trybu rozwiązuje wiele klasycznych problemów NAT WSL2 i jest to zalecana opcja w większości nowoczesnych środowisk programistycznych i hostingowych, w których można używać zaktualizowanej wersji systemu Windows 11.
Tunelowanie DNS i wykorzystanie serwerów proxy w WSL2
W systemie Windows 11 22H2 i nowszych wersjach rozpoznawanie nazw z WSL2 również przeszło znaczną modernizację.Kluczem są dwie funkcjonalności zdefiniowane w .wslconfig: dnsTunneling y autoProxy.
opcja dnsTunneling Domyślnie jest włączona w sekcji [wsl2]. Dzięki temu żądania DNS systemu Linux są obsługiwane za pomocą funkcji wirtualizacji, a nie wysyłane jako zwykłe pakiety sieciowe. Znacznie poprawia to kompatybilność z sieciami VPN i złożonymi konfiguracjami sieciowymi na hoście.
Ze swojej strony, autoProxy=true wymusza na WSL korzystanie z ustawień serwera proxy HTTP systemu WindowsJeśli host znajduje się za korporacyjnym lub zabezpieczającym serwerem proxy, WSL2 automatycznie go dziedziczy, dzięki czemu nie musisz ręcznie konfigurować zmiennych środowiskowych.
Możesz mieć na przykład coś takiego w swoim .wslconfig:
[wsl2]
dnsTunneling=true
autoProxy=true
Dzięki temu można mieć pewność, że sieć WSL2 będzie zachowywać się spójnie z konfiguracją hosta., szczególnie przydatne w firmach ze ścisłymi zasadami sieciowymi i filtrowania.
Zapora sieciowa Hyper-V i bezpieczne udostępnianie usług
W nowoczesnych środowiskach sieć WSL2 przechodzi również przez dedykowaną zaporę sieciową.Od wersji WSL 2.0.9 w systemie Windows 11 22H2 funkcja zapory Hyper-V jest domyślnie włączona, co dodaje dodatkową warstwę filtrowania ruchu maszyn wirtualnych (w tym ruchu WSL2).
Jeśli pracujesz w trybie lustrzanym i chcesz na stałe udostępnić usługi WSL2 w sieci LAN (na przykład interfejsów API, pulpitów nawigacyjnych lub usług z własnym hostingiem) należy upewnić się, że reguły zapory na to pozwalają.
Rozsądnym podejściem z poziomu programu PowerShell z uprawnieniami administratora jest utworzenie reguły Hyper-V dla sieci prywatnych:
New-NetFirewallHyperVRule -DisplayName "WSLPrivateInboundRule" -Profiles Private -Direction Inbound -Action Allow -VMCreatorId ((Get-NetFirewallHyperVVMCreator).VMCreatorId)
Jeśli z jakiegokolwiek powodu chcesz wyłączyć tę konkretną ochronę Hyper-V (coś mniej polecanego), możesz użyć:
Set-NetFirewallHyperVVMSetting -Name ((Get-NetFirewallHyperVVMCreator).VMCreatorId) -Enabled False
Chodzi o to, aby zapora sieciowa była aktywna zawsze, gdy jest to możliwe.ograniczając reguły do sieci prywatnych i wyłącznie do portów, których naprawdę potrzebujesz, a masową dezaktywację pozostawiając jako ostateczność i zawsze mając na uwadze ponowne wzmocnienie konfiguracji, gdy wszystko zacznie działać.
Architektura sieciowa WSL2, zakresy X11 i 172.16.0.0/12
Klasycznym przypadkiem ujawniającym szczegóły sieci WSL2 jest użycie aplikacji graficznych za pośrednictwem X11Na przykład uruchomienie Xming w systemie Windows i wysyłanie aplikacji Linux za pośrednictwem DISPLAY.
Wielu użytkowników zauważa, że po uaktualnieniu z WSL1 do WSL2 interfejs X przestaje działać. ponieważ sieć przestaje być „współdzielona” i staje się wirtualną siecią NAT o zakresach takich jak 172.16.0.0/12co może również ulec zmianie po każdym ponownym uruchomieniu systemu Windows lub WSL.
Aby ponownie uruchomić X z Xmingiem z WSL2, zwykle stosuje się sztuczkę polegającą na uzyskaniu adresu IP systemu Windows, który widzi Linux. za pomocą:
por
DISPLAY=$(grep nameserver /etc/resolv.conf | cut -d' ' -f2):0
Równocześnie należy dostosować zaporę systemu Windows, aby umożliwić ruch X11 z tej podsieci NATTypowym podejściem jest edycja reguły Xming poprzez dodanie zakresu 172.16.0.0/12 w TCP+UDP 6000.
Wiele osób kończy na wyłączeniu uwierzytelniania Xming za pomocą opcji -acTo skutecznie „otwiera drzwi” dla każdego klienta X przychodzącego z tej sieci. Działa, ale z punktu widzenia bezpieczeństwa jest dość wątpliwe, dlatego warto rozważyć bardziej ograniczone rozwiązania lub skorzystać z WSLg (zintegrowanych aplikacji GUI) w systemie Windows 11.
wsl.conf i .wslconfig: zaawansowana konfiguracja WSL2
WSL oferuje dwa kluczowe pliki konfiguracyjne, które kontrolują zachowanie zarówno maszyny wirtualnej, jak i każdej dystrybucji.: /etc/wsl.conf (przez dystrybucję) i %UserProfile%\.wslconfig (globalne dla wszystkich dystrybucji WSL2).
wsl.conf mieszka w dystrybucji Linuksa, w /etc/wsl.confSłuży do konfigurowania lokalnych opcji dla danej dystrybucji: automatycznego montowania, generowania hosts y resolv.confwspółdziałanie z systemem Windows, domyślnym użytkownikiem, systemd itp.
.wslconfig Jest on zapisywany poza systemem Linux, w profilu użytkownika systemu Windows. (C:\Users\<Usuario>\.wslconfig) i kontroluje globalne parametry maszyny wirtualnej, na której działa WSL2: pamięć, procesory, jądro, tryb sieciowy, zapora sieciowa, DNS, rozmiar dysku wirtualnego, obsługę GUI itp.
Ciekawostką jest „zasada 8 sekund” obowiązująca przy zmianie ustawień.Modyfikując którykolwiek z tych plików, należy upewnić się, że maszyna wirtualna WSL jest całkowicie wyłączona. Nawet po zamknięciu okna dystrybucji, może ona pozostać w pamięci przez kilka sekund.
Aby wymusić ponowne uruchomienie podsystemu, możesz użyć:
wsl --list --runningaby sprawdzić, czy są jakieś aktywne dystrybucjewsl --shutdownzamknąć wszystkie dystrybucje na razwsl --terminate <distroName>aby zatrzymać konkretną dystrybucję
Zmiany konfiguracji zostaną zastosowane dopiero po wyłączeniu i ponownym uruchomieniu WSL.Coś, co wiele osób ignoruje i myśli, że ich zmiany „nie działają”.
Główne opcje wsl.conf według sekcji
plik wsl.conf Jest inspirowany klasycznym formatem .ini, z sekcjami i kluczamiGłówne sekcje to: [automount], [network], [interop], [user], [boot], [gpu] y [time].
En [automount] Masz kontrolę nad sposobem montowania dysków Windows w systemie Linux (zwykle niski) /mnt):
enabled(bool, domyślnie prawda)Jeżeli to prawda, to automatycznie montowane są w nich dyski C:/, D:/ itd./mnt/c,/mnt/d...mountFsTab(liczba):jeśli to prawda, to jest przetwarzane/etc/fstabpodczas uruchamiania dystrybucji.root(łańcuch):katalog główny, w którym będą montowane dyski, na przykład/windir/mieć/windir/c.options(lista rozdzielona przecinkami):Parametry specyficzne dla DrvFs, takie jakmetadata,uid,gid,umask,fmask,dmaskocase.
DrvFs to system plików łączący systemy Windows i Linux., zaprojektowany do dostępu do NTFS z WSL z kontrolą uprawnień, metadanymi i uwzględnieniem wielkości liter.
W dziale [network] Dostosowujesz automatyczne generowanie plików sieciowych:
generateHostsJeśli to prawda, WSL automatycznie generuje/etc/hosts.generateResolvConfJeśli to prawda, WSL tworzy/etc/resolv.confze starszym systemem DNS.hostname: nazwa hosta, której będzie używać dystrybucja.
Sekcja [interop] kontroluje interoperacyjność z systemem Windows:
enabled:Włącza lub wyłącza możliwość uruchamiania procesów systemu Windows z WSL.appendWindowsPath: decyduje, czy dodać ścieżki systemu Windows do$PATHLinux.
En [user] Możesz określić użytkownika, który będzie używany domyślnie podczas uruchamiania dystrybucji:
default: nazwa użytkownika, która będzie domyślnie używana w WSL.
Sekcja [boot] Jest szczególnie przydatny w systemach Windows 11 i Server 2022 aby automatycznie uruchamiać usługi, takie jak Docker w WSL:
command: ciąg poleceń do wykonania podczas uruchamiania WSL, na przykładservice docker start.protectBinfmt: chroni generowanie jednostek systemd, gdy systemd jest włączony.
Masz również sekcje takie jak [gpu] (umożliwić dostęp do procesora graficznego Windows z poziomu systemu Linux) i [time] synchronizacja strefy czasowej z systemem WindowsDzięki temu można uniknąć problemów przy zmianie czasu na letni lub w podróży.
.wslconfig: sterowanie maszyną wirtualną WSL2
Podczas gdy wsl.conf dostosowuje zachowanie każdej dystrybucji, .wslconfig pozwala na precyzyjne dostrojenie maszyny wirtualnej współdzielonej przez wszystkie dystrybucje WSL2.Plik ten jest brany pod uwagę jedynie przez dystrybucje działające jako WSL2, a nie WSL1.
W ciągu .wslconfig sekcja główna to [wsl2]gdzie definiujesz kluczowe parametry:
kernelykernelModules: ścieżki absolutne z systemu Windows do niestandardowego jądra Linux i jego modułów.memory:Limit pamięci maszyny wirtualnej (domyślnie 50% pamięci RAM hosta), na przykład4GB.processors: liczba procesorów logicznych przypisanych do maszyny wirtualnej.localhostForwarding:umożliwia dostęp do otwartych portów w WSL2 z poziomu systemu Windows za pomocąlocalhost.swapyswapFile:rozmiar i ścieżka pliku wymiany dla maszyny wirtualnej.guiApplications: włącza lub wyłącza obsługę aplikacji GUI (WSLg).dnsProxyW trybie NAT decyduje, czy serwer DNS systemu Linux będzie instancją NAT hosta czy kopią serwera DNS systemu Windows.networkingModeTutaj możesz wybrać pomiędzynone,nat,bridged(przestarzały),mirroredovirtioproxy.firewall,dnsTunnelingyautoProxy: omówione przez nas opcje umożliwiające lepszą integrację sieci WSL z zasadami systemu Windows.defaultVhdSize: maksymalny rozmiar dysku VHD, na którym przechowywany jest system plików dystrybucji (domyślnie 1 TB).
Jest też sekcja [experimental] gdzie funkcje są aktywowane podczas testowania się:
autoMemoryReclaim: ustawienia automatycznego odzyskiwania pamięci (wyłączone, stopniowe, dropCache).sparseVhd:tworzenie rozproszonych dysków wirtualnych w celu zaoszczędzenia miejsca.bestEffortDnsParsingydnsTunnelingIpAddress:dostrajanie tunelowania DNS.ignoredPorts:porty, z których mogą korzystać aplikacje Linux, nawet jeśli są używane w systemie Windows, gdy komputer znajduje się w trybie lustrzanym.hostAddressLoopback:umożliwia hostowi i kontenerowi łączenie się przy użyciu lokalnych adresów IP hosta w trybie lustrzanym.
Poprawna konfiguracja .wslconfig stanowi różnicę między zasobożerną maszyną wirtualną a zoptymalizowanym środowiskiem, które dobrze współpracuje z systemem Windows i siecią.szczególnie jeśli pracujesz z dużymi obciążeniami, kontenerami lub wieloma dystrybucjami działającymi jednocześnie.
WSL2, Docker i sieć do samodzielnego hostingu z Tailscale
Bardzo praktycznym przykładem jest użycie WSL2 na serwerach Windows (nawet Windows Server 2025) jako platformy do samodzielnego hostingu, łącząc Ubuntu na WSL2, Docker Engine (bez Docker Desktop), Tailscale i odwrotny serwer proxy, taki jak Caddy, w celu udostępnienia usług takich jak n8n lub Supabase.
Pomysł polega na zapewnieniu stabilnego środowiska Docker w ramach WSL2, unikając problemów Docker Desktop na serwerachPodczas instalowania Docker Engine bezpośrednio na Ubuntu (WSL2), sieć kontenerów opiera się na sieci WSL2, która z kolei zależy od trybu NAT lub trybu lustrzanego zdefiniowanego w pliku .wslconfig.
Po zainstalowaniu Tailscale na WSL2 możesz publikować swoje usługi w sieci VPN typu mesh. bez otwierania portów na routerze i wykorzystując Caddy jako odwrotny serwer proxy do centralizacji certyfikatów TLS, tras i lekkiego równoważenia obciążenia między kontenerami.
Aby utrzymać czystą, przewidywalną i bezpieczną sieć, zaleca się:
- Wybierz jeden spójny tryb sieciowy (NAT lub lustrzany) i udokumentuj go
- Unikaj konfliktów portów między systemem Windows a WSL2, polegając na
ignoredPortsjeśli używasz lustrzanego odbicia - Kontrola ekspozycji usług tylko za pośrednictwem Tailscale lub Caddyzamiast otwierać porty „domyślnie” w zaporze
- Zautomatyzuj uruchamianie Dockera, Tailscale i Caddy z
[boot]w wsl.conf mieć środowisko bliższe produkcji
Dzięki tej architekturze WSL2 przestaje być wyłącznie narzędziem programistycznym i może stać się całkiem poważną platformą do samodzielnego hostingu.pod warunkiem, że zaakceptujesz jego ograniczenia (wirtualizacja przez Hyper-V, dodatkowa warstwa sieciowa itp.) i skonfigurujesz go ostrożnie.
Najlepsze praktyki dla sieci WSL2 na potrzeby rozwoju i testowania
Oprócz dostrajania istnieje szereg wskazówek, które pomogą Ci komfortowo pracować z siecią WSL2 bez konieczności ciągłej walki z adresami IP, portami i zaporami sieciowymi.
W przypadku usług programistycznych należy używać portów o wyższej wartości (powyżej 1024) i unikaj portów uprzywilejowanych lub intensywnie używanych; minimalizuje to konflikty i eliminuje potrzebę dodatkowych uprawnień.
Upewnij się, że kod i dane znajdują się w systemie plików Linux. (Ty ~/ lub trasy wewnętrzne) zamiast pracować bezpośrednio nad /mnt/cponieważ dostęp do NTFS z WSL jest wolniejszy i może negatywnie wpływać na usługi intensywnie wykorzystujące wejście/wyjście.
Zautomatyzuj ustawienia sieciowe i reguły przekierowań za pomocą skryptów W PowerShell i Bash: na przykład skrypt, który konfiguruje WSL2 podczas uruchamiania. netsh portproxy (jeśli kontynuujesz korzystanie z NAT) lub sprawdź reguły zapory sieciowej podczas korzystania z funkcji lustrzanego odbicia.
Unikaj polegania na zmieniających się adresach IP generowanych przez wewnętrzny przełącznik wirtualny. Jeśli to możliwe, pracuj z localhost, nazwy hostów lub wpisy w /etc/hosts dla Twoich usług, tak aby zmiana adresu IP nie naruszyła połowy Twojej infrastruktury testowej.
W środowiskach profesjonalnych lub półprodukcyjnych najlepiej nie polegać bezkrytycznie na automatycznym przekazywaniu wiadomości przez WSL.Jawnie skonfiguruj porty, serwery proxy i reguły zapory sieciowej, aby dokładnie wiedzieć, co jest narażone i gdzie.
Po prawidłowej konfiguracji WSL2 oferuje odizolowaną, a jednocześnie elastyczną sieć, idealną do zaawansowanego rozwoju, testowania API, pracy z kontenerami i symulowania rozproszonych środowisk.Kluczem jest opanowanie trybów sieciowych (NAT lub lustrzane), plików wsl.conf i .wslconfig oraz interakcji z zaporą sieciową i narzędziami w stosie (Docker, Tailscale, odwrotne serwery proxy), aby systemy Windows i Linux mogły działać na tym samym komputerze bez nakładania się portów lub narażania bezpieczeństwa.
Spis treści
- Jak właściwie działa sieć w WSL2
- Identyfikacja adresów IP w WSL2
- Tryb NAT: domyślne zachowanie sieci WSL2
- Dostęp do WSL2 z sieci lokalnej (LAN) przy użyciu NAT
- IPv6 i nowoczesne funkcje sieciowe
- Tryb sieciowy z dublowaniem: dublowanie interfejsów systemu Windows w systemie Linux
- Tunelowanie DNS i wykorzystanie serwerów proxy w WSL2
- Zapora sieciowa Hyper-V i bezpieczne udostępnianie usług
- Architektura sieciowa WSL2, zakresy X11 i 172.16.0.0/12
- wsl.conf i .wslconfig: zaawansowana konfiguracja WSL2
- Główne opcje wsl.conf według sekcji
- .wslconfig: sterowanie maszyną wirtualną WSL2
- WSL2, Docker i sieć do samodzielnego hostingu z Tailscale
- Najlepsze praktyki dla sieci WSL2 na potrzeby rozwoju i testowania