Hyper-V の NAT をこねくり回そうとしたけれども、うまくいかなかった。netsh
コマンドを使うことで、簡単にポート変換ができる。
Issue #4150 microsoft/WSL | GitHub
# PowerShell (Administrator)
> netsh interface portproxy add v4tov4 \
listenport=<External Port> \
listenaddress=<External Address> \
connectport=<Internal Port> \
connectaddress=<Internal Address>
WSL 2 に割り当てられた内部 IP を指定する必要がある。WSL 2 内で
# bash (WSL 2)
$ ip a show eth0
を叩くと取得できる。
Netsh interface portproxy コマンド | Microsoft Docs
$port = Read-Host 'Port'
$internal_ip = bash.exe -c "ip a show eth0 | grep -E '^\s*inet ' | xargs echo | cut -d ' ' -f 2 | cut -d '/' -f 1"
netsh interface portproxy delete v4tov4 listenport=$port listenaddress=0.0.0.0
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$port connectaddress=$internal_ip connectport=$port