Access WSL from computers on same LAN

Access WSL from computers on same LAN

script za sve to: https://github.com/microsoft/WSL/issues/4150#issuecomment-504209723

find out WSL2 IP:

wsl hostname -I

port forwarding:

netsh interface portproxy show all

netsh interface portproxy delete v4tov4 8000 0.0.0.0

netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=WSL2_IP netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=172.26.37.85

disable firewall

Set-NetFirewallProfile -Profile Domain, Public, Private -Enabled False

start hugo

hugo server –bind 0.0.0.0 -D -p 8000 –navigateToChanged

hugo server -D -p 8000 –navigateToChanged

hugo server -p 8000 –navigateToChanged -b “http://<MY_LAN_IP>:8000/”

Ustvari, najbolje koristiti script

https://gist.github.com/xmeng1/aae4b223e9ccc089911ee764928f5486

*** WOOW

In Windows, forward your port from the public IP port to the WSL port using netsh interface portproxy add v4tov4 listenport=$PORT listenaddress=0.0.0.0 connectport=$PORT connectaddress=127.0.0.1 in a Powershell with admin rights. This is one of the hard-to-find but necessary WSL specific bits. It look like Windows creates a virtual adapter that isn’t properly bridged with your internet network adapter. I tried playing various bridging tricks, but in the end, I had to manually create a portproxy rule using Windows’ network shell netsh. This listens on all addresses and forwards the connection to the localhost, which seems to be automatically bridged with WSL. You can also try to manually forward it to the WSL adapter. Use ipconfig to find it. However, the WSL IP changes from time to time, so I recommend using local host instead. It might also be wise to listen explicitly on your internet facing IP instead of 0.0.0.0, but this seemed to work. https://www.williamjbowman.com/blog/2020/04/25/running-a-public-server-from-wsl-2/

netsh interface portproxy add v4tov4 listenport=$PORT listenaddress=0.0.0.0 connectport=$PORT connectaddress=127.0.0.1

netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=127.0.0.1

Ili koristi https://github.com/wangyu-/tinyPortMapper Has Windows binary: https://github.com/wangyu-/tinyPortMapper/releases

Ima i ovo rešenje: https://github.com/microsoft/WSL/issues/4150#issuecomment-788553101 Go program koji radi ono isto odozgo: https://github.com/yingshaoxo/fuckwsl2

Ali mislim da je UBEDLJIVO najbolje rešenje: https://github.com/CzBiX/WSLHostPatcher

sudo mkdir -p /etc/profile.d

cat << EOF | sudo tee /etc/profile.d/wsl-host-patch.sh

# https://github.com/CzBiX/WSLHostPatcher
#
# Adjust accordingly based on `root` setting inside `/etc/wsl.conf`
# https://docs.microsoft.com/en-us/windows/wsl/wsl-config#configure-per-distro-launch-settings-with-wslconf
#
/c/bin/wsl-host-patch/WSLHostPatcher.exe

EOF

Disable firewall completely or better yet, allow just specific ports

disable firewall

Set-NetFirewallProfile -All -Enabled False

allow just list of ports

New-NetFirewallRule -DisplayName ‘_Allow_Inbound_Ports’ -Profile @(‘Private’) -Direction Inbound -Action Allow -Protocol TCP -LocalPort @(‘8000’, ‘8001’)

date 20. Feb 2021 | modified 17. Jan 2023
filename: Windows » Access WSL from computers on same LAN