« 2012年9月16日 - 2012年9月22日 | トップページ | 2012年10月21日 - 2012年10月27日 »

2012年10月 7日 (日)

squidで、特定のURLへのアクセスを他のsquidサーバーに転送する

squidって非常に高機能なんでしょうけれど、その設定は非常に厄介ですな。
今回の備忘録はこんな内容です。

今使っているsquidサーバーは192.168.100.1とします。ここで、URLに例えば、.hogehoge.co.jpまたは、IPアドレスで、172.16.*.*が含まれている場合は、192.168.100.2のsquidからアクセスして、その結果を転送してもらいたい。

要するに、特定のURL範囲について、他のsquidサーバーにフォワードしたいというようなことです。まあ、最近のブラウザですと、プロキシの自動設定ファイル(PACファイル)を読み込むというような機能がありますので、それなりのPACを作れば、同じ事はできます。でも、もし、192.168.100.2のsquidに外部から直接アクセスできないような場合は、PACでは無理ということになります。
随分特殊な状況だなあ。まあ、とにかく、備忘録という事で書いときます。

squidには、サーバー同士が情報を融通し合う、ICPという機能がありますので、それを使います。

まず、元のsquid(192.168.100.1)のsquid.confに次の内容を書きます。書く場所は、適切なセクションにしてくださいね。順番等ありましょうから。
まず、アクセスコントロールリストを作ります。
  acl to_hogehoge1 dst 172.16.0.0/16
  acl to_hogehoge2 dstdomain   .hogehoge.co.jp

192.168.100.2をICPの親(parent)に指定します。
  cache_peer 192.168.100.2         parent   3128  3130  proxy-only

上で作ったaclをparent(192.168.100.2)に送ります。
  cache_peer_access 192.168.100.2 allow to_hogehoge1
  cache_peer_access 192.168.100.2 allow to_hogehoge2

このような設定だと、すべてのアクセス要求が、parentに転送されてしまいそうにも思いますが、そんなことは無いようです。parentじゃなくてsiblingでも良さそうなものですが、それだと、sibling側のcacheに情報がない場合は、応答してくれないような感じでした。

parent(192.168.100.2)側のsquid.confにも、以下のような設定をして、ICPへのアクセスを許可する必要があると思います。

  acl home-net src 192.168.100.0/24

  icp_access allow home-net

こんな設定でいいのかどうかわかりませんが、私のところではうまくいっているようです。

にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

にほんブログ村 IT技術ブログへ
にほんブログ村

| | コメント (0) | トラックバック (0)

« 2012年9月16日 - 2012年9月22日 | トップページ | 2012年10月21日 - 2012年10月27日 »