Megosztás:


Hálózati alkalmazások elérése WSL-vel

A hálózati alkalmazások és a WSL használata során figyelembe kell venni néhány szempontot. A WSL alapértelmezés szerint NAT-alapú architektúráthasznál, és javasoljuk, hogy próbálja ki az új tükrözött hálózati módot a legújabb funkciók és fejlesztések beszerzéséhez.

IP-cím azonosítása

A WSL-en keresztül futó Linux-disztribúcióhoz használt IP-cím azonosításakor két forgatókönyvet kell figyelembe venni:

Első forgatókönyv: A Windows-gazdagép szempontjából le szeretné kérdezni egy Linux-disztribúció WSL2-n keresztül futó IP-címét, hogy a Windows-gazdagépen futó programok kapcsolódni tudjanak a disztribúción (példányon) futó kiszolgálói programhoz.

A Windows-gazdagép a következő parancsot használhatja:

wsl.exe --distribution <DistroName> hostname -i

Ha lekérdezi az alapértelmezett eloszlást, a parancsnak a disztribúciót kijelölő része kihagyható: -d <DistroName>. Mindenképpen használjon kisbetűs -i jelzőt.

A háttérben a hostparancs wsl.exe elindítja a cél példányt, és végrehajtja a Linux parancsot hostname --ip-addresses. Ez a parancs ezután kinyomtatja a WSL-példány IP-címét STDOUT. A STDOUT szöveges tartalmat ezután visszaküldik a wsl.exe-nek. Végül wsl.exe megjeleníti a kimenetet a parancssorban.

A kimenet általában a következő lehet:

172.30.98.229

második forgatókönyv: Egy Linux-disztribúcióban WSL2 -n (példányon) futó program tudni szeretné a Windows-gazdagép IP-címét, hogy egy Linux-program kapcsolódni tudjon egy Windows-gazdagépkiszolgáló-programhoz.

A WSL2 Linux-felhasználó a következő parancsot használhatja:

ip route show | grep -i default | awk '{ print $3}'

A kimenet általában a következő lehet:

172.30.96.1

Ebben a példában tehát a 172.30.96.1 a Windows gazda IP-címe.

Jegyzet

Ezek a fenti IP-címlekérdezési műveletek általában akkor szükségesek, ha a WSL2 az alapértelmezett NAT hálózati módúfut. Ha a WSL2 az új tükrözött módúfut, a Windows-gazdagép és a WSL2 virtuális gép localhost (127.0.0.1) használatával tud csatlakozni egymáshoz célcímként, így a lekérdezési társ IP-címének használata nem szükséges.

Alapértelmezett hálózati mód: NAT

A WSL alapértelmezés szerint NAT(Hálózati címfordítás) alapú architektúrát használ a hálózatkezeléshez. A NAT-alapú hálózati architektúra használatakor tartsa szem előtt az alábbi szempontokat:

Linuxos hálózati alkalmazások elérése a Windowsból (localhost)

Ha hálózati alkalmazást (például NodeJS-en vagy SQL Serveren futó alkalmazást) hoz létre a Linux-disztribúcióban, elérheti azt egy Windows alkalmazásból (például az Edge vagy a Chrome böngészőből) localhost (ahogy szokott).

Windows hálózati alkalmazások elérése Linuxról (gazdagép IP-címe)

Ha Windows rendszeren futó hálózati alkalmazást (például NodeJS-en vagy SQL Serveren futó alkalmazást) szeretne elérni a Linux-disztribúcióból (pl. Ubuntu), akkor a gazdagép IP-címét kell használnia. Bár ez nem gyakori forgatókönyv, az alábbi lépéseket követve teheti működőképessé.

  1. Szerezze be a gazdagép IP-címét a parancs Linux-disztribúcióból történő futtatásával:

    ip route show | grep -i default | awk '{ print $3}'
    
  2. Csatlakozzon bármelyik Windows-kiszolgálóhoz a másolt IP-címmel.

Az alábbi képen egy példa látható erre egy windowsos Node.js-kiszolgálóhoz való csatlakozással, curl használatával.

Csatlakozás a NodeJS-kiszolgálóhoz Windows rendszeren Curl-

Csatlakozás távoli IP-címeken keresztül

Ha távoli IP-címeket használ az alkalmazásokhoz való csatlakozáshoz, a rendszer a helyi hálózat (LAN) kapcsolataként kezeli őket. Ez azt jelenti, hogy gondoskodnia kell arról, hogy az alkalmazás fogadjon lan-kapcsolatokat.

Például előfordulhat, hogy az alkalmazást 0.0.0.0helyett 127.0.0.1-hoz kell kötnie. A Flaskot használó Python-alkalmazás példájában ez a következő paranccsal végezhető el: app.run(host='0.0.0.0'). A módosítások végrehajtásakor tartsa szem előtt a biztonságot, mivel ez lehetővé teszi a lan-ról érkező kapcsolatokat.

WSL 2-disztribúció elérése a helyi hálózatról (LAN)

Ha WSL 1-disztribúciót használ, ha a számítógépét úgy állította be, hogy a LAN-on keresztül férhessen hozzá, akkor a WSL-ben futó alkalmazások a helyi hálózaton is elérhetők lehetnek.

Ez nem az alapértelmezett eset a WSL 2-ben. A WSL 2 rendelkezik egy virtualizált Ethernet-adapterrel, saját egyedi IP-címmel. A munkafolyamat engedélyezéséhez jelenleg ugyanazokat a lépéseket kell elvégeznie, mint egy normál virtuális gép esetében. (A felhasználói élmény javításának módjait vizsgáljuk.)

Íme egy példa a Netsh interfész portproxy Windows-parancs használatára egy portproxy hozzáadásához, amely figyeli a gazdagépportot, és csatlakoztatja a portproxyt a WSL 2 virtuális gép IP-címéhez.

netsh interface portproxy add v4tov4 listenport=<yourPortToForward> listenaddress=0.0.0.0 connectport=<yourPortToConnectToInWSL> connectaddress=(wsl hostname -I)

Ebben a példában frissítenie kell a <yourPortToForward> értéket egy portszámra, például listenport=4000-re. listenaddress=0.0.0.0 azt jelenti, hogy a bejövő kérések bármely IP-címről fogadhatók el. A Figyelés cím azt az IPv4-címet adja meg, amelynek a figyelésére szükség van, és olyan értékekre módosítható, amelyek tartalmazzák az IP-címet, a számítógép NetBIOS-nevét vagy a számítógép DNS-nevét. Ha nincs megadva cím, az alapértelmezett a helyi számítógép. Frissítenie kell a <yourPortToConnectToInWSL> értéket egy portszámra, amelyhez a WSL-t csatlakoztatni szeretné, például connectport=4000. Végül a connectaddress értéknek a Linux-disztribúció WSL 2-en (WSL 2 virtuálisgép-címen) keresztül telepített IP-címének kell lennie, amely a következő parancs beírásával található: wsl.exe hostname -I.

Így ez a parancs a következőképpen nézhet ki:

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100

Az IP-cím beszerzéséhez használja a következőt:

  • wsl hostname -I a WSL 2-n keresztül telepített Linux-disztribúció IP-címéhez (a WSL 2 virtuális gép címéhez)
  • cat /etc/resolv.conf a Windows-gép IP-címének megállapításához, ahogyan a WSL 2-ből (a WSL 2 virtuális gépből) látható

A listenaddress=0.0.0.0 minden IPv4-porton hallgat, .

Jegyzet

Ha kis i betűt használ a hostname parancsban, az más eredményhez vezet, mint a nagy I betű használata. wsl hostname -i a helyi gépe (a 127.0.1.1 helyőrző diagnosztikai cím), míg wsl hostname -I a helyi gép IP-címét adja vissza a többi gépnek megfelelően, és a WSL 2-en keresztül futó Linux-disztribúció connectaddress azonosítására kell használni.

IPv6-hozzáférés

  • wsl hostname -i a WSL 2-n keresztül telepített Linux-disztribúció IP-címéhez (a WSL 2 virtuális gép címéhez)
  • ip route show | grep -i default | awk '{ print $3}' a Windows-gép IP-címének megállapításához, ahogyan a WSL 2-ből (a WSL 2 virtuális gépből) látható

A listenaddress=0.0.0.0 minden IPv4-porton hallgat, .

Tükrözött módú hálózatkezelés

Windows 11 22H2 vagy újabb rendszerű gépeken a tükrözött módú hálózatkezelés engedélyezéséhez networkingMode=mirrorednetworkingMode=mirrored.wslconfig állíthatja be a . Ennek engedélyezése a WSL-t egy teljesen új hálózati architektúrára módosítja, amelynek célja, hogy tükrözze a Windowson futó hálózati adaptereket a Linuxba, új hálózati funkciókat adjon hozzá, és javítsa a kompatibilitást.

A mód engedélyezésének jelenlegi előnyei a következők:

  • IPv6-támogatás
  • Csatlakozzon Windows-kiszolgálókhoz Linuxon belülről a localhost-cím 127.0.0.1használatával. Az IPv6 localhost-cím ::1 nem támogatott
  • Továbbfejlesztett hálózati kompatibilitás VPN-ekhez
  • Csoportos küldés támogatása
  • Csatlakozás a WSL-hez közvetlenül a helyi hálózatról (LAN)

Jegyzet

Futtassa a következő parancsot a PowerShell-ablakban rendszergazdai jogosultságokkal a bejövő kapcsolatok engedélyezéséhez Hyper-V tűzfalbeállítások konfigurálásához :

Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow

vagy

New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80

Ez az új mód a NAT-alapú (Hálózati címfordítás) architektúrával kapcsolatos hálózati problémákat kezeli. A GitHub WSL-termék-adattárában azonosított hibákkal kapcsolatos ismert problémák vagy fájlvisszajelzések keresése.

DNS-bújtatás

A Windows 11 22H2-es vagy újabb rendszert futtató gépeken a dnsTunneling szolgáltatás alapértelmezés szerint be van kapcsolva (amely a [wsl2] fájlban található.wslconfig), és egy virtualizálási funkcióval válaszol a WSL-n belüli DNS-kérelmekre ahelyett, hogy hálózati csomagon keresztül kéri őket. Ennek a funkciónak a célja a VPN-ekkel és más összetett hálózatkezelési beállításokkal való kompatibilitás javítása.

Automatikus proxy

Windows 11 22H2 vagy újabb rendszerű gépeken a autoProxy=true fájl [wsl2] alatti .wslconfig beállítása kényszeríti a WSL-t a Windows HTTP-proxyadatainak használatára. Ha már beállított egy proxyt a Windowsban, a szolgáltatás engedélyezésével a proxy automatikusan be lesz állítva a WSL-ben is.

WSL és tűzfal

A Windows 11 22H2 és újabb rendszerű, WSL 2.0.9-es és újabb rendszerű gépeken a Hyper-V tűzfalfunkció alapértelmezés szerint be lesz kapcsolva. Ez biztosítja, hogy:

  • A WSL-re automatikusan alkalmazandó Windows biztonsági funkciókról további információt a Windows Defender tűzfal Speciális biztonsági szolgáltatásaival foglalkozó részben talál ().
  • Tekintse meg Hyper-V tűzfal konfigurálása című témakört, amelyből megtudhatja, hogyan alkalmazhatja ezeket a szabályokat és beállításokat helyileg és online eszközökkel, például az Intune-ban.