私はWSL2を介してUbuntu 20.04(Linuxバージョン5.10.16.3-microsoft-standard-WSL2)を実行しています。私はWSLインストールでReact-jsアプリケーションを実行しています。WSLボックスに割り当てられているIPにアクセスして、Webブラウザを介してWindowsでWebページを表示できます。 (注:localhostにアクセスすると、WindowsはWebページを表示できません。)。ただし、ローカルネットワークの他のデバイスからWebページにアクセスしようとすると、Webページは読み込まれません。
ネットワークの他のデバイスで自分のWSL IPアドレスをpingしようとすると、100%パケット損失が発生します。
提案されているように、Powershellを介してプロキシルールを追加してみました。マイクロソフトウェブサイト:
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=MY.WSL.IP.ADR
違いはありません。また、私のReactアプリを0.0.0.0にバインドするように指定しようとしましたが、それにも違いはありませんでした。
react-scripts start --host 0.0.0.0
答え1
2つの異なることがあなたに起こることができます。
まず、ネットワークの他のデバイスから配信するための簡単な方法がいくつかあることに言及したいと思います。私はそれらを覆うこの回答に詳しく記載されています。、しかし:
WSL1はおそらくReactアプリを正常に実行し、Windowsとネットワークを共有するため、この種の配信の問題は発生しません。
WSL1が利用できない場合は、SSHを使用してWindowsからWSL2インスタンスにリバース転送を設定することが私の好みの方法です。ただし、これが機能するには、まだlocalhost転送の問題を解決する必要があります。
あなたの質問については、次のとおりです。
Windowsホスト自体を介してサイトにアクセスできないため、localhost配信が機能しないことを考えると、localhost
古い「休止状態の間にlocalhost配信が中断される」というバグかもしれません。 WSLを終了し、次のことを試みます(PowerShellで)。
wsl --shutdown
その後、WSLを再起動してWindowsホストブラウザでもう一度やり直してください。動作している場合、次の理由で動作が停止することがあります。
- システムがスリープ状態です。
- または、Windowsで「クイックスタート」オプションを設定します(デフォルト)。 Quickstartは休止状態も使用します。 Windowsの電源管理設定からオフにできます。
WSL IPアドレスに転送することを考慮すると(それでいいえlocalhostを使って)しかし私は考えていましたそれこれらのいくつかはファイアウォールのルールによるものかもしれません。そのポートのすべてのトラフィックを許可するには、適切なファイアウォールルールを追加する必要があります。