Skip to content

Instantly share code, notes, and snippets.

@arsu-leo
Forked from axonxorz/WSL2 Port Forwarding
Last active December 11, 2024 09:01
Show Gist options
  • Save arsu-leo/6b76c03973bac4ac1d5a86cfec2cfe22 to your computer and use it in GitHub Desktop.
Save arsu-leo/6b76c03973bac4ac1d5a86cfec2cfe22 to your computer and use it in GitHub Desktop.
# NEEDS TO BE RUN AS ADMIN
# If ran as a powershell script, you will need to run this first:
# Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
# [CONFIGURATION]
# Ensure WSL2 container is started and SSH is running
wsl sudo /etc/init.d/ssh start
# Ports to be forwarded
$ports = @(22);
#Example
#$ports = @(22) + @(6543,6544) + @(6800..6810);
# Change $addr to restrict connections to a particular interface IP
$listen_addr = '0.0.0.0';
# [RUNTIME]
$wsl_addr = (wsl hostname -I).trim()
if(!$wsl_addr){
echo "Cannot determine IP of WSL2 instance";
exit;
}
Write-Host "WSL IP: $wsl_addr"
$rule_name = "WSL2 Forwarding"
# Remove old firewall rules
Write-Host "Removing old firewall rules"
Remove-NetFireWallRule -DisplayName $rule_name
# Add new firewall rules
Write-Host "Add firewall rules"
New-NetFireWallRule -DisplayName $rule_name -Direction Outbound -LocalPort $ports_all -Action Allow -Protocol TCP
New-NetFireWallRule -DisplayName $rule_name -Direction Inbound -LocalPort $ports_all -Action Allow -Protocol TCP
for( $i = 0; $i -lt $ports.length; $i++ ){
$port = $ports[$i];
Write-Host "Update portproxy for $port"
Write-Host "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$listen_addr"
netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$listen_addr
Write-Host "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$listen_addr connectport=$port connectaddress=$wsl_addr"
netsh interface portproxy add v4tov4 listenport=$port listenaddress=$listen_addr connectport=$port connectaddress=$wsl_addr
}
@arsu-leo
Copy link
Author

Removed default ports, added some verbose info about the running commands

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