编译加-enable-delay-pools选项
添加以下行:
delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 50000/50000 # 限制网速在50K以内
delay_initial_bucket_level 50
--------------------------------------
今天测试了一下squid使用delay_pools来对源网站的访问进行限速.非常好用,如下
使用squid建二个源网站
1
2
3
4
5
6
|
acl php-oa url_regex -i ^http: // .*php-oa.com/.* acl sudo -u url_regex -i ^http: // .* sudo -u.com/.* http_access allow mysite http_access allow sudo -u http_access deny all icp_access allow all |
下面开始正文,我们要用到squid中的delay_pools,delay_pools里可以定义多个容器(多个源定义多个),而这个容器就是我们要控制的带宽,当容器到达所设定的容量时,这个容器的所有者就无法超过我们所设定的带宽限制.
开始设置squid的delay_pools
01
02
03
04
05
06
07
08
09
10
11
|
delay_pools 2 #设置二个pools来对二个源进行控制 delay_class 1 2 #设置第一个pools中的地址为C类网段中的每个IP地址流量 delay_access 1 allow php-oa delay_access 1 deny all delay_parameters 1 64000 /64000 64000 /32000 #连接php-oa总速度64000,每个ip可以3200的速度 delay_class 2 1 delay_access 2 allow sudo -u delay_access 2 deny all delay_parameters 2 32000 /16000 #客户端下载sudo-u.com这个网站的总速度为1600,但squid连接源网站速度为32000 |
class定义:
class类型1为单个IP地址流量
class类型2为C类网段中的每个IP地址流量
class类型3为B类网段中的每个C类网段中的每个IP地址流量
delay_parameters语法:
类型1只有一个总带宽流量实际也就是这个IP地址的流量
delay_parameters pool total
例:delay_parameters 1 64000/64000
类型2有两个带宽流量参数,第一个为整个C类型网段流量,第二个为每个IP流量
delay_parameters pool tatal per-host
例:delay_parameters 1 -1/-1 64000/64000
类型3有三个带宽流量参数,第一个为整个B类网总流量,第二个为每个B类网段中的C类网段总流量,第三个为了B类网段中每个C类网段中的每个IP流量
delay_parameters pool total network per-host
例:delay_parameters 1 -1/-1 -1/-1 64000/64000
注: -1/-1表示流量无限制.每个delay_parameters的数值是由"回源站的速度/客户最大下载速度"组成
另外,对HIT的文件没有作用
----------------------------
UserDefine
acl vip src 192.168.24.0/255.255.255.0
acl normal_users src 192.168.11.232 192.168.11.211 192.168.11.231
acl vip_sc200 src 192.168.23.211 192.168.23.112
acl banneduser src 192.168.9.100
acl vip_me src 192.168.9.30
acl test src 192.168.100.250
acl all src 0.0.0.0/0
# define download files extension
acl disable_extension urlpath_regex -i \.mp3$ \.avi$ \.rmvb$ \.rm$ \.ra$ \.ram$ \.mpe$ \.smi$ \.mpeg$ \.wmv$ \.wma$ \.3gp$ \.td$ \.t
# define disable site dstdomain files.
# define disable ip for domain file
#Port Define
http_port 88
cache_mgr 5111
visible_hostname ifc-proxy
#HttpAccess
http_access allow vip
http_access allow vip_me
http_access deny disable_extension
#MaxConn Define
acl num_conn maxconn 5
acl num_conn2 maxconn 20
#HttpAccess MaxConn Define
http_access deny normal_users num_conn
http_access deny test num_conn
http_access deny vip_sc200 num_conn2
#SpeedControl
delay_pools 4
delay_class 1 3
delay_class 2 3
delay_class 3 2
delay_class 4 3
delay_access 1 allow vip_sc200
delay_access 2 allow normal_users
delay_access 3 allow test
delay_access 4 allow all
delay_parameters 1 128000/128000 -1/-1 32000/64000
delay_parameters 2 64000/64000 -1/-1 8000/64000
delay_parameters 3 64000/64000 8000/64000
delay_parameters 4 1/1 1/1 1/1
前面一长段可以不看,看最后的一段,下面是注释
delay_pools 4 //表示有4个限制池,或者说对4种不同的目标限制
delay_class 1 3
delay_class 2 3
delay_class 3 2
delay_class 4 3 //上面的4行分别声明了四个池的类型,池1,2,4用于B类网段控制,池3用于C类网段控制,另外如果声明类型为class n 1表示控制单个ip地址
delay_access 1 allow vip_sc200
delay_access 2 allow normal_users
delay_access 3 allow test
delay_access 4 allow all //这几行分别对一开始定义的四个用户组进行限速,分别应用1,2,3,4号限制池
delay_parameters 1 128000/128000 -1/-1 32000/64000
delay_parameters 2 64000/64000 -1/-1 8000/64000
delay_parameters 3 64000/64000 8000/64000
delay_parameters 4 1/1 1/1 1/1
这四行分别声明了1,2,3,4号限制池的速度限制大小,比如第一个,我们前面声明的是B类网段,所以他的格式大概就是
delay_parameters 限制池号 本池最大速度 网段最大速度 单个ip最大速度
至于限制C类段的就少个网段最大速度,格式为
delay_parameters 限制池号 本池最大速度 单个ip最大速度
可能说的不太清楚,如果看不懂的可以参考下面的内容
关于设定SQUID带宽限制和流量整形,刻利用squid.conf种的delay_pools字段来完成.
delay pools里的bucket就像是一个容器,而这个容器就是squid要控制带宽用的,当容器到达所设定的容量时,这个容器的所有者就无法超过我们所设定的带宽限制,所有的bucket则称之为unified bucket.
Class分为三种:
(1)Class 1:包含一个unified bucket,而这个bucket是给这个class里所定义的host使用.
(2)Class 2:包含一个unified bucket和255个buckets,每一个bucket分配给8bit网络的使用者(255 hosts)使用IPv4 class C).
(3)Class 3:包含255个buckets,每一个bucket分配给16bit网络的使用者(65535 hosts)使用(IPv4 class B).
(1)Class 1:contains a single unified bucket which is used for all requests from hosts subject to the pool
(2)Class 2:contains one unified bucket and 255 buckets, one for each host on an 8-bit network (IPv4 class C)
(3)Class 3:contains 255 buckets for the subnets in a 16-bit network, and individual buckets for every host on these networks (IPv4 class B)
推测:如果ACL只定义一个class C字段,要限制每个host的单一带宽,可以使用Class 2来做;但如果ACL有定义好几个class C字段,使用Class 3可再对各个class C字段做个别的总带宽限制
delay_parameters语法:
class 1 delay pool;
delay_parameters pool total
class 2 delay pool;
delay_parameters pool tatal per-host
class 3 delay pool;
delay_parameters pool total network per-host
每个delay_parameters的数值是由restore(byte/sec)/max(bytes)组成,restore是表示以bytes/sec的速度下载object到bucket里,而max则表示bucket的bytes值.
备注1:如果要设定为unilit speed的话,将数值设定为-1即可
备注2:SQUID FAQ中有提到,建议max至少要设为restore的两倍(It is recommended that the maximum is at least twice the restore value)
[设定文档格式说明]
acl all src 0.0.0.0/0.0.0.0
acl lan src 192.168.1.0/255.255.255.0 # 定义 ACL
delay_pools n # 总共有几个 delay_pools
delay_class n1 1 # 第 n1 个 delay_pool 的种类是 Class 1
delay_class n2 3 # 第 n2 个 delay_pool 的种类是 Class 3
delay_class n3 2 # 第 n3 个 delay_pool 的种类是 Class 2
delay_access n1 allow lan
delay_access n1 deny all # 定义 delay_pool n1 的 access rule
delay_parameters n1 64000/64000 # 定义 delay_pool n1 的速度限制,依 class 的不同有不同的定义方式 (请参照上面的说明)
[范例说明]
1. 限制限制带宽为 512 Kbps
acl all src 0.0.0.0/0.0.0.0 # might already be defined
delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 64000/64000 # 512 kbits == 64 kbytes per second
2. 限制限制单一的带宽为 128 Kbps
acl only128kusers src 192.168.1.0/255.255.192.0
acl all src 0.0.0.0/0.0.0.0
delay_pools 1
delay_class 1 3
delay_access 1 allow only128kusers
delay_access 1 deny all
delay_parameters 1 64000/64000 -1/-1 16000/64000
3. 对某些特定的网站设置不通的带宽限制 (自己尝试一下,如果有错误请自行修改)
acl lan_use src 192.168.1.0/255.255.255.0 # 设置 LAN 使用者的 ACL
acl kkbox dstdomain .kkbox.com.tw # 设置特定域名的 ACL
delay_pools 2 # 设置两个 delay_pools
delay_class 1 1 # 第一个是 Class 1 的,用來限制总带宽
delay_class 2 2 # 第二个是 Class 2 的,用来限制单一的带宽
delay_access 1 allow kkbox
delay_access 1 deny all
delay_access 2 allow lan_use
delay_access 2 deny all
delay_parameters 1 64000/64000 # 不限制指定域名的单一带宽,但对总带宽速作限制
delay_parameters 2 64000/64000 10000/50000 # 限制 LAN 的所有使用者单一带宽,并对总的带宽作以限制