2016/02/29 平見知久
Windowsでポートフォワーディングする
とある案件でWindowsでポートフォワーディングを行う必要がありましたのでやり方含めてご紹介しておきます。
OS: Windows 2008R2
やりたいこと: Windowsサーバにポート中継をさせて、特定セグメントからのアクセスを別セグメントの特定マシンへの通信に振り替えさせる
Linuxですとiptablesあたりを駆使すればそれなりに簡単にできてしまいますし、SSHポートフォワードなんて手もあります。ですが今回は相手はWindows。制約上SSHポートフォワードもNGということでなんかアプリをいれないと駄目かなぁと思って調べていたのですが、実はWindowsのみでポートフォワードすることができます。
ポートフォワードを行うにはnetshコマンドを使用します。
Windowsサーバ(192.168.50.50)の8080ポートを外部サーバ(ここでは192.168.100.100とします)のポート80に転送したい場合、コマンドプロンプトを管理者権限で起動して、以下のように入力します。(画面では2行になっていますが実際には1行で入れます)
> netsh interface portproxy add v4tov4 listenport=8080 listenaddr=192.168.50.50 connectport=80 connectaddress=192.168.100.100
これで、他のマシンからWindowsサーバ(192.168.50.50:8080)へアクセスすると、Windowsサーバ経由で外部サーバ(192.168.100.100:80)に接続できるようになります。
また、netshからはshow allで現在の状態を確認することが出来ます。
> netsh interface portproxy show all
ちなみに削除する場合にはdelete v4tov4コマンドを使用します。
> netsh interface portproxy delete v4tov4 listenport=8080
まあポート転送が必要な状況自体がネットワーク設計的にどうなのよという話があったりなかったりもしますが、既存の制約や限られた時間の中でなんとかしないといけないケースもままあります。知っておくとひょっとすると役にたつかもしれないTipsのご紹介でした。