WSL2上で何かサーバーを起動すると、自動でWindows側からはlocalhostからアクセスできるようにポートフォワーディングが設定されます。しかし、設定対象がlocalhostなのでWindowsの外部からアクセスできません。
そこで、ネット上はいくつかの方法が紹介されています。
- Linux(WSL2)上のポートに手動でポートフォワーディングを設定
- ポートを定期的に監視し自動でWindows側でポートフォワーディングを設定するツールを使用する
- Linux(WSL2)をWindowsが繋がっているLANに直接接続(ブリッジ)する
これらの方法は手間がかかったり、デメリットがあったりと一長一短です。
そこで、今回紹介する方法はWSLHostPatcherというツールです。
WSL2のlocalhost宛の通信を自動でポートフォワーディングするデフォルトの機能は、Windows上で動いているwslhost.exeプロセスで実現されています。本ツールはこのプロセスの動作をいじって(フックして)、localhost以外のIP宛の通信も自動でポートフォワーディングします。
使い方はすごく簡単です。https://github.com/CzBiX/WSLHostPatcher/releasesからWSLHostPatcher.zipをダウンロードし、中に入っているWSLHostPatcher.exeを実行するだけです。
実行後、WSL2上で起動したサーバは自動でポートフォワーディング設定され、Windows外部からもアクセスできるようになります。なお初めて使う場合は、Windows側でアラートが出るので許可する必要があります。
※ 実行前から起動しているサーバは自動で設定されません。サーバを再起動してください。
なお、このツールはWSL2を停止すると機能が無効になります。そのため、WSL2を再起動したりする場合は再度実行してあげてください。
また、もちろんですがWindows外からアクセスされるようになるため、セキュリティにはご注意ください。