[Flask/WSL] WSL2 서버 외부 접속 시, 접속 안되는 문제 해결

2024년 07월 24일
 | 
Info-Geon
Dart_Flutter basic img

저는 WSL2를 이용하여 윈도우에서 리눅스 기반 파일들을 실행하고, 서버를 구축하여 실행된 파일을 클라이언트에게 보내도록 구성하려고 하였습니다.

하지만 WSL을 사용하지 않은 상태면 외부에서 저의 Flask 서버로 접근이 가능했는데, WSL을 사용하면 외부에서 저의 Flask 서버로 접근이 안되는 것이었습니다.

알고보니, WSL은 윈도우와는 다른 가상 네트워크를 사용하기 때문이었습니다. 방법은 아래 글을 읽어주세요.

1. WSL2 네트워크 툴 설치

WSL에서 ‘net-tools’를 설치하여, 네트워크 IP 주소를 확인할 것입니다.

sudo apt intall net-tools

 

2. WSL2 IP 주소 확인

아래 코드로 WSL2에서 사용되는 IP 주소를 확인할 수 있습니다.

ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1

 

3. 포트포워딩 설정

Windows 명령 프롬프트(CMD)를 관리자 권한으로 실행시켜, 아래의 명령어를 사용하여 윈도우-WSL간의 포트 포워딩을 설정합니다. 예를 들어, 본인의 Flask 서버 포트가 5000번이라면 아래와 같이 실행하시면 됩니다.

netsh interface portproxy add v4tov4 listenport=5000 listenaddress=0.0.0.0 connectport=5000 connectaddress=<WSL2_IP>

<WSL2_IP>에는 본인의 WSL2 IP를 넣으시면 되고, <>는 빼고 넣어주세요.

 

4. Windows 방화벽 설정

아래 방법을 통하여, Windows 방화벽이 5000번 포트를 허용하도록 설정합니다.

Windows 방화벽 설정:

1. 제어판 -> 시스템 및 보안 -> Windows Defender 방화벽 -> 고급 설정

2. 인바운드 규칙에서 ‘새 규칙’ 클릭

3. ‘포트’ 선택 후, 다음 클릭

4. ‘TCP’와 ‘특정 로컬 포트’를 선택하고 5000 입력 후 다음 클릭

5. ‘연결 허용’ 선택 후 다음 클릭

6. 필요한 경우 네트워크 프로파일 선택 후 다음 클릭

7. 규칙 이름 입력 (예: Flask Test) 후 완료 클릭

 

5. 라우터 포트 포워딩 설정

1~4번의 과정으로 윈도우-WSL 간의 포트포워딩이 설정 되었으니, 다음으로 외부와 내부간의 포트포워딩을 설정합니다.

ipTime: https://coreeny.tistory.com/75

sk브로드밴드: https://eastsea92-com.tistory.com/49

정리를 잘 해놓아주신 분들이 계시니, 이분들의 글을 보시고 포트포워딩 설정을 해주시면 됩니다!

이때 외부 포트는 사용할 포트(5000 또는 5000:5000), 내부 포트도 사용하실 포트(5000 또는 5000:5000) 로 설정해주시고, 내부 IP는 Windows 내부 ipv4를 적어주시면 됩니다.

(CMD에서 ipconfig를 입력하시변 보실 수 있습니다.)

 

6. 공인 IP 주소 확인

WhatIsMyIP와 같은 사이트에서 확인하시거나, 네이버에서 ‘IP주소확인’ 이라고 검색하셔서 확인하시면 됩니다.

 

7. 외부에서 접속

외부 네트워크(휴대폰, 다른 컴퓨터 등)에서 아래의 URL로 접속하시면 됩니다.

http://<공인 IP 주소>:5000

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다