sshのポート転送をこよなく愛しているのだが、ログインするまでもなくポート転送したい時がある。
単純に、Aサーバのこのポートを、Bサーバのあのポートに接続するって場合。
socatってコマンドがあれば、なんとか出来る。
1 |
$ socat TCP4-LISTEN:8443,fork TCP4:foo.example.com:443 |
自分の:8443ポートを、foo.example.com:443に繋ぐ。
forkを付けないと、1回の接続でコマンドが終了してしまう。
これで、自分の8443に接続が来ると、foo.example.com:443に接続されるっていうすぐれもの。
ただ、このsocatって一番困るのが、たぶん大体の環境で入ってない。
netcatのncコマンドなら、たぶん何処の環境でも入ってるので、力技でやると、
以下のような感じ。ただ、fifoを事前に作って上げる必要があります。
1 2 3 |
$ mkfifo foo.fifo $ nc -l 8443 < foo.fifo | nc foo.example.com 443 > foo.fifo |
標準入出力をfifoで繋いであげる感じ。
この考えはとても素晴らしいのだが、仕様なのかなんなのか、そこそこの頻度でコマンドが終了する。
もー。ようわからんので、whileで回してやる。
1 |
$ while /bin/true ; nc -l 8443 < foo.fifo | nc foo.example.com 443 > foo.fifo ; done |
かなり強引。動作テスト程度には使えるが、本気運用は無理ですね。