netcatでTCPプロキシー

netcatには種類があるらしい。
http://d.hatena.ne.jp/EijiYoshida/20111109/1320800716

Cygwinで入れたらOpenBSD版のよう。こいつでHTTPをプロキシする。
このあたりを参考にした。バックパイプというのを初めて知った。
http://notes.tweakblogs.net/blog/7955/using-netcat-to-build-a-simple-tcp-proxy-in-linux.html


$ mkfifo fifo
$ while :; do nc -k -l 10080 < fifo | nc 127.0.0.1 80 > fifo; done

Ubuntuの場合 -q 1 で少し待たせる必要がある。


$ mkfifo fifo
$ while :; do nc -q 1 -k -l 10080 < fifo | nc -q 1 127.0.0.1 80 > fifo; done

通信内容をin, outファイルに保存させる場合。


$ while :; do nc -k -l 10080 < fifo | tee -a in | nc 127.0.0.1 80 | tee -a out > fifo; done

別のCygwinを2つ開いて通信内容を表示させる。


$ tail -f in


$ tail -f out

少し不安定だが、とりあえず使える。
終わったら fifo を消しておく。


$ rm fifo