IP Port Forwardは、接続しようとする対象(リモート)のIPやPortを強制的に操作する開発者の為のアプリです。

WindowsやLinuxのhosts、iptablesと同じような機能を提供します。

Game Serverのデバッグを目的で開発をしたため、Windowsのhostsとnetsh port forwardの合わせでも設定可能ですが、このアプリは使いやすいGUIと機能を提供します。

アプリ制作の動機

ゲームのサーバー開発者としての作業中、次のような不便なケース発生がしたため、制作することになりました。

ゲームのクライアントのコードの変更せずに、作業者が接続して欲しいサーバー(例えば、ローカルや社内サーバー)に接続してテストしたい時がたまし発生しました。

例えば、第3社のSDKなどを利用したゲームのクライアントのBuildを使ってテストをする時、ローカルサーバーに接続してデバッグをしたいケースがありました。

デバッグ用のクライアントのBuildを要求せず、簡単にIP/PortのRuleだけを適用してデバッグしたいと思い、専用のアプリを制作することに至りました。

提供機能

  • プロセス設定
    • 全てのプロセス
    • 指定プロセス
  • IPアドレス設定
    • 指定IPアドレス
    • 全てのIPアドレス
    • ビットマスクIPアドレスサポート
  • ポート設定
    • 指定ポート
    • 全てのポート
    • ポートの範囲の設定

IP Port ForwardとHosts + Netshの長所と短所の比較

安定性などの問題で、欠点も存在します。

  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) Windowsの設定(安全)

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. オプションに入る
  5. インストールする

トラブルシューティング

  • ネットワーク異常動作の時
    1. IPPrtFwdMain.exe実行
    2. オプションに入る
    3. アンインストール
    4. システムの再起動
    * SSMSなどのMicrosoft社のMSのツールでネットワークに問題が発生する場合にはツールを再起動すると解決するケースがあります。
  • LSPを完全に初期化する
    1. (管理者権限)コマンドプロンプト(cmd)を起動する
    2. netsh winsock reset
    3. システムの再起動
    * ProxyCapみたいなLSPベースのアプリにも影響があるので、使用するためには再インストールが必要です。