저는 WSL2를 통해 Ubuntu 20.04(Linux 버전 5.10.16.3-microsoft-standard-WSL2)를 실행하고 있습니다. 저는 WSL 설치에서 React-js 애플리케이션을 실행하고 있으며, WSL 상자에 할당된 IP에 액세스하여 웹 브라우저를 통해 Windows에서 웹 페이지를 볼 수 있습니다. (참고: localhost에 액세스하면 Windows에서 웹 페이지를 볼 수 없습니다.). 그러나 로컬 네트워크의 다른 장치에서 웹 페이지에 액세스하려고 하면 웹 페이지가 로드되지 않습니다.
네트워크의 다른 장치에서 내 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
두 가지 다른 일이 당신에게 일어날 수 있습니다.
먼저, 네트워크의 다른 장치에서 전달하는 몇 가지 더 쉬운 방법이 있다는 점을 언급하고 싶습니다. 내가 그들을 덮는다이 답변에 자세히 나와 있습니다., 하지만:
WSL1은 아마도 React 앱을 정상적으로 실행하고 Windows와 네트워크를 공유하므로 이러한 유형의 전달 문제가 발생하지 않습니다.
WSL1을 사용할 수 없을 때 SSH를 사용하여 Windows에서 WSL2 인스턴스로 역방향 전달을 설정하는 것이 제가 선호하는 방법입니다. 그러나 이것이 작동하려면 여전히 localhost 전달 문제를 해결해야 합니다.
귀하의 질문에 관해서는 다음과 같습니다.
Windows 호스트 자체를 통해 사이트에 접근할 수 없기 때문에 localhost 전달이 작동하지 않는다는 점을 고려하면 localhost
, 오래된 "최대 절전 모드 중 localhost 전달이 중단됨" 버그일 수도 있습니다. WSL을 종료하고 다음을 시도합니다(PowerShell에서).
wsl --shutdown
그런 다음 WSL을 다시 시작하고 Windows 호스트 브라우저에서 다시 시도하세요. 작동하는 경우 다음과 같은 이유로 작동이 중지될 수 있습니다.
- 시스템이 절전 모드 상태입니다.
- 또는 Windows에서 "빠른 시작" 옵션을 설정합니다(기본값). Quickstart에서는 최대 절전 모드도 사용합니다. Windows의 전원 관리 설정에서 끌 수 있습니다.
WSL IP 주소로 전달한다는 점을 고려하면(그래서아니요localhost를 사용하여) 그러나 나는 생각하고 있었습니다저것이 중 일부는 방화벽 규칙 때문일 수 있습니다. 해당 포트의 모든 트래픽을 허용하려면 적절한 방화벽 규칙을 추가해야 합니다.