WSL ポートフォワーディングと自動化
はじめに
WSLのサーバ等に外部からアクセスさせたいとき, Windowsのポートフォワーディングを設定する必要があります. WSLのインスタンスのIPアドレスは固定できないので, インスタンスを立ち上げたあと, 都度調べて設定する必要があります.
ポートフォワーディング
次のようなシェルスクリプトをWSL側に保存しておきます. ipコマンドからアドレスを切り出して, Windowsのnetsh.exeを呼び出してポートフォワーディングの設定をしています.
#!/bin/bash
IP=$(ip address show eth0 | awk '/inet / {print $2}' | awk -F / '{print $1}')
echo "own ip is " $IP
netsh.exe interface portproxy delete v4tov4 listenport=9090
netsh.exe interface portproxy add v4tov4 listenport=9090 connectaddress=$IP
echo "portforward done"
Windows側からは次のように呼び出せば設定できます. 適当にスタートアップに設定するなどします.
$ wsl -d debian -u root --exec /bin/bash /home/user/portforward.sh