ムッシューの日記

2人の子供とのお出かけネタから趣味の釣りネタなど

TCPProxyを利用した2段プロキシ


会社内のPCから外部に出るときはセキュリティの都合でプロキシサーバを経由すると思いますが、とある環境で図のような制約があったのでその時の対処法のメモ。

pic1

構成としては、PC内にセキュリティ用のプロキシソフトが入っており、これが外部のプロキシとさらに通信してインターネットにアクセスできる。PC内のプロキシには127.0.0.1でしかアクセスできないという制約付き。

普通にブラウザにプロキシ設定する分には127.0.0.1を設定すれば外部に出れて問題ないが、PC内に仮想OSを立ち上げてそこから外部にアクセスしようとする場合、127.0.0.1をプロキシに設定しても仮想OS内の127.0.0.1にアクセスしてしまうため外部にアクセスできなかった。

apache httpdを入れて対処しようとしたが上手くいかず、試行錯誤の末TCPProxyというツールを入れて2段プロキシをPC内に構成することで上手く通信できるようになった。(下図)

pic2

やっていることは、TCPProxyを使ってPCの127.0.0.1以外のIP(ここでは192.168.x.xとしている)を受け付け、これをそのまま127.0.0.1に転送するようにした。仮想OSから192.168.x.xへプロキシ設定することで上手く外部に出ることができた。

こういうのを2段プロキシと言うらしいが、apache httpdのmod_proxyだと、TCPレベルの横流しではなくリクエストが加工されて上手くいなかったので、TCPレベルの横流しができるTCPProxyを利用してみました。

ちなみに、TCPProxyはここからダウンロードできます。

起動するためのコマンドは以下の通り。(javaが必要です)

java -cp ./grinder.jar net.grinder.TCPProxy -httpproxy 127.0.0.1 8080 -localhost 10.253.124.160 > nul

httpproxyオプションで転送先のIPとポートを指定し、localhostオプションで受け付けるIPアドレスを指定できます。
標準出力をnulに捨てているのは、受けたパケットを全部標準出力に出してしまうため、動きが遅くなるため。


次へ 投稿

前へ 投稿

© 2017 ムッシューの日記

テーマの著者 Anders Norén