JVM オプションでの SOCKS プロキシの指定

Java (or JVM 言語) で SOCKS プロキシを経由して外部リソースにアクセスしたい場合を考えてみよう。

まずは次のようなコマンドを実行して、localhost の 1080 番ポートに SOCKS サーバを立ち上げる。

$ ssh -f -N -D 1080 bastion.example.com
$ sudo lsof -i :1080
COMMAND  PID            USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
ssh     4006 yasunori.mahata    8u  IPv6 0x103xxxxxxxxxxxx      0t0  TCP localhost:socks (LISTEN)
ssh     4006 yasunori.mahata    9u  IPv4 0x103xxxxxxxxxxxx      0t0  TCP localhost:socks (LISTEN)

Java アプリケーションにこの SOCKS プロキシを使わせたいとしよう。例えば、bastion.example.com からしかアクセスできないリソースにさわりたい場合だ。

そういう場合は、JVM に次のオプションを渡せばよい。

-DsocksProxyHost=localhost -DsocksProxyPort=1080

参考記事