WSL2 포트 포워딩 / 외부에서 접근하기

2020. 6. 17. 00:22OS & Server/Windows

728x90

WSL2는 VM으로 실행이 되고 있기 때문에, Hyper-V처럼 물리적 이더넷 랜카드를 별도의 가상 이더넷 랜카드로 생성하여 IP를 할당합니다.

 

때문에 IP도 다르고, 심지어 재부팅을 하고 나면 ip가 변경됩니다.

이러한 단점으로 호스트에서 포트포워딩으로 잡아가도 통신이 안됩니다...

오로지 localhost를 통해서만은 셀프로 연결이 가능하죠

 

하지만 개발모드나, 외부든 내부망이든 접근하게 하고 싶고, 심지어 서비스까지 돌리고 싶은 유저들도 있을 겁니다.

이러한 문제점을 극복하기 위해 edwindijas님이 Powershell 명령을 통해 윈도 방화벽에 포트 포워딩을 하는 스크립트를 작성하였습니다.

 

정말 개꿀입니다. 

 

 

https://github.com/microsoft/WSL/issues/4150

 

[WSL 2] NIC Bridge mode 🖧 (Has TCP Workaround🔨) · Issue #4150 · microsoft/WSL

Issue WSL 2 seems to NAT it's virtual network, instead of making it bridged to the host NIC. My goal is for a service running in Ubuntu in WSL 2 to be accessible from anywhere on my local netwo...

github.com

 

 

 

 

 

 

#All the ports you want to forward separated by coma
$ports=@(80,443,10000,3000,5000);

ports에 언급된 포트로 열어주게 되는데, 먼저 WSL의 ip를 탐색하고 기존 방화벽 룰이 추가되어 있다면 그 규칙을 제거하고 새로 발견된 ip로 다시 작성하는 것 같습니다.

 

저는 이것을 대충 작업 스케줄러로 로그온 할 때마다 실행하게 해 두었는데 파워 셸 코드라서 

관리자 권한으로 실행해도 Execution Policy 경고가 나타날 텐데요.

 

# PowerShell.exe -ExecutionPolicy Bypass -File <filename>
PowerShell.exe -ExecutionPolicy Bypass -File .\wsl-networks.ps1

이렇게 작성해주면 Bypass를 진행할 수 있다고 합니다.

 

참조: https://codeac.tistory.com/118

 

WSL2, 외부 네트워크와 연결하기

node.js를 WSL2에서 구동하였는데 로컬만 접속되고 외부에서는 접속이 안돼요 Django를 WSL2에서 구동하였는데 외부에서 접속이 안돼요 와 같은 문제점을 해결하는 글입니다 현재 Window10 preview 2004 버�

codeac.tistory.com

 

728x90