【NextJS】Access nextjs app launched on WSL2 from an external terminal

1. 概要

前回はPankoにBingoが追加された内容についてでした。今回はスマホからローカル環境にアクセスする内容についてです。

大体の事はDeveloper Toolsで確認できますが、実機でも確認できるように設定する内容です。

Panko | 無料オンラインビンゴを楽しんでください。

2. ネットワーク接続

同一ネットワークに接続

  • NextJSアプリ
  • スマホ等の外部端末

3. IPアドレスの確認(Windows)

Powershellで下記コマンドで確認

ipconfig
Windows IP 構成


Wireless LAN adapter ローカル エリア接続* 1:

   メディアの状態. . . . . . . . . . . .: メディアは接続されていません
   接続固有の DNS サフィックス . . . . .:

Wireless LAN adapter ローカル エリア接続* 2:

   メディアの状態. . . . . . . . . . . .: メディアは接続されていません
   接続固有の DNS サフィックス . . . . .:

Wireless LAN adapter Wi-Fi:

   接続固有の DNS サフィックス . . . . .: to-the-world
   IPv6 アドレス . . . . . . . . . . . .: 1001:abc:defg:hij:1234:5678:9012:3456
   一時 IPv6 アドレス. . . . . . . . . .: 1001:abc:defg:hij:4528:3456:7890:1234
   リンクローカル IPv6 アドレス. . . . .: 3456::1234:5678:1598:3574%18
   IPv4 アドレス . . . . . . . . . . . .: 192.168.1.3
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: 6587::2541:5874:6985:2145%18
                                          192.168.1.1

イーサネット アダプター Bluetooth ネットワーク接続:

   メディアの状態. . . . . . . . . . . .: メディアは接続されていません
   接続固有の DNS サフィックス . . . . .:

イーサネット アダプター vEthernet (WSL (Hyper-V firewall)):

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: 5412::258:9654:147:3654%41
   IPv4 アドレス . . . . . . . . . . . .: 172.11.105.1
   サブネット マスク . . . . . . . . . .: 255.255.231.0
   デフォルト ゲートウェイ . . . . . . .:
  • Wireless LAN adapter Wi-Fi:
    • IPv4 アドレス . . . . . . . . . . . .: 192.168.1.3

4. IPアドレスの確認(WSL2)

WSL2に入って下記コマンドで確認

ifconfig
eth0: flags=1234<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.20.111.110  netmask 255.255.240.0  broadcast 172.20.121.255
        inet6 1234::456:5678:9012:2541  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:e1:a5:7d  txqueuelen 1000  (Ethernet)
        RX packets 3059972  bytes 3446112986 (3.4 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 928202  bytes 163696266 (163.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 15669600  bytes 24295981548 (24.2 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15669600  bytes 24295981548 (24.2 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • eth0
    • inet 172.20.111.110

5. ポートフォワーディングの設定

Powershell(管理者権限)で実行(WSL2でない)

5-1-1. 確認

netsh.exe interface portproxy show v4tov4

5-1-2. 設定

netsh.exe interface portproxy add v4tov4 listenaddress=192.168.1.3 listenport=3000 connectaddress=172.20.111.110 connectport=3000

  • listenaddress
    • 上記3にて確認したIP
  • listenport
    • 3000
  • connectaddress
    • 上記4にて確認したIP
  • connectport
    • 3000

5-1-3. 確認

netsh.exe interface portproxy show v4tov4
ipv4 をリッスンする:         ipv4 に接続する:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
192.168.1.3     3000        172.20.111.110  3000

※PCを再起動した時にはIPが変わってる可能性があるため、その際は再設定が必要

5-1-4. 削除

netsh.exe interface portproxy delete v4tov4 listenport=3000 listenaddress=192.168.1.3

6. Windows Firewallの設定

※既にTCPのポート3000が開いてる(設定されてる)場合は不要

Powershell(管理者権限)で下記コマンドを実行

wf.msc
  • 新しい規則を作成し、3000番ポートからのアクセスを許可するプロパティを追加
    • 受信の規制
      • 新しい規制
        • TCP
        • 特定のローカルポート:3000

7. 外部端末からアクセス

NextJSアプリを起動後、スマホからアクセス

  • http://192.168.1.3:3000

8. 備考

今回はスマホ(外部端末)からローカル環境にアクセスする内容についてでした。

下記のようなやり方もあるよう。

{
  "scripts": {
    "dev": "next dev --hostname 0.0.0.0"
  }
}
npm run dev

Pankoでは、ログイン不要でそれぞれのイベントを作成しURLを共有するだけで日程調整からグループ分け・精算、そしてビンゴができますので是非使ってみてください。

9. 参考

投稿者プロフィール

Sondon
開発好きなシステムエンジニアです。
卓球にハマってます。

関連記事

  1. 【NextJS】ChatApp with Realtime updat…

  2. 【NextJS】OAuth authentication with A…

  3. 【NextJS】Internationalization(i18n) …

  4. 【NextJS】Streaming with Suspense

  5. 【NextJS】Checkbox・Radio・Select

  6. 【NextJS】NextJS・TypeScript・Apollo Cl…

最近の記事

  1. AWS
  2. AWS
  3. AWS

制作実績一覧

  1. Checkeys