Below you will find pages that utilize the taxonomy term “Wsl”
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):
WSL에서 port개방이 안될때
월요일.
개발환경을 WSL에 설정하면서 서버를 구동하고 웹브라우저로 확인을하던 디버깅을 하던 필연적으로 WSL과 Host Window사이의 port를 개방해야 하는 문제에 직면하게 된다.
당연히 구글에 찾아보면 PowerShell로 만들어진 스크립트를 손쉽게 입수 할 수 있지만, 그 어디에도 (그렇게 해도) 안될때에 대한 이야기나 추가적인 사항에 대해서 언급한 포스팅은 본적이 없어 잠시 해메다가 이 글을 적어본다.
먼저 아래에 기술한 Script를 확장자 ps1으로 저장을 하고 스크립트의 내용을 살펴보자.
$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
여기에서 중요한 부분은 bash.exe가 의미하는것이 Window말고 Linux에서 실행할것이라는 의미이다. 그러니 뒤쪽에 있는 파라메터중 ifconfig는 linux command이다.
불행하게도 Ubuntu기준으로 저 녀석은 기본설치가 아니고 net-tools에 포함되어 있다. linux에서 apt로 설치해줘야 한다.