5분 읽기

WSL2 네트워크 완전 정복: vEthernet 인터페이스와 172.18.176.1 이해하기

WSL2 네트워크 완전 정복: vEthernet 인터페이스와 172.18.176.1 이해하기 들어가며 WSL2를 쓰다 보면 Windows 쪽에 vEthernet (WSL) 같은 가상 네트워크 인터페이스가 자동으로 생성되는데, 이때 할당되는 IP(예: 172.18.176.1)가 과연 무슨 역할을 하는지 궁금할 때가 많다. 개발 환경에서 내부 통신부터

네트워크WSL2
#가상화#Hyper-V

WSL2 네트워크 완전 정복: vEthernet 인터페이스와 172.18.176.1 이해하기

들어가며

고객사로부터 문의가 들어왔는데, 호스트 위변조와 경고와 관련한 문의. 내가 제공하는 서비스 솔루션과 상관은 없었으나, 가상화 서비스를 이용하기에 궁금해서 찾아봄. 결과적으론 WSL2를 쓰는 윈도우 환경에서 발생할 수 있는 문제.

WSL2를 쓰다 보면 Windows 쪽에 vEthernet (WSL) 같은 가상 네트워크 인터페이스가 자동으로 생성되는데, 이때 할당되는 IP(예: 172.18.176.1)가 과연 무슨 역할을 하는지 궁금할 때가 많다. 개발 환경에서 내부 통신부터 테스트용 네트워크 구성까지 알아두면 유용하니, 한 번 정리해보자.


1. WSL2 네트워크 구조 개요

  • WSL1: Windows 네트워크 스택 위에서 리눅스가 “프로세스”로 동작
  • WSL2: Windows 안에 경량화된 VM(가상 머신) 생성 → 완전한 리눅스 커널 구동
    • Windows 호스트 ↔ WSL2 게스트(리눅스 VM) 간 가상 네트워크 인터페이스(vEthernet)를 통해 통신
    • 외부 인터넷으로 나갈 때는 Windows 쪽 NAT를 타고 나감
[WSL2 VM] ←→ vEthernet (172.18.x.x) ←→ [Windows 호스트 네트워크] ←→ 인터넷

2. vEthernet 인터페이스 생성 원리

  1. WSL2를 처음 설치하거나 실행하면
  2. Windows 내 Hyper-V가 경량 VM을 띄우고
  3. Windows 쪽에 “vEthernet (WSL)”이란 이름의 가상 NIC를 만든 뒤
  4. 호스트(Windows)와 게스트(WSL2 VM) 사이를 가교(bridge)처럼 연결

이 가상 NIC 덕분에 Windows와 리눅스 간 로컬 통신이 가능한 것. 별도의 네트워크 케이블 없이도 내부망이 구성되는 셈이다.


3. 172.18.176.1 할당 이유와 역할

  • 172.16.0.0 ~ 172.31.255.255: RFC1918이 지정한 사설 IP 대역
  • WSL2 디폴트 서브넷: 보통 /20대역(255.255.240.0) 내에서 임의로 할당
  • 172.18.176.1은 Windows 호스트 쪽 게이트웨이 역할
    • WSL2 VM의 기본 게이트웨이로 설정되어,
    • 패킷을 외부(Windows 네트워크)로 내보내거나 받을 때 중계점이 됨
# Windows CMD에서 확인 예시 C:\> ipconfig Ethernet adapter vEthernet (WSL): Link-local IPv6 Address . . . : fe80::a4e3:8910:362b:bc20%28 IPv4 Address. . . . . . . . . : 172.18.176.1 Subnet Mask . . . . . . . . . : 255.255.240.0 Default Gateway . . . . . . . :

4. Link-local IPv6 주소와 활용

  • fe80::… 형태 주소는 링크-로컬 IPv6
    • 동일 네트워크(여기서는 vEthernet) 내에서만 통신
    • 라우터 거치지 않고 직접 패킷 전달
  • WSL2 ↔ Windows 간 IPv6 통신도 이 주소로 이뤄짐
  • 특별히 건드릴 필요 없이 자동 관리되니 참고만 하면 됨

5. 서브넷 마스크(255.255.240.0) 해석

  • 255.255.240.0 = /20 → 호스트 주소 4094개 (2^(32–20) – 2)
  • 네트워크 범위 예시:
    네트워크 ID:   172.18.176.0
    브로드캐스트:  172.18.191.255
    사용 가능 호스트: 172.18.176.1 ~ 172.18.191.254
    
  • WSL2가 여러 VM을 띄우거나 Docker 컨테이너 네트워크를 만들 때, 이 범위 내에서 IP를 중복 없이 할당

6. 주요 명령어로 확인하는 법

  • Windows 측 (CMD / PowerShell)
    ipconfig /all
  • WSL2 측 (리눅스 쉘)
    ip addr show eth0 # 또는 ifconfig eth0
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.176.2  netmask 255.255.240.0  broadcast 172.18.191.255
        inet6 fe80::xxxx:xxxx:xxxx:xxxx  prefixlen 64  scopeid 0x20<link>
    

7. 실제 예시와 활용 팁

  • 테스트 서버 지정
    hosts 파일에 172.18.176.2 my-local-test 추가 → WSL2 VM 내부 웹 서비스에 http://my-local-test로 바로 접속
  • 방화벽/포트 포워딩
    Windows 방화벽에서 vEthernet (WSL) 대상으로 특정 포트 개방 → WSL2 서비스 외부에서 호출 가능
  • Docker 네트워크 연동
    Docker 컨테이너도 WSL2 내부 네트워크에 합류 → 컨테이너 간 통신 최적화

마치며

WSL2의 vEthernet172.18.176.1은 “윈도우 ↔ 리눅스”를 이어 주는 내부 네트워크 백본이다. 사설 IP, 서브넷 마스크, 링크-로컬 IPv6 개념을 이해하면, 테스트 환경 구축은 물론 Docker·VM 네트워크 디버깅도 한결 쉬워진다. 다음에 WSL2 네트워크를 만날 때는, 이 글을 참고해 차근차근 파헤쳐 보길!