WSL2 우분투는 호스트 IP에 액세스할 수 있지만 호스트 포트에 액세스할 수 없습니다.

WSL2 우분투는 호스트 IP에 액세스할 수 있지만 호스트 포트에 액세스할 수 없습니다.

Windows 구성:

  1. 포트 5000이 열린 상태에서 샘플 웹 서버 실행(그림 1 참조)
  2. Windows 방화벽이 완전히 닫혔습니다.

WSL2:

  1. 호스트 IP 또는 을(를) 사용하여 인터넷에 성공적으로 액세스하고 ping 창을 실행할 수 있지만 $(hostname).local실행할 수 없습니다.curl http://172.18.16.1:5000
sandowner@ENIGMATIC-MACHINE:~$ hostip=$(ip route | grep default | awk '{print $3}')
sandowner@ENIGMATIC-MACHINE:~$ echo $hostip
172.18.16.1
sandowner@ENIGMATIC-MACHINE:~$ ping 172.18.16.1
PING 172.18.16.1 (172.18.16.1) 56(84) bytes of data.
64 bytes from 172.18.16.1: icmp_seq=1 ttl=128 time=0.514 ms
64 bytes from 172.18.16.1: icmp_seq=2 ttl=128 time=0.690 ms
^C
sandowner@ENIGMATIC-MACHINE:~$ ping $(hostname).local
PING ENIGMATIC-MACHINE (172.18.16.1) 56(84) bytes of data.
64 bytes from ENIGMATIC-MACHINE (172.18.16.1): icmp_seq=1 ttl=128 time=0.355 ms
64 bytes from ENIGMATIC-MACHINE (172.18.16.1): icmp_seq=2 ttl=128 time=0.729 ms
^C
sandowner@ENIGMATIC-MACHINE:~$ curl http://172.18.16.1:5000
^C (will timeout)
  1. 호스트의 5000 포트는 WSL2 브라우저에서도 액세스할 수 없으며 다음으로 끝납니다 ERR_CONNECTION_TIMED_OUT(그림 2 참조).

그림 1

그림 2

어떤 도움이라도 주시면 감사하겠습니다! 감사해요!

답변1

연결하고 싶을 때WSL 2에서 호스트까지, 특별한 메커니즘이 마련되어 있지 않습니다. WSL 2는 VM에서 실행되며 Windows 네트워킹 스택에 관한 한 원격 호스트입니다. 그 의미는:

  • 에 바인딩된 애플리케이션, 또는 localhost의 모든 IP 에 접근할 수 없습니다 .127.0.0.0/8::1
  • 방화벽은 인바운드 연결을 허용해야 합니다.

불행하게도 WSL 2 가상 네트워크에는 완전히 예측할 수 없는 동적 주소가 있으므로 거기에서만 수신한다는 것은 항상 네트워크 서비스 구성을 업데이트해야 함을 의미합니다. 대신 0.0.0.0또는 ::(“모든 인터페이스”) 에 바인딩하는 것이 더 쉽습니다 . 이는 모든 사람이 연결할 수 있음을 의미하므로 신뢰할 수 없는 네트워크에 있는 경우 결과를 알고 있어야 합니다.

관련 정보