WSL에서 방화벽 열기
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
New-NetFirewallRule -DisplayName "WSL2-MySQL" -Direction Inbound -LocalPort 3306 -Action Allow -Protocol TCP
WSL2에 설치된 서비스가 Windows에서 접속되지 않는 현상 점검 방법
WSL2(Windows Subsystem for Linux 2)에서 실행 중인 웹 서버, 데이터베이스 등 리눅스 서비스가 Windows(호스트)에서 접속되지 않을 때 점검해야 할 주요 항목과 해결 방법을 정리합니다.
1. 네트워크 구조 이해
- WSL1은 Windows와 네트워크를 공유(로컬호스트 사용)하지만,
- WSL2는 NAT 기반 가상 네트워크를 사용하여 별도의 내부 IP를 가집니다. 이 때문에 WSL2에서 실행한 서비스는 기본적으로 WSL2 내부 IP에서만 접근 가능하며, Windows에서 바로 접근이 안 될 수 있습니다123.
2. 서비스 바인딩 주소 확인
- 리눅스 서비스(예: 웹 서버)가
127.0.0.1
(localhost)에만 바인딩되어 있으면 WSL2 내부에서만 접근 가능합니다. - 반드시 0.0.0.0 또는 WSL2의 내부 IP로 바인딩해야 Windows에서 접근할 수 있습니다.
예시 (Flask):
app.run(host='0.0.0.0', port=8000)
3. 포트포워딩 설정
WSL2의 네트워크 특성상, Windows에서 WSL2로 트래픽을 전달하려면 포트포워딩이 필요합니다.
설정 방법:
- WSL2에서 내부 IP 확인
hostname -I
- Windows PowerShell(관리자 권한)에서 포트포워딩 설정
netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=<WSL2_IP>
- `<WSL2_IP>`는 위에서 확인한 WSL2의 내부 IP입니다.
- 이 설정은 Windows 재부팅 또는 WSL2 재시작 시 WSL2의 IP가 바뀌므로, 그때마다 재설정해야 합니다[^4][^9].
4. Windows 방화벽 규칙 확인
- Windows 방화벽이 해당 포트를 막고 있으면 접속이 안 됩니다.
- PowerShell(관리자 권한)에서 포트 허용 규칙 추가:
New-NetFirewallRule -DisplayName "WSL2 Port 8000" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8000
5. WSL2 네트워크 모드 및 방화벽 정책
- Windows 11 22H2 이상, WSL 2.0.9 이상에서는 Hyper-V 기반 방화벽이 기본 활성화됩니다56.
.wslconfig
파일에networkingMode=mirrored
를 설정하면 WSL2가 Windows 네트워크를 직접 미러링해 LAN에서 바로 접근이 가능해집니다.- 파일 위치:
%USERPROFILE%\.wslconfig
- 내용 예시:
- 파일 위치:
[wsl2]
networkingMode=mirrored
- 적용 후 WSL2를 재시작해야 합니다[^8].
6. VPN, 기업 방화벽, 네트워크 정책
- 회사나 조직 환경에서는 Windows Defender Firewall 정책, VPN, 네트워크 관리 정책에 의해 WSL2의 네트워크가 제한될 수 있습니다.
- “Windows Defender Firewall with advanced security"에서 “Rule Merging"이 No로 되어 있으면 WSL 네트워크가 차단될 수 있습니다. 이 경우 관리자에게 방화벽 예외 규칙 추가를 요청해야 합니다7.
7. 기타 점검 사항
- 서비스가 실제로 실행 중인지, 포트가 열려 있는지 WSL2에서 확인(
ss -tuln
또는netstat -tuln
). - Windows에서
telnet <WSL2_IP> <PORT>
또는curl
등으로 포트 오픈 여부 확인. - WSL2 IP가 자주 바뀌므로, 자동화 스크립트로 포트포워딩을 관리하는 것도 방법입니다38.
점검 체크리스트 요약
점검 항목 | 설명 및 조치 |
---|---|
서비스 바인딩 주소 | 0.0.0.0 또는 WSL2 IP로 바인딩 |
포트포워딩 | netsh로 Windows→WSL2 포트포워딩 설정 |
방화벽 규칙 | Windows 방화벽에서 해당 포트 인바운드 허용 |
네트워크 모드 | .wslconfig 에 networkingMode=mirrored 적용(Windows 11 최신 버전) |
WSL2 IP 확인 | WSL2 재시작 시마다 IP 변경, 포트포워딩 재설정 필요 |
조직/기업 정책 | 방화벽 Rule Merging 등 네트워크 정책 확인 및 관리자 문의 |
서비스 상태 확인 | WSL2 내에서 서비스 실행·포트 오픈 확인 |
참고
- WSL2 네트워크 및 방화벽 문제는 Windows와 WSL2의 버전, 네트워크 환경, 방화벽 정책에 따라 달라질 수 있습니다.
- 최신 Windows 11/WSL2에서는 네트워크 미러링, Hyper-V 방화벽 등 새로운 기능을 적극 활용하는 것이 좋습니다56437.
이렇게 단계별로 점검하면, 대부분의 WSL2 서비스 접속 문제를 해결할 수 있습니다.
-
https://jwstanly.com/blog/article/Port+Forwarding+WSL+2+to+Your+LAN/ ↩︎ ↩︎ ↩︎ ↩︎
-
https://docs.nvidia.com/nim/wsl2/latest/running-client-port-forwarding.html ↩︎ ↩︎
-
https://learn.microsoft.com/en-us/windows/wsl/networking ↩︎ ↩︎
-
https://stackoverflow.com/questions/49835559/access-a-web-server-which-is-running-on-wsl-windows-subsystem-for-linux-from-t ↩︎ ↩︎
-
https://learn.microsoft.com/en-us/windows/wsl/troubleshooting ↩︎ ↩︎
-
https://blog.bryanroessler.com/2021-02-18-external-wsl2-access-ubuntu-20-w-powershell/ ↩︎