IP Port Forward 는 연결하려는 대상(Remote)의 IP와 Port를 조작하는 프로그램입니다.

윈도우 및 리눅스의 hosts, iptables와 유사한 기능을 제공합니다.

Game Server 디버깅을 목적으로 개발을 하게 됐고, 윈도우의 hosts + netsh port forward 조합으로도 대체 가능한 기능입니다.

App 제작 동기

게임 서버 개발자로 업무를 진행을 하다가 아래와 같이 불편함이 있어서 제작 하기로 했습니다.

게임 클라이언트를 변경하지 않고 내가 원하는 서버(예, 로컬 또는 사내 서버)로 연결해서 테스트 할 일들이 간혹 발생했습니다.

예를 들면, 제 3사의 SDK등을 이용한 Build 를 사용해서 테스트를 해야 하는데, 로컬 서버에 연결해서 디버깅을 해야하는 케이스가 있었습니다.

디버깅을 위한 전용 클라이언트 빌드를 요청하지 않아도 되고, 간단히 IP/Port Rule 만 적용해서 디버깅 하고자 했습니다.

지원 기능

  • 프로세스 설정
    • 모든 프로세스
    • 지정 프로세스
  • IP 설정
    • 지정 IP
    • Any IP
    • Bitmask 지원
  • Port 설정
    • 지정 Port
    • Any Port
    • Port Range 지원

IP Port Forward 와 Hosts + Netsh 의 장단점 비교

LSP로 인한 안정성 등의 문제로, 단점 또한 존재합니다.

  IP Port Forward IP Port Forward Plus (제작중) Hosts + Netsh
설정 난이도 보통 보통 어려움
IP 지원 O O X
Domain 지원 X X O
UDP 지원 X O O
지정 프로세스에 적용 O O X
WSL 및 Docker 호환 X X O
동적 설정 변경 O O △ (앱을 재시작 해야하는 케이스가 있음)
구동 방식 LSP (Dll Injection) LSP (Dll Injection) 윈도우 설정 (안전함)

Demo

아래 영상은 1.1.1.1로 연결할 경우, 127.0.0.1로 강제로 변경해버리는 데모 영상입니다.

요구 사양

  • Windows 10, 11
  • 64bit (AMD64)
  • Visual C++ Runtime (2015-2022)

기반 기술

  • LSP (Layered Service Provider)

알려진 문제

  • WSL과 호환되지 않습니다. (다른 LSP 기반의 프로그램도 동일)
  • Socket 을 재활용하는 경우, 앱이 비정상 동작하는 경우가 있는 것 같습니다.
    이 경우 앱을 종료 후 다시켜면 정상동작 하기도 합니다.

설치 방법

  1. 다운로드 한 파일의 압축 해제
  2. IPPrtFwdMain.exe 실행
  3. (원하는) 규칙 입력
  4. Options 진입
  5. Install 실행

문제 해결

  • 네트워크 비정상 동작시
    1. IPPrtFwdMain.exe 실행
    2. Options 진입
    3. Uninstall
    4. 재부팅
    * SSMS와 같은 MS의 일부 툴에서 연결문제가 발생하는 경우, 해당 툴을 재구동 하면 정상 동작하는 경우가 있습니다.
  • LSP 완전 초기화 하기
    1. (관리자 권한) 명령 프롬프트 열기
    2. netsh winsock reset
    3. 재부팅
    * ProxyCap과 같은 LSP 기반의 프로그램도 함께 초기화 되기 때문에, 재설치가 필요합니다.