はじめに
WSL2上でNext.jsアプリを開発していると、実機(スマートフォン)で動作確認をしたい場面があります。
本記事では、Windowsのポートフォワーディングとファイアーウォール設定を行い、同一ネットワーク上のスマホからWSL2のNext.jsアプリにアクセスする手順を解説します。
使用環境
- ホストPC: Windows 11
- Linuxディストリビューション: Ubuntu(WSL2)
- フレームワーク: Next.js
Next.jsアプリの作成と起動
任意のディレクトリで以下のコマンドを実行し、Next.jsアプリを作成します。
今回はテンプレートを使用して、最小限の構成でアプリを作成します。
npx create-next-app@latest my-app --yes
cd my-app通常の起動コマンドでは、アプリはローカルホスト(localhost)のみでリッスンするため、外部からのアクセスを受け付けません。
npm run dev
# → http://localhost:3000 のみでアクセス可能スマホなどの外部デバイスからアクセスするには、--hostname 0.0.0.0 オプションを付けて起動します。
npm run dev -- --hostname 0.0.0.0このオプションにより、Next.jsはすべてのネットワークインターフェースからの接続を受け付けるようになります。
注意:外部アクセスを許可するため、安全なネットワーク環境でのみこの設定を使用してください。
Windows側の設定
WSL2はWindowsの仮想ネットワーク内で動作しているため、外部デバイスからWSL2へ直接アクセスすることができません。
Windowsのポートフォワーディングを設定して、ホストPCのポートをWSL2のポートへ転送する必要があります。
詳細な手順は「Windows上のWSL2に別のPCからSSH接続する方法」でも解説していますが、ここでも要点をまとめます。
WSL2のIPアドレスを確認
WSL2のターミナルで以下のコマンドを実行し、IPアドレスを確認します。
ip a show dev eth0出力例:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
inet 172.17.104.210/20 brd 172.17.111.255 scope global eth0この例では 172.17.104.210 がWSL2のIPアドレスです。
ポートプロキシ設定
PowerShellを管理者権限で起動し、以下のコマンドを実行します。
Next.jsのデフォルトポートは 3000 です。
netsh interface portproxy add v4tov4 listenaddress=* listenport=3000 connectaddress=172.17.104.210 connectport=3000設定が正しく適用されたか確認します。
netsh interface portproxy show v4tov4ファイアーウォールの設定
外部からのアクセスを許可するために、Windowsファイアーウォールで受信ルールを追加します。
- Windows検索窓で「ファイアーウォール」と検索し、「Windowsディフェンダーファイアーウォール」を開きます
- 左側の「詳細設定」をクリックします
- 「受信の規則」を選択します
- 右側の「新しい規則」をクリックします
- 規則の種類で「ポート」を選択して「次へ」をクリックします
- 「特定のローカルポート」を選択し、ポートフィールドに
3000を入力して「次へ」をクリックします - 「接続を許可する」を選択して「次へ」をクリックします
- 規則を適用するネットワークの種類を選択します(プライベートネットワークのみ推奨)
- 規則に分かりやすい名前(例:
WSL2 Next.js)を付けて完了します
ホストPCのIPアドレスを確認
PowerShellで以下のコマンドを実行し、ホストPC(Windows)のIPアドレスを確認します。
ipconfig出力結果から、Wi-Fiアダプターの IPv4 アドレス を確認します(例: 192.168.1.10)。
アクセス確認
スマホをホストPCと同じWi-Fiネットワークに接続した状態で、ブラウザから以下のURLにアクセスします。
http://192.168.1.10:3000
192.168.1.10 の部分を、前の手順で確認したホストPCのIPアドレスに置き換えてください。
Next.jsのウェルカムページが表示されれば、設定は成功です。
まとめ
WSL2上のNext.jsアプリにスマホからアクセスするには、以下の3つの設定が必要です。
- Next.jsを
--hostname 0.0.0.0オプションで起動する - WindowsのポートプロキシでホストのポートをWSL2へ転送する
- Windowsファイアーウォールで対象ポートへの受信を許可する
これらの設定を行うことで、開発中のアプリをスマホで手軽に確認できるようになります。


コメント