概要
SSHのリモートポートフォワーディングを利用することにより、
FWなどにより外部へしか通信できないネットワークに対して、FWを越えて通信することができます。
存在自体は知っていましたが、意外と便利でした。
イメージ
前提
・経由サーバからユーザPCへssh接続できること
説明
こちらの記事を主に参考しました。
例えば、以下のようにした場合は「経由サーバへ」から「ユーザPC」へ
ssh接続をすると同時に、「ユーザPC」の「10080ポート」を「接続サーバ」の「80ポート」へフォワーディングすることなります。
従って、ユーザPCにおいて"http ://localhost:10080"にアクセスすることは、
すなわち"http ://[接続サーバ]:80"にアクセスしたことになります。
# 経由サーバから実行
$ ssh -R 10080:[接続サーバのIPアドレス]:80 [ユーザPCのIPアドレス]
これを応用すれば、ネットワーク的には少し遠いですが
更にユーザPC(Linux)にsocatを設定したりすることでユーザPC(Linux)を踏み台サーバとして利用できると思います。
例えば、上記の例だとユーザPCの10080ポートを80ポートとして提供することで、接続サーバの80ポートに対して通信させるといったようなことができます。
# ユーザPCで実行
$ socat tcp4-listen:80,reuseaddr,fork TCP:127.0.0.1:10080
上記のようにsocatを設定することで、更に他のPCからユーザPCのポート80にアクセスすることで、接続サーバの80へアクセスしているかのように見せることができます。