현재 저는 개발을 위해 Ubuntu 20.04와 함께 Windows10 및 WSL2를 사용하고 있습니다. 대부분의 경우 이는 한 가지 문제를 제외하면 훌륭하게 작동합니다. Windows/WSL2 사이의 네트워킹 계층에 문제가 있는 것 같습니다. 'ng Serve'를 사용하여 각도를 제공할 때 Windows에서 액세스할 수 없습니다.
VS Code에서 터미널을 사용하고 터미널 출력의 링크에서 브라우저를 열 때만 Windows에서 브라우저를 엽니다. 그러나 'localhost:4200'은 열리지 않고 127.0.0.1:'random port'를 엽니다. 우리 프록시에서는 허용되지 않습니다. 이는 각도 애플리케이션이 표시되지만 사용할 수 없음을 의미합니다. 이 작업을 수행하면 localhost:4201에서 애플리케이션을 사용할 수 있지만 VS Code에서 열기 전에는 사용할 수 없습니다. 즉, 다른 터미널(예: 새로운 Windows 터미널 또는 ConEmu)을 사용하여 응용 프로그램을 시작할 수 없습니다.
내가 알 수 있는 한 이것은 Linux 설치 자체의 문제라기보다는 Windows 문제이지만 Linux 설치에서 모든 데이터를 잃지 않고 WSL2의 Windows 부분을 '다시 설치'하는 방법을 찾지 못했습니다. 어떤 조언이라도 감사하겠습니다.
답변1
내 대답은 기사를 기반으로합니다. WSL 2에서 공개 서버 실행, 여기서 이론은 Windows가 인터넷 네트워크 어댑터와 제대로 연결되지 않은 가상 어댑터를 생성한다는 것입니다.
이 기사에서는 다음과 같은 점을 제기합니다.
WSL에서 서버가 IPv4를 사용하고 있는지 확인하세요.
WSL에서 방화벽을 사용하는 경우 해당 포트(3390)를 허용합니다.
Windows에서는 관리자 권한으로 명령 프롬프트 또는 Powershell의 공용 IP 포트에서 WSL 포트로 포트를 전달합니다.
netsh interface portproxy add v4tov4 listenport=$PORT listenaddress=0.0.0.0 connectport=$PORT connectaddress=127.0.0.1
Windows에서는 새 인바운드 규칙을 사용하여 Windows 방화벽을 통한 포트를 허용합니다.
인터넷에서 접속하려면 공유기의 포트에 포트 포워딩을 설정하세요.
약간의 차이점이 있는 프로세스를 설명하는 YouTube 동영상은 다음과 같습니다. WSL 2 네트워킹.
답변2
이것이 작동하려면 세 가지가 필요했습니다.
- 최신 버전의 Windows로 업그레이드하세요.
wsl --shutdown
- 설정 > 네트워크 및 인터넷 > 다음으로 네트워크 재설정여기에 설명되어 있습니다
답변3
나도 이것에 부딪쳤다. 이것이 내 해결책입니다.WSL2-PortForward.cmd
이는 포트 프록시 및 방화벽 규칙을 관리하고 자체적으로 정리합니다.
@ECHO OFF
SET LXDISTRO=MyWSL2vm & SET WSL2PORT=3399 & SET HOSTPORT=3398
NETSH INTERFACE PORTPROXY RESET & NETSH AdvFirewall Firewall delete rule name="%LXDISTRO% Port Forward" > NUL
WSL -d %LXDISTRO% -- ip addr show eth0 ^| grep -oP '(?^<=inet\s)\d+(\.\d+){3}' > IP.TMP
SET /p IP=<IP.TMP
NETSH INTERFACE PORTPROXY ADD v4tov4 listenport=%HOSTPORT% listenaddress=0.0.0.0 connectport=%WSL2PORT% connectaddress=%IP%
NETSH AdvFirewall Firewall add rule name="%LXDISTRO% Port Forward" dir=in action=allow protocol=TCP localport=%HOSTPORT% > NUL
ECHO WSL2 Virtual Machine %IP%:%WSL2PORT%now accepting traffic on %COMPUTERNAME%:%HOSTPORT%
다음 명령을 실행하십시오.
.\WSL2-PortForward.cmd
결과:
WSL2 Virtual Machine 172.17.109.95:3399 now accepting traffic on MYCOMPUTER:3398
답변4
이렇게 하면 내 문제가 해결되었습니다.
관리자로 Hyper-V 관리자 열기
PC를 선택하고 가상 스위치 관리자를 엽니다.
WSL 선택
외부 네트워크로 설정
트래픽이 통과하는 네트워크 카드를 선택하세요.
그런 다음 wsl2 터미널에 로그인하고 IP 주소를 구성하십시오. 예:
sudo ip addr flush dev eth0
sudo dhclient eth0
내가 찾은 곳은 다음과 같습니다.https://stackoverflow.com/a/62438375/10853017