WSL上のLinuxサーバーに外部からアクセスする方法

WSL上のLinuxサーバーに外部からアクセスする方法

WSLのLinuxでWebサーバーなどのサーバー機能を稼働させる場合、ホストマシン以外の外部のマシンからネットワーク経由でアクセスしたいときがあります。

そこでここでは、WSL上のLinuxマシンにホストマシン以外の外部からアクセスできるように、ポートフォワードを設定する方法を紹介します。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit22H2
Windows Subsystem for Linux2.1.5.0

ポートフォワードの設定手順

設定内容は、外部のマシンからホストマシンの指定ポートへのアクセスを、WSL上のLinuxサーバーにポートフォワードします。

設定手順は、次のとおりです。

まず、ホストマシンのIPアドレスとWSLのLinuxサーバーのIPアドレスを確認しておきます。

IPアドレスの確認が済んだら、ホストマシン上で管理者としてコマンドプロンプトを起動し、ポートフォワードを設定します。

たとえば、ホストマシン(192.168.10.229)の8080番ポートへのアクセスを、WSL上のLinuxサーバー(172.19.32.216)の80番ポートへフォワーディングさせるときは、以下のようにコマンドを実行します。

> netsh interface portproxy add v4tov4 listenaddress=192.168.10.229 listenport=8080 connectaddress=172.19.32.216 connectport=80

次に、以下のコマンドで正しく設定されたことを確認します。

> netsh interface portproxy show v4tov4

WSL上のLinuxサーバーに外部からアクセスする方法

次に、以下のコマンドを実行して、ホストマシンの「Microsoft Defender ファイヤーウォール」に受信の規則を追加して、外部からホストマシンの8080番ポートへのアクセスを許可します。

> netsh advfirewall firewall add rule name="wsl-portforward" dir=in protocol=tcp localport=8080 profile=private action=allow

WSL上のLinuxサーバーに外部からアクセスする方法

以上で、設定完了です。

最後に、外部のマシンから解放したポートにアクセスして、WSL上のLinuxマシンに接続できればOKです。

WSL上のLinuxマシンでWebサーバーが稼働している場合は「http://<ホストマシンのIPアドレス>:8080」にアクセスしてWebページが表示できればOKです。

WSL上のLinuxサーバーに外部からアクセスする方法

ポートフォワード設定を解除するときは

上記で設定したポートフォワード設定やファイアウォール設定を削除するときは、管理者としてコマンドプロンプトを起動して、以下のコマンドを実行します。

> netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=192.168.10.229
> netsh advfirewall firewall delete rule name="wsl-portforward"

あとがき

最近では、Windows上でLinuxサーバーを構築する際、仮想マシンよりもWSLを活用する機会が増えてきていると感じており、WSL上のLinuxサーバーに外部からアクセスしたいケースもあるのではないでしょうか。そのようなときにお役立てください。