それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Squid→Squidへ の多段プロキシ

squid で上位プロキシへクライアントからの要求を転送

Squid を使ってプロキシサーバを使っています。すべての通信はProxy経由にしてます。そのほうがIP固定できて楽だしね。

proxy.example.ac.jpをSquidの上位とする。

普段使っているSquidが、さらに上位のSquidを参照するようにする。

cache_peer  proxy.example.ac.jp parent 8080  7 no-query
never_direct allow all


Squid にさらにSquidを参照させるメリットはあるのかと言われてば、もはやIP隠蔽工作以外にはあまりにメリットがないような気もしますが、リバースプロキシや、画像のキャッシュなどなら意味はあると思います。

設定したら、squid 再起動

わたしは、独自ビルドのSquidを使っているので、再起動こんな感じ。ふつうなら、service restart squid とかでいいと思う。

/usr/local/squid/bin/squid -k shutdown
/usr/local/squid/bin/squid 

設定方法は、squid.confに書いてありました

1232 #  TAG: cache_peer
1233 # To specify other caches in a hierarchy, use the format:
1234 #
1235 #   cache_peer hostname type http-port icp-port [options]
1236 #
1237 # For example,
1238 #
1239 # #                                        proxy  icp
1240 # #          hostname             type     port   port  options
1241 # #          -------------------- -------- ----- -----  -----------
1242 # cache_peer parent.foo.net       parent    3128  3130  proxy-only default
1243 # cache_peer sib1.foo.net         sibling   3128  3130  proxy-only
1244 # cache_peer sib2.foo.net         sibling   3128  3130  proxy-only
1245 #
1246 #       type:  either 'parent', 'sibling', or 'multicast'.

参考資料

squid で上位プロキシへクライアントからの要求を転送する方法は次の通り。
これは、一般に多段プロキシと言われる構成。

/etc/squid/squid.conf にて、以下を追記。
cache_peer [上位プロキシの IP アドレス] parent [上位プロキシの ポート番号] [icp ポート番号] no-query


icp ポートを用いて上位プロキシのキャッシュを利用しない場合は、
icp ポートに 7 を指定する。

icp ポートのデフォルトは 3130 。

設定例

192.168.1.1:8080 を上位プロキシとして使用する場合
cache_peer 192.168.1.1 parent 8080 3130 no-query


icp ポートを使用しない場合
cache_peer 192.168.1.1 parent 8080 7 no-query


さらに、全てのリクエストを上位プロキシに転送する場合は、以下の設定も必要。
never_direct allow all


never_direct を指定しない場合は、リクエストを上位プロキシに転送したり、
自分で直接インターネットにアクセスしたりする。

最後に squid のプロセスを再起動して変更を反映。
/etc/init.d/squid restart

squid で上位プロキシへ要求を転送する(多段プロキシ)