複数の 通信先に対して、同一TCPポートで ポートフォワードさせる。(IPエイリアスで、ssh ポートフォワード出来る)


聞いてみると、けっこう知らない人が多かったので、書いときます。

タイトルに書いたとおり、IPエイリアスに対して ssh でポートフォワードが出来ます!

これだけだと、ちょっと意味わかりにくいですよね。
つまり、複数の宛先に対して、同一ポート番号で同時に フォワード処理が出来るってことです。

例えば、サーバAの 443番(https)に向けた通信と サーバBの 443番(https)に向けた通信を、物理NIC を追加することなく、また、ローカルの監視ポート番号を変えることなく、1台のサーバで、単一コマンドにてフォワード出来るんです。
もちろん、443番に限らず、どんなポート番号でも同じです。

# ifconfig eth0 aaa.aaa.aaa.aaa ...

と 物理NICに設定されていたとして、

# ifconfig eth0:0 xxx.xxx.xxx.xxx
# ifconfig eth0:1 yyy.yyy.yyy.yyy
# ifconfig eth0:2 zzz.zzz.zzz.zzz

と、IPエイリアスを追加設定したとします。

ここで、特権ポートなんで root で、

# ssh -L aaa.aaa.aaa.aaa:443:localhost:1443 -L xxx.xxx.xxx.xxx:443:localhost:2443 -L yyy.yyy.yyy.yyy:443:localhost:3443 -L zzz.zzz.zzz.zzz:443:localhost:4443 user@server

と 出来るということです。

当然 このあと、多段転送で 目的のサーバにフォワードさせていくわけですが、
上の転送が出来るメリットは、通信ポートが変えられないアプリケーションを使っていた場合に、威力を発揮します。
特に、Windowsアプリは ポートを変えられないケースが多いですね。
そんな場合にも、aaa.aaa.aaa.aaa の 443番と、xxx.xxx.xxx.xxx の 443番 等を、同時に 使えるんです!

例えば、古い ESXi を使っていて、vSphere Client でしか繋げない場合に、複数ESXi に対して同時接続したいときなど。
シチュエーションは 少なくなってきていますが、Windowsアプリの制限で ポートを変えられないケースは、まだまだ多いハズ。

さらに、Windows 上にて!

コントロールパネルの ネットワーク設定で、物理NIC に 複数のIPアドレスを付与できますよね?
ここで、Cygwin の ssh でも 同様の処理が出来ます

例えば これと併用すると...

OpenBlocks を使い、遠隔地のインターネット公開されていない内部ドメインのWebサーバを、SSL-VPN装置を使わずに 安全に利用するには(OpenBlocks を、簡易VPN機器っぽく使う)
遠隔地から 内部ネットワークの複数サーバに向けて、さらに VPN っぽく遠隔利用できるわけです。

便利な世の中になったもんです。(って、昔から です)