はじめに
WSL2上でNuxt3でのWebシステムを開発している際に、テストのため違うパソコンからNuxt3に接続したい。
しかし、Nuxt3が起動しているWSL2はホストWindowsと別のネットワークに属していたため、
外部からホストWindowsに接続しても、WSLまでには接続できない、なので、Nuxt3にも接続できない。
対策として、ホストWindowsでポート番号〇〇の時は、WSL2のこのIPアドレスでポートは〇〇に渡してね~。 って設定をします。
かっこよく言うと、ポートフォワーディングします。
自分のIPアドレスを調べる
powershellで以下のコマンドで確認
ipconfig
「windowsのIPアドレスを調べる方法」で詳しく
今回は「192.168.0.50」として進める。
wsl2(ubuntu)のIPアドレスを調べる
ubuntuのターミナルで以下コマンドを実行
ip addr
「wsl2(ubuntu)のIPアドレスを調べる方法」で詳しく
今回は「172.22.240.61」として進める。
※ちなみにこのwsl2(ubuntu)側IPアドレスはコロコロ変わる模様www
ポートを指定する
今回はNuxt3なので、「3000」とする。
Windowsにポートフォワーディングの設定をする
コマンドは以下
netsh.exe interface portproxy add v4tov4 listenaddress=<ホストOSのipアドレス> listenport=3000 connectaddress=<wslのipアドレス> connectport=3000
今回のコマンドならば、
netsh.exe interface portproxy add v4tov4 listenaddress=192.168.0.50 listenport=3000 connectaddress=172.22.240.61 connectport=3000
になる。
このコマンドを管理者権限で起動したpowrShellで実行す
他のPCからアクセスできるか、確認する
アクセスできなければファイヤーウォールやウイルススキャンソフトを無効化してから、
再度接続できるかチェックする。
無効化して接続できたら、ファイヤーウォールだ。
設定方法は「そのうち書くリスト」に入れておきます。
設定されているか確認する
netsh.exe interface portproxy show v4tov4
削除する
netsh.exe interface portproxy delete v4tov4 listenport=<対象のポート> listenaddress=<windowsのipアドレス>
上記の設定だと、
netsh.exe interface portproxy delete v4tov4 listenport=3000 listenaddress=192.168.0.50
で消せる