WSL2-es gépben futó konténerek elérése LAN hálózaton mobiltelefonról

villanykörtében villámlás a pixabay.com-ról PIRO4D felhasználótól

A hosszú tartalmak után végre lehet szusszanni egyet a következő villámtippel. Ha Windows 10-ben szeretnél Linuxos Docker konténert futtatni, akkor a Windows Subsystem For Linux is egy jó megoldás lehet, de az ilyen gépekben kiengedett portokat nem lehet elérni a LAN hálózaton. Vagy mégis? A cikkből és a mellékelt videóból kkiderül.

Ha a WSL 2-es gépben Dockerrel elindítasz egy konténert, aminek például a 80-as portját minden IP-n kiengeded, a Windows hoszt rendszerhez tartozó LAN IP címen akkor sem fogod elérni. A 127.0.0.1-es lokális IP címre megtörténik automatikusan a portátirányítás a WSL gép felé, de ha a LAN hálózaton a netsh-val adminként PowerShellből vagy parancssorból át lehet irányítani bármelyik portot. Először nézzük meg, milyen átirányítások vannak már:

netsh interface portproxy show all

Ha szabad még a port, akkor mehet az átirányítás. A lenti parancsban ne felejtsd el az alábbi helyörzőket a saját paraméterekkel kitölteni.

  • <LAN_IP>: A Windows hoszt LAN-on elérhető IP címe.
  • <LAN_PORT>: A Windows hoszt LAN IP-jén átirányítandó port szám
  • <WSL_IP>: A WSL gép IP címe vagy 127.0.0.1
  • <WSL_PORT>: A WSL gépben futó szolgáltatás portja.
netsh interface portproxy add v4tov4 listenaddress=<LAN_IP> listenport=<LAN_PORT> connectaddress=<WSL_IP> connectport=<WSL_PORT>

Persze, mivel a 127.0.0.1-es IP-ről amúgy is automatikusan történik a portátirányítás a WSL gép felé, ha nem akarod minden Windows újraindítás után újrakonfigurálni az átirányítást, erre a loopback IP címre is irányíthatod a LAN-ról érkező kéréseket, ami majd tovább lesz irányítva a WSL gép felé. Feltéve, hogy a LAN IP 192.168.1.58 és egy, a 80-as porton futó proxy konténert kell tudni elérni akár mobilteleonfról a LAN hálózaton, így néz ki a parancs:

netsh interface portproxy add v4tov4 listenaddress=192.168.1.58 listenport=80 connectaddress=127.0.0.1 connectport=80

Ha törölni szeretnéd az átirányítást, akkor a hozzáadásnál használt parancsshoz hasonlót kell futtatni a "connectaddress" és a "connectport" paraméterek nélkül, valamint az "add" helyett "del"-t kell írni a parancsban.

netsh interface portproxy del v4tov4 listenaddress=192.168.1.58 listenport=80
Kategóriák: 
Megosztás/Mentés