Windowsでnesh portproxyコマンドでポートフォワーディングする方法

以前、現場でサーバ構築作業をしていて、構築中のサーバに接続したいんだけど、作業用端末から直接接続できないけど、別のサーバを経由すると接続できるというネットワーク構成で、teratermを使ったポートフォワーディングの方法を教えてもらったことがあります。


通常、こういった接続は使わないと思いますが、構築中など用途を限定した場合に、知っておくと便利なことがあります。この機能を使うことでサーバを中継サーバにして異なるセグメントのサーバを通信させることができます。


そして、Teratermなどのソフトウェアが使えない場合に、Windowsの標準機能で実現することができます。これちょうど現場で質問されたので備忘録を兼ねて設定方法を紹介します。


nesh portproxyコマンドでポートフォワーディングする方法があるので紹介します。構成としては、PCはサーバBには直接接続できないですが、サーバAはサーバBと通信できるケースで、サーバAに対してポートフォワーディングの設定をしてあげると、PC利用者は、サーバAの情報を知っていれば、サーバBに接続することができます。

 


所謂、リバースプロキシみたいなことができます。設定自体は以下の構成ならサーバAに対して実施します。

 

■構成
[PC]---[サーバA]---[サーバB]

■コマンド
netsh interface portproxy add v4tov4 listenport=<ポート番号> listenaddr=<転送元IP>
connectport=<ポート番号> connectaddress=<転送先IP>

■設定例
以下は、WEBサーバ(192.168.1.10)の8080ポートへ転送する設定で、PCはブラウザでhttp://192.168.0.10:20001と入力すると、ポートフォワーディングされて転送先のサーバに接続できます。

> netsh interface portproxy add v4tov4 listenport=20001 listenaddr=192.168.0.10
connectport=8080 connectaddress=192.168.1.10


■確認コマンド
設定状態を確認するのは以下のコマンドで、設定は複数追加できます。
> netsh interface portproxy show all


■削除コマンド
続いて削除コマンドです。
> netsh interface portproxy delete v4tov4 listenport=<ポート番号>


また、設定自体は再起動しても消えないので、route addのように永続保存オプションとかはありません。


使うケースは限られていると思いますが、必要性がある場合に知っていると便利ですね。