Unisquads
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

NAT(WSL) (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.17 07:22

NAT(WSL)

이름

NAT(WSL)

정식 명칭

Network Address Translation (Windows Subsystem for Linux)

개발사

Microsoft

분류

네트워크 기능, 가상화 기술

주요 목적

WSL 2 가상 머신의 네트워크 통신을 Windows 호스트 및 외부 네트워크와 연결

기반 기술

Hyper-V 가상 스위치, NAT

기본 구성

가상 NAT 네트워크, 내장 DHCP 서버

상세 정보

등장 배경

WSL 2 아키텍처가 Hyper-V 기반의 경량 가상 머신을 사용함에 따라, 격리된 가상 머신 네트워크에 대한 NAT 기능 필요

작동 방식

WSL 2 가상 머신은 가상 스위치에 연결되고, NAT(WSL) 장치가 이 가상 네트워크의 사설 IP 주소를 Windows 호스트의 IP 주소로 변환하여 외부 통신 제공

기본 네트워크 구성

가상 네트워크 대역 (예: 172.x.x.x), WSL 인스턴스에 자동 IP 할당 (DHCP)

포트 포워딩

Windows 호스트의 특정 포트를 WSL 인스턴스 내 서비스 포트로 전달 가능 (예: localhost:8080 -> WSL:80)

관련 명령어/도구

wsl.exe --shutdown (네트워크 재설정), netsh interface ip show address "vEthernet (WSL)"

주요 설정 파일

.wslconfig (WSL 2 전역 설정), /etc/resolv.conf (WSL 내 DNS 설정)

네트워크 문제 해결

WSL 서비스 재시작, Hyper-V 가상 스위치 재설정, Windows 방화벽 규칙 확인

대안/비교 기술

Mirrored mode 네트워킹 (WSL 2 최신 버전), 브리지 네트워킹

제한사항

WSL 인스턴스가 직접 외부에서 접근 불가 (기본 설정), IPv6 지원 제한, 복잡한 네트워크 토폴로지 구성 어려움

활용 사례

Linux 웹 서버(Apache, Nginx) 로컬 테스트, Docker on WSL 2 컨테이너 네트워킹, Windows와 WSL 간 네트워크 서비스 통신

1. 개요

NAT(WSL)은 WSL2에서 기본적으로 사용되는 네트워킹 모드이다. 이 모드는 WSL2 가상 머신이 호스트 Windows 컴퓨터를 통해 외부 네트워크(인터넷)에 안전하게 접속할 수 있도록 설계되었다.

NAT 모드에서는 WSL2 인스턴스가 호스트 컴퓨터와 물리적 네트워크를 직접 공유하지 않는다. 대신, 호스트 시스템은 가상 스위치와 NAT 게이트웨이 역할을 수행하는 내부 가상 네트워크를 생성한다. WSL2는 이 내부 네트워크에 연결되고, 호스트의 NAT(네트워크 주소 변환) 기능을 통해 외부로의 통신이 이루어진다. 결과적으로 WSL2 내부의 리눅스 배포판은 호스트 컴퓨터의 IP 주소를 공유하여 외부에 나타난다.

이 방식은 네트워크 설정이 간단하고 보안상 이점을 제공한다. WSL2 환경은 기본적으로 외부 네트워크에서 직접 보이지 않으므로, 별도의 방화벽 구성 없이도 비교적 안전한 상태를 유지할 수 있다. 그러나 이로 인해 호스트 컴퓨터에서 WSL2로의 직접적인 네트워크 접근이 제한될 수 있으며, 특정 서비스를 외부에 노출시키려면 추가적인 포트 포워딩 설정이 필요하다는 단점도 존재한다.

2. NAT 네트워킹의 기본 원리

NAT(Network Address Translation)는 사설 네트워크 내부의 장치들이 하나의 공인 IP 주소를 공유하여 외부 네트워크(주로 인터넷)와 통신할 수 있도록 하는 기술이다. 이 방식은 WSL2의 기본 네트워킹 모드로 채택되어, 리눅스 배포판(게스트)이 Windows 호스트 컴퓨터를 통해 네트워크에 접속하게 한다.

기본적으로 WSL2 가상 머신은 호스트와는 별도의 가상 사설 네트워크에 위치한다. 이때 NAT 장치는 호스트의 네트워크 인터페이스와 WSL2 가상 네트워크 사이에 위치하여 주소 변환을 수행한다. WSL2 내부의 리눅스 배포판은 사설 IP 주소(예: 172.x.x.x)를 할당받고, 외부로 나가는 모든 패킷의 출발지 주소는 호스트 Windows의 공인 IP 주소로 변환된다. 반대로 외부에서 들어오는 응답 패킷은 NAT 장치가 목적지 주소를 다시 리눅스 배포판의 사설 IP로 변환하여 전달한다.

이 과정은 사용자에게 투명하게 이루어지며, 리눅스 배포판 내부에서 curl이나 apt 같은 명령어를 사용해 인터넷에 접속하는 것이 가능해진다. 그러나 외부 네트워크에서 WSL2 내부의 서비스(예: 웹 서버)에 직접 접근하는 것은 기본적으로 불가능하다. 이를 위해서는 호스트 Windows에서 특정 포트로 들어오는 트래픽을 WSL2의 해당 포트로 전달해주는 포트 포워딩 설정이 추가로 필요하다.

2.1. WSL2의 네트워크 아키텍처

WSL2는 가상화 기술을 기반으로 하여 완전한 리눅스 커널을 실행합니다. 이는 WSL1의 시스템 호출 변환 계층 방식과 근본적으로 다릅니다. 따라서 WSL2는 가상 머신과 유사한 독립된 네트워크 스택을 가지게 되며, 이를 위해 Hyper-V 가상화 플랫폼 위에 경량화된 유틸리티 가상 머신이 배치됩니다.

이 아키텍처에서 WSL2 인스턴스(게스트)는 가상 네트워크 어댑터를 통해 연결됩니다. 이 가상 어댑터는 Windows 호스트 운영체제 내에 생성된 가상 스위치에 연결됩니다. Windows 호스트는 이 가상 스위치와 자신의 물리적 네트워크 어댑터 사이에 NAT(네트워크 주소 변환) 게이트웨이 역할을 수행합니다. 결과적으로 WSL2 인스턴스는 호스트를 경유하여 외부 네트워크와 통신하게 됩니다.

WSL2의 네트워크 구성 요소는 다음과 같이 요약할 수 있습니다.

구성 요소

역할

WSL2 가상 머신

독립된 리눅스 네트워크 스택을 보유

가상 네트워크 어댑터(vNIC)

WSL2 인스턴스의 네트워크 인터페이스

Hyper-V 가상 스위치

WSL2 vNIC와 Windows 호스트를 연결하는 내부 스위치

Windows 호스트의 NAT 서비스

사설 IP 주소를 호스트의 공인 IP로 변환

이 구조로 인해 WSL2 인스턴스는 호스트와 다른 사설 IP 주소 대역(예: 172.x.x.x)을 할당받습니다. 이는 기본적으로 외부 네트워크에서 WSL2 인스턴스로의 직접적인 인바운드 연결을 제한하며, 보안성을 제공하는 동시에 일부 네트워킹 시나리오에서 복잡성을 초래합니다.

2.2. 가상 스위치와 NAT 게이트웨이

WSL2는 하이퍼-V 가상화 플랫폼 위에서 실행되는 경량 가상 머신을 사용한다. 이 가상 머신은 호스트 시스템과 네트워크를 공유하기 위해 내부적으로 가상 스위치를 생성한다. WSL2 설치 시 기본적으로 생성되는 이 가상 스위치는 'WSL'이라는 이름을 가지며, NAT(네트워크 주소 변환) 네트워크에 연결된다.

이 가상 스위치는 가상 네트워크 어댑터를 통해 WSL2 가상 머신과 호스트 운영체제를 연결하는 역할을 한다. 호스트 측에서는 'vEthernet (WSL)'이라는 이름의 가상 어댑터가 나타난다. WSL2 가상 머신 내부의 리눅스 커널은 이 가상 스위치에 연결된 자신만의 가상 어댑터를 가지게 되며, 이를 통해 네트워크 트래픽을 송수신한다.

NAT 게이트웨이 기능은 호스트 운영체제의 네트워크 주소 변환 서비스가 담당한다. 호스트의 'vEthernet (WSL)' 어댑터는 WSL2 가상 머신에 사설 IP 대역(예: 172.x.x.x)의 주소를 할당한다. WSL2 내부의 리눅스 배포판은 이 사설 IP를 통해 외부 네트워크(인터넷)에 접근하려고 시도하면, 모든 트래픽은 먼저 호스트의 NAT 게이트웨이를 통과한다.

NAT 게이트웨이는 트래픽의 출발지 주소를 WSL2 가상 머신의 사설 IP에서 호스트 머신의 공인 IP 주소로 변환한 후 외부로 전송한다. 반대로 외부에서 들어오는 응답 트래픽은 호스트의 공인 IP를 목적지로 하며, NAT 게이트웨이는 이를 다시 WSL2 가상 머신의 사설 IP로 변환하여 전달한다. 이 구조는 다음과 같이 요약할 수 있다.

구성 요소

역할

비고

WSL 가상 스위치

WSL2 VM과 호스트를 연결하는 내부 네트워크 교환기

Hyper-V 가상 스위치로 생성됨

vEthernet (WSL)

호스트 측의 가상 네트워크 어댑터

WSL 가상 스위치에 연결됨

NAT 게이트웨이

사설 IP와 공인 IP 간 주소 변환 수행

호스트의 네트워크 서비스 기능

WSL2 VM 내부 어댑터

리눅스 배포판에 IP를 제공하는 가상 장치

사설 IP 대역(예: 172.28.0.0/16) 할당

이러한 설계로 인해 WSL2 인스턴스는 호스트와 동일한 네트워크에 직접 연결된 것처럼 인터넷에 접속할 수 있지만, 외부 네트워크 입장에서는 WSL2 인스턴스가 아닌 호스트 머신에서 발생한 트래픽으로 인식된다.

3. WSL에서 NAT 설정 방법

WSL2의 네트워크는 기본적으로 NAT 모드를 사용하도록 구성되어 있다. 사용자는 .wslconfig 파일을 수정하거나 Windows 측에서 포트 포워딩 규칙을 추가하여 이 구성을 세부적으로 조정할 수 있다.

.wslconfig 파일은 사용자의 Windows 사용자 프로필 디렉토리(%USERPROFILE%)에 위치하며, WSL2 인스턴스의 전역 설정을 관리한다. 네트워크 관련 설정은 이 파일의 [network] 섹션에서 정의한다. 주요 설정 항목은 다음과 같다.

설정 키

설명

기본값

generateResolvConf

WSL 내부의 /etc/resolv.conf 파일을 자동으로 생성할지 여부를 결정한다.

true

hostname

WSL 인스턴스의 호스트명을 설정한다.

배포판 이름

generateHosts

/etc/hosts 파일을 자동으로 생성할지 여부를 결정한다.

true

예를 들어, 사용자 지정 호스트명을 설정하고 DNS 설정 생성을 끄려면 .wslconfig 파일에 다음과 같이 작성한다.

```

[network]

hostname = mywsl

generateResolvConf = false

```

변경 사항은 wsl --shutdown 명령으로 WSL을 완전히 종료한 후 다시 시작해야 적용된다.

WSL2 가상 머신 내부에서 실행되는 서비스(예: 웹 서버)를 호스트 컴퓨터나 동일한 네트워크의 다른 장치에서 접근하려면 포트 포워딩이 필요하다. NAT 네트워크의 특성상, WSL2 인스턴스는 사설 IP 주소를 가지므로 외부에서 직접 접근할 수 없다. 따라서 Windows 호스트의 특정 포트로 들어오는 트래픽을 WSL2 인스턴스의 해당 포트로 전달해주는 규칙을 설정해야 한다. 이는 관리자 권한으로 실행된 PowerShell 또는 명령 프롬프트에서 netsh interface portproxy 명령을 사용하여 수동으로 구성한다. 예를 들어, 호스트의 8080 포트를 WSL2 인스턴스의 80 포트로 포워딩하는 명령어는 다음과 같다.

```

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=(WSL2의 IP 주소)

```

WSL2의 IP 주소는 WSL2 내부에서 ip addr show eth0 명령을 실행하여 확인할 수 있다. 이 설정은 Windows를 재시작하면 초기화될 수 있으므로, 영구적으로 적용하려면 스크립트를 만들어 시작 시 자동 실행되도록 하거나 Windows 방화벽에서 해당 포트의 인바운드 규칙을 추가로 허용해야 할 수도 있다.

3.1. .wslconfig 파일을 통한 설정

WSL2의 네트워크 동작 방식을 제어하는 주요 구성 파일은 사용자 홈 디렉터리(예: C:\Users\<사용자명>)에 위치한 .wslconfig 파일이다. 이 파일은 Windows NTFS 파일 시스템에 저장되며, WSL2를 실행하는 모든 배포판에 전역적으로 적용되는 설정을 정의한다.

.wslconfig 파일을 사용하여 NAT 네트워킹과 관련된 핵심 설정을 조정할 수 있다. 가장 중요한 설정 항목은 다음과 같다.

설정 키

기본값

설명

networkingMode

nat

WSL2 가상 머신의 네트워킹 모드를 지정한다. nat(기본값), mirrored, bridged 중 하나를 선택할 수 있다. NAT 모드를 유지하려면 이 값을 명시적으로 설정하지 않거나 nat으로 설정한다.

firewall

true

WSL2 가상 머신 내부에서 Windows Defender 방화벽 규칙을 적용할지 여부를 결정한다. false로 설정하면 NAT 환경 내에서도 방화벽 검사를 생략할 수 있으나, 보안성이 낮아질 수 있다.

dnsTunneling

true

DNS 요청을 Windows 호스트를 통해 터널링할지 여부를 설정한다. true일 경우 DNS 확인이 호스트의 설정을 따르며, NAT 네트워크에서 일반적으로 권장되는 값이다.

autoProxy

true

Windows 호스트의 프록시 설정을 WSL2 내부로 자동으로 전파할지 여부를 설정한다. 회사 네트워크 등 프록시 환경에서 NAT를 사용할 때 유용하다.

파일은 텍스트 편집기로 생성하거나 수정하며, [wsl2] 섹션 헤더 아래에 키-값 쌍을 작성한다. 예시는 다음과 같다.

```

[wsl2]

networkingMode= nat

firewall= false

dnsTunneling= true

autoProxy= true

```

설정을 변경한 후에는 변경 사항이 적용되도록 WSL2를 완전히 재시작해야 한다. 관리자 권한으로 PowerShell 또는 명령 프롬프트를 실행한 후 wsl --shutdown 명령어를 입력하여 모든 WSL2 인스턴스를 종료한다. 이후 리눅스 배포판을 다시 실행하면 새로운 설정이 적용된다. 이 파일을 통한 설정은 네트워크 모드 전환보다는 현재 NAT 모드 내에서의 세부 동작을 최적화하거나 문제를 해결하는 데 주로 활용된다.

3.2. 포트 포워딩 구성

WSL2에서 NAT 네트워킹을 사용할 때, 호스트 머신의 특정 포트로 들어오는 트래픽을 WSL2 가상 머신 내부의 애플리케이션으로 전달하려면 포트 포워딩을 구성해야 합니다. 기본적으로 WSL2 가상 머신은 호스트와 다른 가상 네트워크에 위치하므로, 외부에서 WSL2 내부의 웹 서버나 데이터베이스에 직접 접근할 수 없습니다.

포트 포워딩은 주로 Windows 호스트의 PowerShell을 관리자 권한으로 실행하여 구성합니다. 가장 일반적인 방법은 netsh interface portproxy 명령을 사용하는 것입니다. 예를 들어, 호스트의 8080 포트를 WSL2 가상 머신의 80 포트로 포워딩하려면 다음 명령을 실행합니다.

```

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=(WSL2의 IP 주소)

```

WSL2의 IP 주소는 WSL2 배포판 내부에서 ip addr show eth0 또는 hostname -I 명령으로 확인할 수 있습니다. 이 설정은 호스트의 모든 네트워크 인터페이스(0.0.0.0)에서 8080 포트로 들어오는 연결을 WSL2의 80 포트로 전달합니다.

구성 요소

설명

예시 값

listenport

호스트 머신에서 청취할 포트

8080

listenaddress

호스트의 청취 IP 주소 (0.0.0.0은 모든 주소)

0.0.0.0

connectport

WSL2 내부에서 연결을 전달할 포트

80

connectaddress

WSL2 인스턴스의 IP 주소

172.21.48.1

이 설정은 영구적이지 않으며, WSL2 인스턴스가 재시작되거나 호스트가 재부팅되면 WSL2의 IP 주소가 변경될 수 있습니다. 따라서 자동화 스크립트를 만들어 WSL2 시작 시 포트 포워딩 규칙을 자동으로 적용하는 것이 일반적입니다. 또한, 포트 포워딩 규칙을 추가한 후에는 호스트의 Windows Defender 방화벽에서 해당 listenport에 대한 인바운드 규칙을 허용하도록 설정해야 정상적으로 통신할 수 있습니다.

4. NAT 모드의 장단점

NAT 모드는 WSL2의 기본 네트워킹 방식으로, 가상 머신이 호스트 컴퓨터를 통해 네트워크에 접속하는 구조를 가진다. 이 방식은 몇 가지 뚜렷한 장점과 함께 특정 제약 사항을 동반한다.

장점 측면에서, 가장 큰 이점은 높은 보안성과 구성의 간편성이다. WSL2 가상 머신은 외부 네트워크에서 직접 보이지 않는 사설 IP 주소를 사용하므로, 기본적으로 외부로부터의 불필요한 접근으로부터 보호받는다. 이는 개발 환경에 적합한 안전한 네트워크 격리를 제공한다. 또한 사용자가 별도의 네트워크 구성을 신경 쓸 필요 없이 설치 직후 바로 인터넷에 접속할 수 있어 편리하다. 호스트 컴퓨터의 방화벽과 보안 설정을 그대로 활용할 수 있어 관리 부담이 적다.

반면, NAT 모드는 몇 가지 네트워크 제약 사항을 가진다. 가장 큰 단점은 기본적으로 외부에서 WSL2 인스턴스로의 인바운드 연결이 불가능하다는 점이다. 예를 들어, WSL2 내에서 실행 중인 웹 서버에 호스트 외부의 다른 기기(예: 스마트폰)에서 접근하려면 호스트 컴퓨터에서 명시적인 포트 포워딩 설정이 필요하다. 또한, WSL2 인스턴스가 호스트와 다른 네트워크 주소 대역을 사용하기 때문에, 네트워크 탐색이나 mDNS와 같은 일부 로컬 네트워크 프로토콜이 제대로 동작하지 않을 수 있다. 복잡한 네트워크 토폴로지가 필요한 고급 시나리오에는 적합하지 않을 수 있다.

장점

단점

기본적인 외부 접근 차단으로 보안성 향상

외부에서의 인바운드 연결에 포트 포워딩 필요

설치 후 별도 설정 없이 즉시 네트워크 사용 가능

로컬 네트워크의 다른 장치와의 직접 통신 제한

호스트의 방화벽 정책 공유로 관리 용이

네트워크 진단 도구 사용 시 복잡성 증가

IP 주소 충돌 가능성 감소

VPN 사용 시 추가 구성이 필요할 수 있음[1]

4.1. 장점: 보안성과 간편성

WSL2의 기본 네트워킹 모드인 NAT는 사용자에게 높은 수준의 보안성과 구성의 간편성을 제공합니다. 이 모드에서는 WSL2 가상 머신이 호스트 Windows 시스템 뒤에 위치하여, 외부 네트워크로부터 직접적인 접근이 차단됩니다. 가상 머신은 호스트를 통해 네트워크에 접속하므로, 별도의 방화벽 규칙을 구성하거나 네트워크 설정을 복잡하게 변경할 필요가 없습니다. 이는 특히 공용 Wi-Fi나 회사 네트워크와 같은 다양한 환경에서 즉시 안전하게 사용할 수 있게 합니다.

NAT 모드의 주요 장점은 네트워크 격리로 인한 보안 향상입니다. WSL2 인스턴스는 사설 IP 주소를 사용하며, 외부 네트워크에서는 이 주소로 직접 접근할 수 없습니다. 이는 실수로 실행된 취약한 서비스나 데몬이 외부 공격에 노출될 위험을 크게 줄입니다. 호스트 시스템의 방화벽이 기본적인 보호층을 제공하며, 필요한 서비스에 대해서만 명시적으로 포트 포워딩을 설정하여 외부에 노출시킬 수 있습니다.

설정과 사용의 간편성도 큰 장점입니다. 대부분의 사용자는 네트워크를 별도로 구성하지 않아도 WSL2 설치 후 즉시 인터넷에 접속하고 패키지를 업데이트할 수 있습니다. DHCP 서버가 자동으로 IP 주소를 할당하므로, 사용자가 네트워크 주소나 게이트웨이를 수동으로 설정할 필요가 없습니다. 이는 네트워크 관리에 대한 부담을 줄이고, 개발 환경 설정에 더 집중할 수 있게 합니다.

또한, NAT 모드는 호스트 시스템의 네트워크 프로필 변경에 영향을 받지 않는 안정적인 연결을 제공합니다. 사용자가 유선에서 무선 네트워크로 전환하거나, 다른 VPN에 연결하더라도 WSL2 내부의 네트워크 설정은 동일하게 유지됩니다. 이는 개발 워크플로우의 중단을 최소화합니다.

4.2. 단점: 네트워크 제약 사항

NAT 모드는 WSL2 가상 머신이 외부 네트워크에 접근할 수 있도록 허용하면서도, 기본적으로 외부에서 가상 머신으로의 직접적인 접근을 차단합니다. 이는 보안상의 이점이지만, 몇 가지 네트워크 제약을 동반합니다.

가장 큰 제약은 포트 포워딩 없이는 외부 네트워크(호스트 머신을 제외한 다른 장치 포함)에서 WSL2 인스턴스 내부에서 실행 중인 서비스(예: 웹 서버, 데이터베이스 서버)에 직접 접근할 수 없다는 점입니다. WSL2 가상 머신은 호스트와는 다른 가상 네트워크에 위치하며, 호스트의 NAT 게이트웨이를 통해 외부와 통신합니다. 따라서 외부에서 가상 머신의 IP 주소로 직접 연결하려고 시도하면 호스트의 네트워크 스택에 의해 차단됩니다.

이러한 구조는 다음과 같은 구체적인 문제 상황을 발생시킬 수 있습니다.

* 동일 네트워크 내 장치 접근 불가: 휴대폰이나 동일한 로컬 네트워크에 있는 다른 컴퓨터에서 호스트 머신의 WSL2 내부에서 실행 중인 개발용 웹 서버에 접속할 수 없습니다.

* 멀티플레이어 게임 또는 특정 P2P 응용 프로그램 문제: 게임이나 특정 P2P 애플리케이션이 직접적인 인바운드 연결을 필요로 할 경우, NAT 뒤에 있는 WSL2 인스턴스에서 정상적으로 작동하지 않을 수 있습니다.

* 네트워크 디버깅 복잡성: 네트워크 트래픽을 분석하거나 특정 포트를 스캔해야 하는 개발 또는 테스트 작업 시, NAT 계층이 추가되어 실제 네트워크 흐름을 파악하기가 더 복잡해질 수 있습니다.

이러한 제약을 해결하기 위해서는 호스트의 방화벽 규칙과 함께 수동으로 포트 포워딩 규칙을 설정해야 합니다. 그러나 이는 네트워크 구성이 변경될 때마다(예: WSL2 가상 머신의 IP 주소가 재시작 시 변경될 수 있음) 규칙을 갱신해야 하는 관리 부담을 초래합니다.

5. 대안 네트워킹 모드

WSL2는 기본 NAT 모드 외에도 다른 네트워킹 구성을 지원하여 다양한 사용 사례를 충족시킨다. 주요 대안으로는 브리지(Bridged) 모드와 미러 네트워킹(Mirrored)이 있다.

### 브리지(Bridged) 모드

브리지 모드에서는 WSL2 가상 머신이 호스트 컴퓨터와 동일한 물리 네트워크에 직접 연결된 것처럼 동작한다. 이 모드에서는 가상 머신이 호스트와 별개의 독립적인 IP 주소를 물리 네트워크로부터 할당받는다. 이는 다음과 같은 특징을 가진다.

* 네트워크 구성: WSL2 인스턴스가 호스트와 동등한 네트워크 피어가 되어, 동일한 서브넷에 속하게 된다.

* 장점: 로컬 네트워크의 다른 장치(예: 프린터, 다른 컴퓨터, IoT 기기)에서 WSL2 내부의 서비스(예: 웹 서버, 데이터베이스)에 직접 접근할 수 있다. 이는 개발 서버 테스트나 분산 애플리케이션 개발에 유용하다.

* 설정 방법: Windows 호스트의 네트워크 설정에서 WSL에 사용되는 가상 네트워크 어댑터의 속성을 변경하거나, PowerShell 관리자 명령을 통해 구성할 수 있다.

### 미러(Mirrored) 네트워킹

미러 네트워킹은 Windows 11 빌드 22518 이상에서 도입된 실험적 기능이다. 이 모드의 핵심 목표는 WSL2 내부의 네트워크 스택을 호스트 Windows의 네트워크 스택과 가능한 한 동일하게 만드는 것이다.

* 동작 방식: 호스트의 방화벽 규칙, 라우팅 테이블, DNS 설정 등 네트워크 구성을 WSL2 인스턴스에 자동으로 복제(미러링)한다.

* 장점: 특히 회사 VPN이나 복잡한 프록시 설정을 사용하는 환경에서 네트워크 연결 문제를 크게 줄일 수 있다. WSL2가 호스트와 거의 동일한 네트워크 환경을 공유하게 되어 호환성이 향상된다.

* 활성화: .wslconfig 파일에 networkingMode=mirrored를 설정하여 사용할 수 있다[2].

다음 표는 세 가지 주요 네트워킹 모드를 비교한다.

모드

IP 주소

주요 사용 사례

설정 복잡도

NAT (기본)

호스트와 다른 사설 IP

일반적인 개발 및 인터넷 사용

낮음

브리지

호스트와 동일한 네트워크의 독립 IP

로컬 네트워크 장치와의 통신 필요

중간

미러

호스트와 동일한 IP (기본적으로)

VPN/프록시 환경, 네트워크 설정 일관화 필요

낮음 (실험적)

사용자는 자신의 네트워크 환경과 요구사항에 따라 적절한 모드를 선택할 수 있다. 기본 NAT 모드가 대부분의 개인 사용자에게 적합하지만, 특정 로컬 네트워크 통신이나 복잡한 기업망 환경에서는 브리지 또는 미러 모드가 더 나은 해결책이 될 수 있다.

5.1. Bridged(브리지) 모드

브리지 모드는 WSL2 가상 머신의 네트워크 인터페이스를 호스트 컴퓨터의 물리적 네트워크에 직접 연결하는 방식이다. 이 모드에서는 WSL2 인스턴스가 호스트와 동일한 IP 주소 대역을 사용하며, 네트워크상에서 호스트와 별개의 독립된 장치처럼 동작한다. 결과적으로, WSL2 내부의 애플리케이션은 로컬 네트워크의 다른 장치와 직접 통신할 수 있고, 반대로 로컬 네트워크의 장치들도 WSL2 인스턴스에 직접 접근하는 것이 가능해진다.

이 모드의 주요 장점은 네트워크 투명성과 편의성이다. 예를 들어, WSL2 내에서 실행 중인 웹 서버는 호스트의 IP와 다른 고유한 IP를 가지므로, 동일한 네트워크에 있는 다른 컴퓨터나 모바일 기기에서 해당 서버에 직접 접속할 수 있다. 이는 NAT 모드에서 필요했던 복잡한 포트 포워딩 설정을 생략하게 해준다. 또한, 멀티캐스트나 브로드캐스트 패킷을 필요로 하는 네트워크 프로토콜이나 서비스 검색 기능도 정상적으로 동작할 수 있다.

그러나 브리지 모드는 보안과 네트워크 정책 측면에서 고려해야 할 사항이 있다. WSL2 인스턴스가 네트워크에 직접 노출되기 때문에, 방화벽 설정을 신경 써야 한다. 기본적으로 Windows 방화벽 규칙이 적용되지 않을 수 있어, WSL2 내부의 서비스에 대한 접근 제어를 별도로 구성해야 할 필요가 있다. 또한, 회사나 학교 네트워크처럼 DHCP 서버가 특정 정책(예: MAC 주소 등록)을 요구하는 환경에서는 IP 할당에 문제가 발생할 수 있다.

현재 WSL2의 기본 네트워킹 모드는 NAT이며, 공식적으로 브리지 모드를 활성화하는 단일 설정 옵션은 제공되지 않는다. 사용자는 일반적으로 Hyper-V 가상 스위치를 수동으로 생성하고 WSL2 가상 머신의 네트워크 어댑터를 해당 스위치에 연결하는 방식으로 브리지 구성을 시도한다. 이 과정은 고급 사용자를 대상으로 하며, 네트워크 구성 변경에 따른 예기치 않은 영향을 고려해야 한다.

5.2. Mirrored(미러) 네트워킹

Mirrored 네트워킹은 WSL2에서 사용할 수 있는 네트워킹 모드 중 하나로, WSL2 가상 머신이 호스트 컴퓨터와 완전히 동일한 IP 주소와 MAC 주소를 공유하는 방식이다. 이 모드는 WSL2가 마치 호스트의 네트워크 인터페이스를 직접 사용하는 것처럼 동작하게 만든다. 따라서 WSL2 내부의 애플리케이션은 호스트와 구분되지 않는 하나의 네트워크 엔드포인트로 외부 네트워크에 나타난다.

이 모드의 주요 특징은 다음과 같다.

* IP 주소 공유: WSL2 인스턴스는 호스트의 물리적 또는 무선 네트워크 어댑터에 할당된 IP 주소를 그대로 사용한다. 별도의 NAT 변환이나 가상 서브넷이 존재하지 않는다.

* 네트워크 투명성: 외부 네트워크(예: 로컬 네트워크의 다른 기기나 인터넷)에서 볼 때, WSL2에서 실행되는 서비스는 호스트 컴퓨터 자체에서 실행되는 것과 동일하게 보인다.

* 구성 간소화: 복잡한 포트 포워딩 설정 없이도 WSL2 내에서 실행된 웹 서버 등을 로컬 네트워크의 다른 장치에서 직접 접근할 수 있다.

Mirrored 네트워킹은 .wslconfig 파일에 networkingMode=mirrored를 설정하여 활성화할 수 있다. 이 모드는 특히 로컬 네트워크 내에서 WSL2 애플리케이션을 테스트하거나 호스트와 완전히 동일한 네트워크 환경이 필요한 개발 시나리오에 유용하다. 그러나 모든 네트워크 드라이버와 호환되지 않을 수 있으며, 호스트의 방화벽 규칙이 WSL2 프로세스에 동일하게 적용되므로 주의가 필요하다.

6. 일반적인 문제 해결

WSL2 환경에서 NAT 네트워킹을 사용할 때 가장 흔히 발생하는 문제는 인터넷 연결 불가와 호스트-게스트 간 통신 장애이다. 이러한 문제는 대부분 가상 네트워크 어댑터의 구성 오류나 방화벽 설정에 기인한다.

인터넷 연결이 되지 않는 경우, 먼저 WSL2 배포판 내부에서 네트워크 구성을 확인해야 한다. ip addr 명령어로 가상 이더넷 인터페이스(보통 eth0)에 IP 주소가 제대로 할당되었는지 확인한다. 기본 게이트웨이 주소(보통 172.x.x.1)로의 핑(ping 172.x.x.1) 테스트를 통해 가상 스위치와의 기본 연결을 검증할 수 있다. 호스트 측에서는 Windows 기능 켜기/끄기에서 '가상 머신 플랫폼'과 'Windows Subsystem for Linux' 항목이 활성화되어 있는지, 그리고 WSL 서비스가 실행 중인지 확인한다. 때로는 wsl --shutdown 명령으로 WSL 커널을 완전히 종료한 후 재시작하는 것이 문제를 해결한다.

호스트(Windows)에서 게스트(WSL2)로의 접속, 예를 들어 웹 서버에 접속하지 못하는 문제는 주로 포트 포워딩 설정 누락이나 Windows Defender 방화벽 규칙 때문이다. WSL2는 호스트와 다른 가상 네트워크에 있으므로, 호스트의 특정 포트를 WSL2 내부의 포트로 전달해주는 명시적인 포트 포워딩 규칙이 필요할 수 있다. 또한 Windows 방화벽이 WSL2 가상 어댑터(vEthernet (WSL))를 통해 들어오는 연결을 차단하고 있을 수 있다. 이 경우, 방화벽 고급 설정에서 WSL2 관련 실행 파일(wsl.exe, wslhost.exe)이나 해당 포트에 대한 인바운드 규칙을 허용해야 한다.

문제 증상

가능한 원인

확인 및 해결 단계

WSL2 내부에서 인터넷 접속 불가

DNS 설정 오류, 기본 게이트웨이 연결 실패

/etc/resolv.conf 파일 확인, 호스트 게이트웨이(172.x.x.1) 핑 테스트, wsl --shutdown 실행

호스트에서 WSL2 내 서비스 접속 불가

포트 포워딩 미설정, 방화벽 차단

PowerShell 관리자 권한으로 netsh interface portproxy 명령어를 사용한 포트 포워딩 추가, Windows 방화벽 인바운드 규칙 확인

네트워크 연결이 간헐적으로 끊김

호스트 시스템 절전 모드, 네트워크 프로필 변경

Windows 전원 관리 설정에서 네트워크 어댑터의 절전 기능 해제, wsl --shutdown 후 재시작

문제 해결 후에는 변경 사항이 적용되도록 WSL 배포판을 재시작하는 것이 좋다. 지속적인 문제는 .wslconfig 파일의 네트워크 설정을 초기화하거나, Windows의 네트워크 어댑터 진단 도구를 실행해 볼 수 있다.

6.1. 인터넷 연결 문제

WSL2 환경에서 NAT 모드를 사용할 때 발생할 수 있는 인터넷 연결 문제는 주로 네트워크 어댑터의 구성 오류, DNS 설정 문제, 또는 방화벽 규칙에 의해 발생한다.

가장 흔한 증상은 WSL2 배포판 내에서 ping이나 curl 명령을 실행했을 때 외부 네트워크에 연결되지 않는 것이다. 이 경우, 먼저 WSL2 내부의 네트워크 설정을 확인해야 한다. ip addr show eth0 명령을 실행하여 IP 주소가 172.x.x.x 대역으로 정상적으로 할당되었는지 확인한다. 주소가 없거나 169.254.x.x 같은 APIPA 주소가 보인다면, DHCP 클라이언트 서비스에 문제가 있을 수 있다. 간단한 해결 방법으로는 Windows 호스트에서 관리자 권한으로 wsl --shutdown 명령을 실행하여 WSL을 완전히 종료한 후 다시 시작하는 것이 효과적이다. 이 조치는 가상 네트워크 스택을 재초기화한다.

두 번째로 흔한 원인은 DNS 해석 실패다. WSL2는 기본적으로 Windows 호스트의 DNS 설정을 상속받지만, 일부 네트워크 환경에서는 이 전달이 제대로 이루어지지 않을 수 있다. /etc/resolv.conf 파일을 확인하여 nameserver 항목이 설정되어 있는지 본다. 이 파일이 비어 있거나 잘못된 주소를 가리킨다면, 수동으로 고정 DNS 서버(예: 8.8.8.8)를 설정하거나, /etc/wsl.conf 파일에 다음 구성을 추가하여 자동 생성을 방지할 수 있다.

```ini

[network]

generateResolvConf = false

```

그 후, /etc/resolv.conf를 수동으로 생성하고 유효한 DNS 서버를 지정한다. 또한, Windows 호스트의 방화벽이나 타사 보안 소프트웨어가 WSL2의 가상 네트워크 어댑터(vEthernet (WSL))에 대한 아웃바운드 트래픽을 차단하고 있을 수 있다. Windows Defender 방화벽의 진입 규칙을 일시적으로 비활성화하여 테스트해 볼 수 있다.

6.2. 호스트-게스트 통신 문제

WSL2 환경에서 NAT 네트워킹을 사용할 때, 호스트 컴퓨터와 WSL2 인스턴스 간의 통신이 제대로 이루어지지 않는 경우가 발생할 수 있다. 이는 기본적으로 WSL2 가상 머신이 호스트와 다른 가상 네트워크에 위치하기 때문이다. 가장 흔한 문제는 호스트 측에서 WSL2 인스턴스로 실행 중인 서비스(예: 웹 서버)에 접근하지 못하는 경우이다.

이 문제를 해결하기 위한 주요 방법은 포트 포워딩을 구성하는 것이다. WSL2 인스턴스 내부에서 실행되는 서비스는 특정 포트(예: 80, 3000, 8080)를 열지만, 이 포트는 기본적으로 호스트의 네트워크에 직접 노출되지 않는다. 따라서 호스트의 특정 포트로 들어오는 트래픽을 WSL2 가상 머신의 해당 포트로 전달하는 규칙을 설정해야 한다. 이는 PowerShell 관리자 모드에서 netsh interface portproxy 명령어를 사용하거나, 시작 스크립트를 작성하여 자동화할 수 있다.

문제 증상

가능한 원인

해결 방안

호스트의 브라우저에서 localhost:8080 접근 불가

WSL2 서비스 포트가 호스트에 포워딩되지 않음

호스트에서 포트 포워딩 규칙 추가 (예: netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=(WSL2 IP))

WSL2에서 호스트의 서비스에 접근 불가

호스트의 방화벽이 WSL2 네트워크에서의 접근을 차단

호스트 방화벽에 WSL2 가상 네트워크 대역(보통 172.x.x.x)에 대한 인바운드 규칙 예외 추가

WSL2 인스턴스의 IP 주소가 자주 변경됨

WSL2 재시작 시 가상 네트워크 어댑터의 IP가 재할당될 수 있음

포트 포워딩 스크립트를 자동 실행하도록 설정하거나, .wslconfig에서 networkingMode=mirrored를 고려[3]

또 다른 접근법은 호스트의 방화벽 설정을 확인하는 것이다. Windows Defender 방화벽이 WSL2 가상 네트워크에서 들어오는 연결을 공용 네트워크로 인식하여 차단할 수 있다. 이 경우, 방화벽 고급 설정에서 WSL2에 할당된 가상 네트워크 어댑터(예: vEthernet (WSL))에 대한 인바운드 규칙을 허용하도록 수정해야 한다. 만약 이러한 문제 해결이 복잡하다면, WSL2의 네트워킹 모드를 미러 네트워킹 모드로 변경하여 호스트와 동일한 IP 주소를 공유하는 방법을 검토할 수 있다.

7. 성능 최적화 팁

WSL2의 NAT 네트워킹 성능을 개선하기 위해서는 몇 가지 설정과 방법을 적용할 수 있다. 특히 대용량 파일 전송이나 네트워크 집약적 작업 시 이러한 최적화가 도움이 된다.

.wslconfig 파일을 사용하여 가상 머신의 리소스를 명시적으로 할당하는 것이 첫 번째 단계다. 기본 설정보다 더 많은 메모리와 프로세서 코어를 할당하면 네트워크 처리 성능이 향상될 수 있다. 예를 들어, 다음과 같이 설정할 수 있다.

설정 항목

예시 값

설명

memory

4GB

WSL2 가상 머신에 할당할 최대 메모리

processors

4

호스트 CPU 코어 중 할당할 수

localhostForwarding

true

호스트의 localhost 포트를 WSL2에 자동 전달

또한, 호스트 Windows의 방화벽과 백신 소프트웨어가 WSL2의 가상 네트워크 어댑터를 과도하게 검사하지 않도록 예외를 설정하는 것이 좋다. WSL2의 네트워크 인터페이스는 일반적으로 vEthernet (WSL)이라는 이름을 가지며, 이에 대한 실시간 검사를 비활성화하면 네트워크 지연을 줄일 수 있다. WSL2 내부에서는 네트워크 튜닝 파라미터를 조정할 수 있으며, TCP 창 크기나 버퍼 크기와 같은 값을 상황에 맞게 최적화하는 것이 도움이 된다[4]. 마지막으로, 최신 버전의 WSL2와 Windows를 사용하는 것은 지속적인 성능 개선과 버그 수정을 보장하는 기본적인 방법이다.

8. 관련 문서

  • Microsoft - Windows Subsystem for Linux Documentation

  • Wikipedia - Windows Subsystem for Linux

  • Wikipedia - 네트워크 주소 변환

  • Microsoft - WSL 2의 네트워킹 개요

  • GitHub - WSLg Architecture and Networking

  • Microsoft Dev Blogs - WSL 2 Post BUILD FAQ

리비전 정보

버전r1
수정일2026.02.17 07:22
편집자노스 플라이트
편집 요약새 문서 생성