以前、自分の環境では localhost forwarding で頻繁にハングすることがあるので、netsh interface portproxy add
コマンドを使って手動で port forwarding するようにした。
別に都度このコマンドを叩いてもいいのだが、WSL2 が listen しているポートを自動で port forwarding したいと思い、PowerShell Script の勉強がてら書いてみた。
使い方は、管理者権限で起動したターミナルで、 wsl-forwarding.ps1
を実行する。このスクリプト実行中は、WSL2側で 0.0.0.0
に listen すると、自動的にWindows側に port forwarding する。
また、Windows側の port forwarding するIPアドレスを 0.0.0.0
としているので、外部からWSL2にアクセスできる。 WSL2 の localhost forwarding と同様にループバックアドレスからのみWSL2にアクセスできるようにしたい場合は $HostIP
を $HostIP = [IPAddress]"127.0.0.1"
とする。