WindowsにはFreeCapというソフトウェアがあり、これを使うとSOCKS非対応のアプリケーションでもSOCKS経由で通信できるようになります。
今時SOCKSなんていつ使うんだよ、と思われるかもしれないですが、意外と使うのです。弊社はゲートウェイになっているサーバーがあり、そのサーバー経由でグローバルIPを持っていないデータベースサーバーやアプリケーションサーバーに接続してMySQL Query Browserなどを使っています。図解すると以下のような感じになります(SOCKSなので、DBサーバーからはあたかもゲートウェイサーバーからアクセスがあったように見えます)。
自分のPC --(SSH tunnel)--> ゲートウェイサーバー(SOCKSサーバー) ---> DBサーバー or APサーバー
Windowsであれば前述のFreeCapを使えば、SOCKS非対応のMySQL Query BrowserなどもSOCKS経由させることができ、プライベートIPしか持っていないデータセンター内のDBサーバーなどにアクセスできるわけです。
Mac OS XでFreeCapのようなものがないかと探していたら、tsocksというソフトを見つけました。これもFreeCapのように、SOCKS非対応のソフトのパケットを乗っ取り、SOCKS経由にできるソフトです。
tsocks自身はLinux向けに開発されていると言うこともあり、sourceforgeからのものだとMacには入ってくれませんでした。なので、MacPortsやMacPortsをGUIで管理できるPorticusなどでインストールすることになります。
インストール後、/opt/local/etc/tsocks.confを以下の内容で作成します。
server = 127.0.0.1 server_type = 4 server_port = 1080
その後、SSHで適宜SOCKSサーバーにトンネルを掘ります。SSH Tunnel Managerなど使うと便利ですが、コマンドラインからでも掘ることはできます。
# ssh -N -p 22 -c 3des -D 1080 katz@socks.example.jp
トンネルを掘った後は、tsocksコマンドを使い、SOCKS経由したいアプリケーションを起動します。MySQL Query Browserの場合は以下のような感じになります。
$ tsocks /Applications/MySQL\ Tools/MySQL\ Query\ Browser.app/Contents/MacOS/MySQL\ Query\ Browser
ただ、毎回ターミナルを開いてtsocksコマンドを叩くのは面倒くさいので、ドロップレットを作りました。解凍してできたアプリに、SOCKS経由したいアプリ(例えばMySQL Query Browser)をドロップすれば、自動的にSOCKS経由になります。