Created
August 10, 2024 13:38
-
-
Save dillera/6086ed50b7874822a768a0d62dcc0d25 to your computer and use it in GitHub Desktop.
wsl2 Firewall Open Example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Start SSH Service. | |
wsl sudo service ssh start | |
# WSL2 network port forwarding script v1 | |
# for enable script, 'Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser' in Powershell, | |
# for delete exist rules and ports use 'delete' as parameter, for show ports use 'list' as parameter. | |
# written by Daehyuk Ahn, Aug-1-2020 | |
# Display all portproxy information | |
If ($Args[0] -eq "list") { | |
netsh interface portproxy show v4tov4; | |
exit; | |
} | |
# If elevation needed, start new process | |
If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) | |
{ | |
# Relaunch as an elevated process: | |
Start-Process powershell.exe "-File",('"{0}"' -f $MyInvocation.MyCommand.Path),"$Args runas" -Verb RunAs | |
exit | |
} | |
# You should modify '$Ports' for your applications | |
$Ports = (6502,80,443,8080,8000) | |
# Check WSL ip address | |
wsl hostname -I | Set-Variable -Name "WSL" | |
$found = $WSL -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'; | |
if (-not $found) { | |
echo "WSL2 cannot be found. Terminate script."; | |
exit; | |
} | |
# Remove and Create NetFireWallRule | |
Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock'; | |
if ($Args[0] -ne "delete") { | |
New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $Ports -Action Allow -Protocol TCP; | |
New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $Ports -Action Allow -Protocol TCP; | |
} | |
# Add each port into portproxy | |
$Addr = "0.0.0.0" | |
Foreach ($Port in $Ports) { | |
iex "netsh interface portproxy delete v4tov4 listenaddress=$Addr listenport=$Port | Out-Null"; | |
if ($Args[0] -ne "delete") { | |
iex "netsh interface portproxy add v4tov4 listenaddress=$Addr listenport=$Port connectaddress=$WSL connectport=$Port | Out-Null"; | |
} | |
} | |
# Display all portproxy information | |
netsh interface portproxy show v4tov4; | |
# Give user to chance to see above list when relaunched start | |
If ($Args[0] -eq "runas" -Or $Args[1] -eq "runas") { | |
Write-Host -NoNewLine 'Press any key to close! '; | |
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown'); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment