WSL2 の localhost forwarding を代替する PowerShell Script を作った

以前、自分の環境では localhost forwarding で頻繁にハングすることがあるので、netsh interface portproxy add コマンドを使って手動で port forwarding するようにした。

mrk21.hatenablog.com

別に都度このコマンドを叩いてもいいのだが、WSL2 が listen しているポートを自動で port forwarding したいと思い、PowerShell Script の勉強がてら書いてみた。

使い方は、管理者権限で起動したターミナルで、 wsl-forwarding.ps1 を実行する。このスクリプト実行中は、WSL2側で 0.0.0.0 に listen すると、自動的にWindows側に port forwarding する。

f:id:mrk21:20220205143845g:plain

また、Windows側の port forwarding するIPアドレス0.0.0.0 としているので、外部からWSL2にアクセスできる。 WSL2 の localhost forwarding と同様にループバックアドレスからのみWSL2にアクセスできるようにしたい場合は $HostIP$HostIP = [IPAddress]"127.0.0.1" とする。