netcat で port forward
単純にncをパイプで入出力を繋げると、入力はforwardされるけど、出力はclientに返らずに、ncを実行している端末の標準出力に出てしまう。
- localhostの8080にきたものを192.168.0.1の80にforward
$ nc -l 8080 | nc 192.168.0.1 80
これでcilentからnc 10.0.0.1 8080 と接続すると192.168.0.1:80 にport forwardされるけど、出力はnc -l を実行している端末に出てしまう。
名前付きパイプで解決
$ mkfifo fifo $ nc -l 8080 < fifo | nc 192.168.0.1 80 > fifo
これでclientからlocalhostの8080にアクセス
$ telnet localhost 8080 GET / HTTP/1.0 ## 192.168.0.1:80 のサーバの応答が返ってくる