最終更新日: 2014年 5月18日
Squid Home / FAQトップ

遅延プール・クラス4

クラス 4(Class 4)の遅延プールでは、Class 3によるプール毎、ネットワーク毎およびホスト毎でのバケット(バケツ)を作成し、さらに「認証ユーザごと」のバケットを作成し、そのバケットに目的に合わせた速度を定義することで、遅延プールの速度制限としていきます。 
速度定義された遅延プールにアクセスリスト(ACL)を定義することで、そのアクセスリストに対応する端末やサーバの速度制限を実施していきます。
この遅延プールの利用シーンとしては、単一バケットで全体の速度を設定して、さらにネットワーク(通常は組織)範囲の中で制限をした上で、ホストアドレスによって細かな速度設定をしていきます。
認証ユーザは、Squidにおける外部認証プログラムを使った認証されたユーザを使います。
ネットワーク・バケットの判定はIPv4アドレスにおけるIPアドレスの第3オクテッド(17~24ビット / xx.xx.zz.xx の zzの部分)部分を使い作成されます。
個別のバケットの判定は、IPv4アドレスにおけるIPアドレスの第4オクテッド(24~32ビット / xx.xx.xx.yy の yyの部分)によって判断されます。
個別のバケット毎に速度制限の前で、ネットワークバケットでの速度制限がされるので、例えば組織毎に速度の違うバケットを用意した上でクライアントの負荷が集中しないようバケットを構成できます。
(なお、以下で使っている帯域制限でのバイトサイズは 1KB=1000バイト とする近似値です)

1. 一つのクラス4遅延プールを用意して端末の帯域を制限する構成


次のような構成条件で遅延プールを構成するのものします。
  • 単一バケットで 50MB/sec の速度制限を実施する。 (全ネットワークバケットを合わせて、この速度までで上限となる)
  • ネットワークアドレス毎に、20MB/secの速度制限を実施する。(各個別バケット合わせて、この速度までで上限となる)
  • 個別バケットは、 速度ともに 5MB/sec とする。 
  • ACLとしてサブネットで192.168.10.0/24と192.168.20.0/24を対象にする 。(すべてを対象にするなら、 0.0.0.0/0 とするか、delay_accessのACLの指定部分を "all"にすれば良い。(...ハズ)
  • ACLにマッチしなかった場合には、通常の速度(システムの速度)で転送される。

(squid.conf)
# ACLs
acl auth_users proxy_auth REQUIRED
# または、 acl auth_users proxy_auth jon lisa helen connor

# Delay Pool
delay_pools 1

delay_class 1 4 # pool 1 is a class 4 pool

delay_parameters 1 50000000/50000000 20000000/20000000 5000000/5000000 1000000/1000000 # 50MB/sec,50MBバケット、 20MB/sec,20MBバケット、5MB/sec, 5MBバケット、1MB/sec,1MBバケット
# もし、単一バケット、を無制限としたいなら以下のように設定します。
# delay_parameters 1 -1/-1 20000000/20000000 5000000/5000000 1000000/1000000
# もし、ユーザ制限だけとしたいなら以下のように設定します。
# delay_parameters 1 -1/-1 -1/-1 -1/-1 1000000/1000000

delay_access 1 allow auth_users
delay_access 1 deny all
この構成では、ACLにマッチしたクライアントは、最大で1MB/secでの転送が行われます。 なお、Squidにおいて予めユーザ認証を行う設定をしておく必要があります。 また、グループ名(LDAPやNTLMなどの)を使いたい場合には(多分、)ACL外部ヘルパーを使う必要があります。参考までに、ACL外部ヘルパーを使う例として:
::
external_acl_type ldap_group_helper %LOGIN /usr/local/squid/libexec/squid_ldap_group -b "ou=people,dc=example,dc=com" ldap.example.com
acl AclName external ldap_group_helper GroupRDN ...

delay_access 1 allow AclName

クラス4と他のクラスを組み合わせて構成することも可能です。

クラス4の遅延プールを複数用意する方法は、クラス1の「遅延プール(高速用・低速用)を複数用意する構成」を参照してください。この構成において、使用するプールの設定がクラス2に変更されるだけです。
なお、複数のプールを構成する場合には、プールが評価される順に注意してください。 プールの評価は、delay_access の登録順では無く、プール番号順となります。

参考: