Notice
Recent Posts
Recent Comments
Link
헬창 개발자
WSL 환경 localhost는 통신이 되지만, Host IP는 통신이 안되는 현상 본문
윈도우(Host) <-/-> WSL <--> Docker
위와 같은 환경으로 웹 서버를 열어 통신을 하려고 서버를 열었지만, localhost:8888은 통신이 되지만, 내 아이피:8888은 통신이 안되는 현상을 겪었다.
도커 브릿지 문제인가 확인을 했지만 이상이 없었고 Docker IP:8888, WSL IP:8888 도 접속이 가능했다. 나중에 패킷을 분석해보니 윈도우(Host) <-> WSL 이 통신이 안되고 있었다. 그러다가 포트를 8000번으로 바꿔서 통신이 되는걸 보고.. 아하 포트 포워딩을 안해줬구나 하고 깨달았다.
그래서 이 글은 윈도우 powershell 환경에서 wsl로 포트 포워딩을 하는 방법을 알려주는 글 이다.
먼저 호스트에서 포트 포워딩 상태를 확인 해 보자
netsh interface portproxy show all
위 명령어를 입력하면 IPv4 수신 대기(0.0.0.0)와 특정 IPv4 주소(Host IP)에서 각각의 포트를 통해 연결 가능 상태를 나타낸다. 8888 포트는 없어서 당연히 통신이 안된거다.
0.0.0.0 의미
- 0.0.0.0은 모든 네트워크 인터페이스에서 들어오는 요청을 수신 대기한다는 뜻입니다.
172.22.75.150 의미
- 이는 특정 네트워크 인터페이스(WSL 등에서 사용 중인 프라이빗 IP)에서 연결 가능 상태를 나타냅니다.
이제 통신이 안되었던 8888 포트를 추가 해주자.
netsh (PowerShell에서 실행)
netsh interface portproxy add v4tov4 listenport=<윈도우_포트> connectaddress=<WSL_IP> connectport=<WSL_포트>
- listenport: Windows에서 대기할 포트
- connectaddress: WSL의 IP 주소 (localhost 또는 WSL 내부 IP)
- connectport: WSL에서 연결할 포트
WSL에서 8888 포트로 실행 중인 웹 애플리케이션에 Windows의 8888 포트를 포워딩하는 경우
netsh interface portproxy add v4tov4 listenport=8888 connectaddress=172.22.75.150 connectport=8888
이제 docker compose를 다시 해서 이미지를 띄우면 정상적으로 Host IP:8888 에서 접근이 가능하다.
참고로 방화벽은 기본적으로 해제해야 한다.
'공부방' 카테고리의 다른 글
[논문 리뷰] From Local to Global: A Graph RAG Approach to Query-Focused Summarization (0) | 2024.12.23 |
---|---|
FastAPI : 파일 처리 (2) | 2024.09.09 |
FastAPI Pydantic : 데이터 검증 및 설정 (1) | 2024.09.06 |
How much need VRAM by using LLM? (0) | 2024.09.05 |
도메인 특화 언어 모델 구축 어떤 방법이 좋을까? (1) | 2024.09.04 |
Comments