WSL2上のサーバーにネットワーク内の他端末からアクセスする
管理者権限で起動したPoweShellで以下コマンド実行すると、当該WSL2上で動いてる当該ポートに対して、他端末からPCのIPと当該ポートを指定してアクセスできるようになる
# 対象ポート (※適宜変更)
$port = 3000
# WSL2のディストリビューション名 (※適宜変更)
$distName = "Ubuntu-20.04"
# Windows Defenderに穴あけ
New-NetFireWallRule -DisplayName "WSL 2 Firewall Unlock" -Direction Inbound -LocalPort $port -Action Allow -Protocol TCP
# WSL2の現在のIPに対するポートフォワーディング設定
netsh interface portproxy add v4tov4 listenport=$port listenaddress=* connectport=$port connectaddress=(wsl -d $distName -e hostname -I).trim()ただしWSL2は起動するたびにIPが変わるので、穴をあけたくなったら毎回これをやる必要があるのと、毎回やってるとWindows Defenderの穴あけルールがそのたびに増えていくのは留意
あけた穴の戻し方などは続きに記載
Get-NetFirewallRule | FT DisplayName,Name,EnabledRemove-NetFirewallRule -DisplayName "WSL 2 Firewall Unlock"netsh interface portproxy show v4tov4netsh interface portproxy delete v4tov4 listenport=$port listenaddress=*それと、もしアクセスしたいサーバーが webpack や vite のものなら、それらの設定ファイルとかで host に 0.0.0.0 を指定しておくこと。デフォルトではlocalhostでしかアクセスできないようになってると思う。
参考にさせていただいた記事
WSL2のサービスにスマホや他のPCからアクセスできるようにするには | 日記というほどでも
Windows WSL2に外部から直接アクセスするための設定
キリウ君が読まないノート