WSL 에서 Window 에 네트워크 요청 날리는 방법

식빵·2025년 11월 12일

Window

목록 보기
3/3

이 글에서는 제가 편의상 WSL2 를 WSL 로 간략하게 표현했습니다. 유의하시기 바랍니다.


😵 WSL 와 Window 간의 네트워크 통신

WSL 은 Window 환경에서 쉽고 빠르게 linux 환경을 구축하는데 큰 도움을 줍니다.

추가적으로 WSL Linux 환경에 웹 관련 앱을 배포하면,
이를 Window 환경에서 localhost 라는 도메인으로 곧바로 접근이 가능합니다.
하지만 아쉽게도 그 반대로는 안됩니다.

WINDOW --> WSL : localhost 요청 가능 ✅
WSL --> WINDOW : localhost 요청 불가 ❌

WSL --> WINDOW 로 네트워크 요청을 날리고 싶으면 어떻게 해야 할까요?
이를 위해서는 몇가지 설정 작업이 필요한데 다음과 같은 순서로 알아보겠습니다.

  1. Window 11 의 해결법
  2. Window 11, 10 모두 호환되는 해결방법




🍀 Window 11 의 해결법

Windows 11 (22H2+) 사용자의 경우에는 이 문제를 간단하게 해결할 수 있습니다.


1. Mirrored 네트워킹 모드

먼저 window 검색창에서 WSL Setting 을 검색합니다.


그후에 아래 그림처럼 네트워킹 > 네트워킹 모드(Mirrored) 로 설정을 변경합니다.
아마 초기에는 Nat 모드일겁니다. NAT 의 경우에는 WSL2 와 Window 가 독립된
mirrored 모드를 켜면 WSL2와 Windows가 동일한 네트워크 인터페이스 공유합니다.


마지막으로 CMD(또는 Powershell)을 켜고 아래처럼 wsl 을 한번 껏다가 켜줍니다.

wsl --shutdown # shutdown 후 8초 정도 기다려줍니다! 
wsl # wsl 재시작 

참고: 8초 대기 규칙

이러면 설정이 끝나고 곧바로 WSL -> Window 11 로 네트워크 요청을 localhost
를 사용해서 날릴 수 있습니다.



2. Mirrored 모드의 한계

Mirrored 모드는 굉장히 쉽게 문제를 해결해주지만 몇가지 아쉬운 부분이 있습니다.

  1. Mirrored 모드를 켜는 순간 모든 WSL 에 설치한 linux distro 간에
    사용하는 포트번호가 같은 게 있으면 충돌이 나고 에러가 발생합니다.

  2. Window 11 에서만 지원하기 때문에 Window 10 사용자들에게는 적용이 안됩니다.

만약에 본인이 linux distro 하나만 사용하고,
Window 11 사용자면 Mirrored 를 사용해도 좋습니다.

하지만 위의 상황이 아닌 분들이라면 지금부터 아래 목차를 따라가시면 됩니다.





🍀 Window 11, 10 모두 호환되는 해결방법

이번에는 Window 11, 10 에서 모두 호환되는 방법을 알아보겠습니다.


1. vEthernet 활성화 체크

시작에 앞서 vEthernet 이 활성화 됐는지 체크하고 가겠습니다.

vEthernet 는 가상 네트워크 어댑터로 WSL 리눅스를 실행하면
동적으로 생성되는 어댑터입니다.

현재 vEthernet 이 활성화됐는지 확인하기 위해서 cmd(또는 powershell)을 실행하고,
ipconfig /all 을 입력합니다. 저는 IP = 172.29.0.1/20 를 사용하는 게 보입니다.

주의사항: vEthernet 이 안 보이면 WSL 리눅스를 실행하지 않아서 그런 겁니다.

참고로 WSL 리눅스 또한 vEthernet 의 네트워크 대역대(172.29.0.0/20)에서
아이피 하나를 할당 받습니다. 이건 WSL 리눅스에서 ip a 를 입력해보면 알 수 있습니다.

이 말은 vEthernet 을 통해서 현재 WSL 과 Window 는 하나의 네트워크 대역대를 사용하고 있으므로,
WSL(172.29.8.106) 에서 Window(172.29.0.1) 로 네트워크 요청을 보낼 수 있다는 의미입니다.



2. WSL 리눅스 전역변수 설정

vEthernet 을 통해 WSL -> Window 로 요청을 보내기 전에 먼저 할 작업이 있습니다.

현재 저희가 Window 에서 ipconfig /all 을 통해서 알아낸
vEthernet 상의 Window IP 는 WSL 이 실행되는 시점에 언제든 변경될 가능성이 있습니다!

그러므로 이 Window IP 를 동적으로 WSL 리눅스에서 조회하여 전역변수에 저장하고
사용해야 안전합니다.

이를 위해서 WSL 리눅스에서 아래와 같이 전역변수 세팅을 해줍니다.
(저는 WSL Ubuntu 를 사용하므로 ~/.bashrc 아래 명령어를 한줄 넣었습니다)

export WINDOW_HOST=$(ip route show | grep -i default | awk '{print $3}')

이후에 새롭게 bash 를 실행시켜서 전역변수가 잘 세팅됐는지 확인합니다.



3. 네트워크 요청 테스트

이제 WSL -> Window 로 통신이 되는지 테스트 해보겠습니다.
먼저 Window 에서 아래와 같이 파이썬으로 서버를 띄워봤습니다.

python3 -m http.server 8080

이후에 WSL 에서 아래와 같이 요청을 날려봤습니다.

curl -I $WINDOW_HOST:8080 # Header 만 읽고 본문은 굳이 조회 X

잘되네요 👍



이상으로 WSL -> Window 로 네트워크 요청을 날리는 방법을 알아봤습니다.
읽어주셔서 감사합닏다.



✨ 참고한 링크

profile
백엔드 개발자로 일하고 있는 식빵(🍞)입니다.

0개의 댓글