개발지식

포트포워딩(port forwarding)으로 내부망 PC 접근하기(포트포워딩 설정방법)

우루쾅 2025. 7. 28. 23:25
728x90
반응형
SMALL

 

개발 환경에서 로컬 VM(Virtual Machine)에서 실행 중인 웹 서비스(예: Flask, Spring 등)에 다른 내부망 PC에서도 접근해야 할 때가 있습니다.

이때 netsh interface portproxy 명령어를 이용한 포트 포워딩 설정을 통해, 내 PC IP를 통해 VM 서비스에 우회 접속할 수 있습니다!

 

📌 1. 네트워크 구조 이해하기

가정한 상황은 다음과 같습니다:

  • VM의 IP: 192.168.30.100
  • 내 컴퓨터의 IP: 192.168.21.47
  • VM에서 서비스는 5000번 포트에서 실행 중 (예: http://192.168.30.100:5000)
  • 목적: 다른 PC에서 http://192.168.21.47:5000으로 접속 시 VM의 서비스로 연결

이때 직접적으로 192.168.30.100:5000에 접근할 수 없는 경우, 내 컴퓨터가 게이트웨이 역할을 하도록 포트 포워딩을 설정해줄 수 있습니다.

 

 

📘 2. Windows netsh interface portproxy란?

Windows의 netsh interface portproxy는 포트 레벨에서 TCP 트래픽을 프록시(우회)할 수 있도록 해주는 기능입니다.
이를 통해 로컬에 도달한 요청을 지정된 IP와 포트로 자동 전달할 수 있습니다.

✔ 주요 용도:

  • 내부망 간 IP 격리가 있을 때 브릿지 역할
  • Hyper-V, VirtualBox, VMware 등 로컬 가상 머신의 포트를 외부에서 접근 가능하게 할 때
  • 방화벽, NAT 환경 우회

 

🛠 3. 포트 포워딩 설정 방법

✅ ① 관리자 권한으로 CMD 실행

먼저, cmd.exe를 관리자 권한으로 실행해야 합니다.
(※ netsh는 시스템 네트워크 설정을 수정하므로 권한 필요)

✅ ② 포트포워딩 등록

netsh interface portproxy add v4tov4 listenport=5000 listenaddress=192.168.21.47 connectport=5000 connectaddress=192.168.30.100

 

 

항목 설명
listenport 요청을 받을 포트 (즉, 내 컴퓨터에서 열어줄 포트)
listenaddress 요청을 받을 IP (내 컴퓨터의 IP)
connectport 실제 연결할 포트 (VM에서 서비스가 열려있는 포트)
connectaddress 실제 연결할 IP (VM의 IP 주소)

 

💡 예시 흐름:

내부망 사용자 → 192.168.21.47:5000 → (portproxy) → 192.168.30.100:5000 (VM)

 

 

🔎 4. 설정 확인 / 삭제 방법

✅ 포트포워딩 목록 확인

 
netsh interface portproxy show v4tov4
 

출력 예시

Listen on ipv4:             Connect to ipv4:
Address         Port        Address         Port
--------------- ----------  --------------- ----------
192.168.21.47   5000        192.168.30.100  5000

 

❌ 포트포워딩 삭제

netsh interface portproxy delete v4tov4 listenport=5000 listenaddress=192.168.21.47

 

⚠️ 5. 주의사항

  1. Windows 방화벽 설정 확인
    • 5000번 포트가 방화벽에서 허용되어 있어야 함
    • Inbound Rule에 예외 추가 필요 (TCP 5000)
  2. 라우팅만 제공, NAT 기능은 없음
    • 이 포트포워딩은 단순 포트 중계 기능일 뿐, IP 변경이나 NAT 변환은 하지 않음
  3. 서비스는 반드시 VM에서 외부 접근 허용 상태여야 함
    • VM 내 서비스는 0.0.0.0 또는 해당 VM IP 기준으로 바인딩되어야 함
# Flask 예시
app.run(host='0.0.0.0', port=5000)

 

 

🔁 요약

  • netsh interface portproxy로 포트를 중계할 수 있다.
  • VM IP는 직접 접근할 수 없을 경우, 내 PC IP를 통해 접근할 수 있도록 브릿지 역할을 수행한다.
  • 방화벽 설정과 VM 내 서비스 바인딩 확인도 반드시 필요하다.

 

참조

- https://zifmfmphantom.tistory.com/158

728x90
반응형
LIST

'개발지식' 카테고리의 다른 글

Kotlin 기본 함수(예시 코드)  (7) 2025.08.12
Kotlin 기본 문법(예시 코드)  (5) 2025.08.11
(JPA) mappedBy 완벽 이해!  (8) 2025.07.26
(JPA) 연관관계 매핑  (4) 2025.07.25
(JPA) 영속성 컨텍스트  (4) 2025.07.23