Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Při práci se síťovými aplikacemi a WSL je potřeba vzít v úvahu několik aspektů. Ve výchozím nastavení WSL používá architekturu založenou nanaT a doporučujeme vyzkoušet nový zrcadlený síťový režim získat nejnovější funkce a vylepšení.
Identifikovat IP adresu
Při identifikaci IP adresy používané pro linuxovou distribuci spuštěnou přes WSL je potřeba vzít v úvahu dva scénáře:
Scénář 1: Z pohledu hostitele s Windows chcete dotazovat IP adresu distribuce Linuxu spuštěnou přes WSL2, aby se program na hostiteli s Windows mohl připojit k serverové aplikaci spuštěné uvnitř distribuce (instance).
Hostitel s Windows může použít příkaz:
wsl.exe --distribution <DistroName> hostname -i
Pokud se dotazuje na výchozí distribuci, může být tato část příkazu označující distribuci vynechána: -d <DistroName>. Nezapomeňte použít příznak -i malých písmen.
Pod kapotou příkaz hostitele wsl.exe spustí cílovou instanci a spustí příkaz hostname --ip-addressesLinuxu . Tento příkaz pak vytiskne IP adresu instance WSL do STDOUT. Textový obsah STDOUT se pak předá zpět do wsl.exe. Nakonec wsl.exe zobrazí tento výstup na příkazový řádek.
Typický výstup může být:
172.30.98.229
Scénář 2: program spuštěný v linuxové distribuci přes WSL2 (instance) chce znát IP adresu hostitele Windows, aby se program Linuxu mohl připojit k programu hostitelského serveru Windows.
Uživatel WSL2 Linux může použít příkaz:
ip route show | grep -i default | awk '{ print $3}'
Typický výstup může být:
172.30.96.1
Proto 172.30.96.1 je IP adresa hostitele pro Windows, v tomto příkladu.
Poznámka
Tyto výše uvedené akce dotazování IP adres se obvykle vyžadují, pokud je WSL2 spuštěn s výchozím síťovým režimem PŘEKLADU adres (NAT).
Když je WSL2 spuštěna s novým zrcadleným režimem, hostitel Windows a virtuální počítač WSL2 se můžou vzájemně připojit pomocí localhost (127.0.0.1), takže trik dotazování IP adresy protějšku není potřeba.
Výchozí síťový režim: NAT
WsL ve výchozím nastavení používá pro sítě architekturu založenou na překladu adres (NAT). Při práci se síťovou architekturou založenou na překladu adres (NAT) mějte na paměti následující skutečnosti:
Přístup k síťovým aplikacím pro Linux z Windows (localhost)
Pokud vytváříte síťovou aplikaci (například aplikaci spuštěnou na NodeJS nebo SQL Serveru) v linuxové distribuci, můžete k ní přistupovat z aplikace pro Windows (například z internetového prohlížeče Edge nebo Chrome) pomocí localhost (stejně jako obvykle).
Přístup k síťovým aplikacím pro Windows z Linuxu (IP adresa hostitele)
Pokud chcete získat přístup k síťové aplikaci běžící ve Windows (například aplikaci spuštěnou na NodeJS nebo SQL Serveru) z linuxové distribuce (tj. Ubuntu), musíte použít IP adresu hostitelského počítače. I když to není běžný scénář, můžete ho udělat podle těchto kroků.
Získejte IP adresu hostitelského počítače spuštěním tohoto příkazu z distribuce Linuxu:
ip route show | grep -i default | awk '{ print $3}'Připojte se k libovolnému serveru s Windows pomocí zkopírované IP adresy.
Následující obrázek ukazuje příklad připojením k Node.js serveru spuštěného ve Windows přes curl.
Curl
Připojení přes vzdálené IP adresy
Při použití vzdálených IP adres pro připojení k vašim aplikacím se budou považovat za připojení ze sítě LAN (Local Area Network). To znamená, že budete muset zajistit, aby vaše aplikace přijímala připojení LAN.
Může být například nutné vytvořit vazbu aplikace na 0.0.0.0 místo 127.0.0.1. V příkladu aplikace v Pythonu pomocí Flasku to lze provést pomocí příkazu: app.run(host='0.0.0.0'). Při provádění těchto změn mějte na paměti zabezpečení, protože to umožní připojení z vaší sítě LAN.
Přístup k distribuci WSL 2 z místní sítě (LAN)
Při použití distribuce WSL 1, pokud byl váš počítač nastaven pro přístup k síti LAN, pak aplikace spuštěné ve WSL mohou být přístupné i ve vaší síti LAN.
Toto není výchozí případ ve WSL 2. WSL 2 má virtualizovaný ethernetový adaptér s vlastní jedinečnou IP adresou. Pokud chcete tento pracovní postup povolit, budete muset projít stejnými kroky jako u běžného virtuálního počítače. (Hledáme způsoby, jak toto prostředí vylepšit.)
Tady je příklad použití příkazu rozhraní Netsh Windows k přidání proxy portu, který naslouchá na vašem hostitelském portu, a připojení tohoto proxy portu k IP adrese virtuálního počítače WSL 2.
netsh interface portproxy add v4tov4 listenport=<yourPortToForward> listenaddress=0.0.0.0 connectport=<yourPortToConnectToInWSL> connectaddress=(wsl hostname -I)
V tomto příkladu budete muset aktualizovat <yourPortToForward> na číslo portu, například listenport=4000.
listenaddress=0.0.0.0 znamená, že příchozí požadavky budou přijaty z JAKÉKOLI IP adresy. Adresa naslouchání určuje adresu IPv4, pro kterou se má naslouchat, a lze ji změnit na hodnoty, které zahrnují: IP adresu, název netBIOS počítače nebo název DNS počítače. Pokud není zadaná adresa, výchozí hodnota je místní počítač. Potřebujete aktualizovat hodnotu <yourPortToConnectToInWSL> na číslo portu, ke kterému se má WSL připojit, například connectport=4000. Nakonec musí být hodnota connectaddress IP adresou vaší linuxové distribuce nainstalované prostřednictvím WSL 2 (adresa virtuálního počítače WSL 2), kterou najdete zadáním příkazu: wsl.exe hostname -I.
Tento příkaz proto může vypadat nějak takto:
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100
K získání IP adresy použijte:
-
wsl hostname -Ipro IP adresu vaší linuxové distribuce nainstalované prostřednictvím WSL 2 (adresa VM WSL 2) -
cat /etc/resolv.confpro IP adresu počítače s Windows, jak je vidět z WSL 2 (virtuální počítač WSL 2)
Při použití listenaddress=0.0.0.0 bude naslouchat na všech portech IPv4.
Poznámka
Použití malého písmena "i" s příkazem název hostitele vygeneruje jiný výsledek než použití velkého písmena "I".
wsl hostname -i je místní počítač (127.0.1.1 je zástupná diagnostická adresa), zatímco wsl hostname -I vrátí IP adresu místního počítače, jak je vidět na jiných počítačích, a měla by se použít k identifikaci connectaddress distribuce Linuxu spuštěné přes WSL 2.
Přístup iPv6
-
wsl hostname -ipro IP adresu vaší linuxové distribuce nainstalované prostřednictvím WSL 2 (adresa VM WSL 2) -
ip route show | grep -i default | awk '{ print $3}'pro IP adresu počítače s Windows, jak je vidět z WSL 2 (virtuální počítač WSL 2)
Při použití listenaddress=0.0.0.0 bude naslouchat na všech portech IPv4.
Síť v zrcadleném režimu
Na počítačích s Windows 11 22H2 a novějším můžete nastavit networkingMode=mirrored v [wsl2] souboru .wslconfig, aby se povolil zrcadlový režim sítě. Povolením této funkce se WSL mění na zcela novou síťovou architekturu, která má za cíl „zrcadlit“ síťová rozhraní, která máte ve Windows, do Linuxu, aby přidala nové síťové funkce a zlepšila kompatibilitu.
Tady jsou aktuální výhody povolení tohoto režimu:
- Podpora protokolu IPv6
- Připojte se k serverům Windows z Linuxu pomocí adresy localhost
127.0.0.1. Adresa místního hostitele IPv6::1se nepodporuje. - Vylepšená kompatibilita sítí pro sítě VPN
- Podpora vícesměrového vysílání
- Připojení k WSL přímo z místní sítě (LAN)
Poznámka
Spuštěním následujícího příkazu v okně PowerShellu s oprávněními správce nakonfigurujte nastavení brány firewall Hyper-V tak, aby povolovali příchozí připojení:
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
nebo
New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80
Tento nový režim řeší problémy se sítěmi, ke kterým dochází při použití architektury založené na překladu adres (NAT). Vyhledejte známé problémy nebo zpětnou vazbu k jakýmkoli chybám identifikovaným v úložišti produktů WSL na GitHubu.
Tunelování DNS
Na počítačích s Windows 11 22H2 a vyšších je dnsTunneling funkce ve výchozím nastavení zapnutá (kterou lze nalézt pod [wsl2] v .wslconfig souboru) a používá virtualizační funkci k zodpovězení požadavků DNS ze služby WSL, místo jejich získávání síťovým paketem. Cílem této funkce je zlepšit kompatibilitu s sítěmi VPN a dalšími složitými sadami sítí.
Automatický proxy server
Na počítačích s Windows 11 22H2 a novějším, nastavení autoProxy=true pod [wsl2] v souboru .wslconfig vynucuje, aby WSL používal informace o HTTP proxy systému Windows. Pokud už máte ve Windows nastavený proxy server, povolením této funkce se tento proxy server nastaví automaticky i ve WSL.
WSL a brána firewall
Na počítačích s Windows 11 22H2 a novějším a WSL 2.0.9 a novějším bude funkce brány firewall Hyper-V ve výchozím nastavení zapnuta. Tím zajistíte, že:
- Další informace o funkcích zabezpečení systému Windows, které se automaticky použijí pro WSL, najdete v tématu Brána firewall Windows Defender s pokročilým zabezpečením.
- Další informace o použití těchto pravidel a nastavení místně i prostřednictvím online nástrojů, jako je Intune, najdete v tématu Konfigurace Hyper-V brány firewall.
Windows Subsystem for Linux