Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
WSL2 Port forwarding port to linux
$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
if( $found ){
$remoteport = $matches[0];
} else{
echo "The Script Exited, the ip address of WSL 2 cannot be found";
exit;
}
#[Ports]
#All the ports you want to forward separated by coma
$ports=@(80,443,10000,3000,5000);
#[Static ip]
#You can change the addr to your ip config to listen to a specific address
$addr='0.0.0.0';
$ports_a = $ports -join ",";
#Remove Firewall Exception Rules
iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' ";
#adding Exception Rules for inbound and outbound Rules
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP";
for( $i = 0; $i -lt $ports.length; $i++ ){
$port = $ports[$i];
iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr";
iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport";
}
@nathanredblur

This comment has been minimized.

Copy link

@nathanredblur nathanredblur commented May 6, 2020

Nice, thank you!

@YankeeTube

This comment has been minimized.

Copy link

@YankeeTube YankeeTube commented Jun 15, 2020

good! it works! tk!

@xmeng1

This comment has been minimized.

Copy link
Owner Author

@xmeng1 xmeng1 commented Jun 15, 2020

btw, this script comes from original comment:
microsoft/WSL#4150 (comment)

@Immick

This comment has been minimized.

Copy link

@Immick Immick commented Jul 14, 2020

Well, the script actually doesn't work: after executing the above script (exactly as it was posted) I don't see any additional rules at Windows firewall and port forwarding doesn't work. Also I've tried to completely turn off Windows firewall - still no effect.
Any help please?

@mikedixson

This comment has been minimized.

Copy link

@mikedixson mikedixson commented Aug 8, 2020

Note the above only works with IPv4. I needed my host to be exposed on it's ipv6 address so I have to run the following
netsh interface portproxy add v6tov4 listenport=4433 listenaddress=2001:0db8:85a3:0000:0000:8a2e:0370:7334 connectaddress=172.31.110.132 connectport=4433

@luizwhite

This comment has been minimized.

Copy link

@luizwhite luizwhite commented Oct 17, 2020

I saw this script everywhere, but cant solve my problem unfortunately..

I have the same issue that @jmpp
https://stackoverflow.com/questions/61002681/connecting-to-wsl2-server-via-local-network#comment113484398_63781351

but my phone is Android
I just cant connect from my device, only the WSL2 host, as localhost or the WSL2 eth0 address

help please!

@lioaslan

This comment has been minimized.

Copy link

@lioaslan lioaslan commented Dec 25, 2020

@luizwhite you're not alone :)))

@jayagami

This comment has been minimized.

Copy link

@jayagami jayagami commented Jan 9, 2021

you can obtain ip with:

wsl hostname -I
@slaughtering

This comment has been minimized.

Copy link

@slaughtering slaughtering commented Feb 15, 2021

$remoteport to $wsl2_ip maybe better naming?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment