Squid

3ヶ所以上の振り分け

社内、社外、支社と言う3つのネットワークがあって、社内の利用者は、社内にあるWebサーバには直接アクセス可能な位置にあり、社外サイトを見るときはProxy2、支社サイトを見るときはProxy3を通る必要があるとします。

この状況では、ブラウザの設定は、簡単にはいきません。これらすべてのWebサーバに対してアクセスするためには、Proxy2を主たるプロキシに指定して、社内サイトをプロキシを使用しないホストに登録しますが、そうなると支社サイトを見ることができません。

で、Proxy1を設置して、利用者はProxy1を指定するだけ(対象外ホストの登録をしない)で見えるようにしたい、と。

要するに、親となるプロキシサーバが複数台あって、それらに対して振り分けをしたく、かつ、プロキシから直接アクセスするべきサーバがある場合の設定になります。

Proxy2/Proxy3の設定は特に問題ないでしょう。通常の単体プロキシと同じなので。

ただし、Proxy2/Proxy3は新設のProxy1からのアクセスを受け付けられるようにしておく必要があります。

この場合、Proxy1のsquid.confは次のようになります(必要部分のみ抜粋)。

1  : http_port 8080
2  : cache_peer 192.168.1.50 parent  8080  0  no-query
3  : cache_peer 172.20.1.20  parent  8080  0  no-query
4  : #
5  : # ACL
6  : #
7  : acl all         src       0.0.0.0/0.0.0.0
8  : acl localhost   src       127.0.0.1/255.255.255.255
9  : acl com-site    dstdomain .example.com
10 : acl intra       dstdomain .example.co.jp
11 : #
12 : # Rules
13 : #
14 : cache_peer_access 192.168.1.50 allow com-site
15 : cache_peer_access 192.168.1.50 deny  all
16 : #
17 : always_direct allow intra
18 : never_direct  allow all
19 : http_access   allow localhost
20 : http_access   allow local
21 : http_access   deny  all

2, 3行目で親プロキシを指定しますが、「社外」と「支社サイト」を振り分けるわけです。で、この場合、「支社サイト」の方がより特殊性がありますので、最初に記述します。残りを次の行のProxy2が受け持つ、と。

これについては、さらに14,15行目で「どのaclについてProxy3を使用するか」を記述することで完成です。

で、今度は親プロキシ(Proxy2/Proxy3)を使用する場合としない場合について、17, 18行目で設定してます。

17 : always_direct allow intra

で、社内ネットは常にProxy1が自分でアクセスして取りに行きます。

18 : never_direct allow all

では、上記(17行目)でマッチしなかったもの、つまり「社内サイトではないもの」は親プロキシを経由するようにします。 しかし、親プロキシは2台あるので、どっちが使われるのかというと、Proxy3は14,15行目で支社サイトに使用するように定義されてるので、残りは社外サイトとしてProxy2へ依頼されます。

と言うのが設定ファイルを作るときの考え方です。 この設定で期待通りの動きはしましたが、間違っている部分もあるかもしれないので、それはまた追加修正します。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS