Submitted by admin on 2012, February 6, 10:53 AM
squid限制带宽
squid限制带宽
关于设定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 的所有使用者单一带宽,并对总的带宽作以限制
本文来自: E点废墟(www.xok.la) 详细出处参考:http://xok.la/2008/03/squid_limlit_band.html
class类型1为单个IP地址流量
class类型2为C类网段中的每个IP地址流量
class类型3为B类网段中的每个C类网段中的每个IP地址流量
所以
类型1只有一个总带宽流量实际也就是这个IP地址的流量
delay_parameters 1 64000/64000
类型2有两个带宽流量参数,第一个为整个C类型网段流量,第二个为每个IP流量
delay_parameters 1 -1/-1 64000/64000
类型3有三个带宽流量参数,第一个为整个B类网总流量,第二个为每个B类网段中的C类网段总流量,第三个为了B类网段中每个C类网段中的每个IP流量
delay_parameters 1 -1/-1 -1/-1 64000/64000
注: -1/-1表示流量无限制。 斜杆前后两个参数为最小流量与最大流量.
所以看你的情况需要,你只有一个IP地址就用类型1,有一个C类网段就用类型2,有一个B类网段就用类型3.
似乎可以通过将IP地址分组对分别给予不等的带宽;
原文如下:
You can also use delay pools to provide different classes of service. For example, you might have important users and unimportant users. In this case, you could use two class 1 delay pools. Give the important users a higher bandwidth limit than everyone else:
delay_pools 2
delay_class 1 1
delay_class 2 1
delay_parameters 1 65536/1048576
delay_parameters 2 10000/50000
acl ImportantUsers src 192.168.8.0/22
acl All src 0/0
delay_access 1 allow ImportantUsers
delay_access 2 allow All
squid/缓存 | 评论:0
| Trackbacks:0
| 阅读:866
Submitted by admin on 2012, February 4, 9:37 PM
服务器防盗链设置,从最简单的referer判断,到进阶的key+time生成md5值,应该说是比较可靠了,而还有一种防盗链方式,基于IP/COOKIE的,这个我没找到太多有用信息,似乎IIS有个相关插件?
只看到一篇squid的相关文章,简单的举了个防盗链的例子,未必有效(因为把cookie做明文处理,相比md5加密实在是防君子不防小人)。倒是从中学习一下external_acl_type用法,对squid进阶一番罢~~
首先按惯例,上权威:《squid中文权威指南》6.1.3章节和12.5章节。
用法如右:external_acl_type name [options] FORMAT.. /path/to/helper
[helper arguments..]
options包括:ttl、negtive_ttl、children、concurrency、cache和grace;
FORMAT包括:%LOGIN,%EXT_USER,%IDENT,%SRC,%SRCPORT,%DST,%PROTO,%PORT,%METHOD,%MYADDR,%MYPORT,%PATH,%USER_CERT,%USER_CERTCHAIN,%USER_CERT_xx,%USER_CA_xx,%{Header},%{Hdr:member},%{Hdr:;member},%ACL,%DATA。
外部程序输出结果必须是OK或者ERR,不过可以再带上一些keyword,比如user/passwd,ERR的messages,access.log里记录的%ea等等。
cookie防盗链举例squid/libexec/check_cookie.pl如下:
#!/usr/bin/perl -w
# 这个脚本仅仅是验证了Cache这个cookie的存在,没有严格的校验其值。
# disable output buffering
$|=1;
while () {
chop;
$cookie=$_;
if( $cookie =~ /$COOKIE/i)
{
print “OKn”;
} else { print “ERRn”;
}
}
squid.conf配置如下:
external_acl_type download children=15 %{Cookie}
squid/libexec/check_cookie.pl
acl dl external download
acl filetype url_regex -i .wmv .wma .asf .asx .avi .mp3
.smi .rm .ram .rmvb .swf .mpg .mpeg .mov .zip .mid
http_access deny filetype !dl
回过头来,想到之前的squid_session一文中,也是用的这个外部ACL~~
squid/缓存 | 评论:0
| Trackbacks:0
| 阅读:745
Submitted by admin on 2012, February 4, 4:03 PM
curl_getinfo返回信息
返回的数组中包括了以下信息:
"url"//资源网络地址
"content_type"//内容编码
"http_code"//HTTP状态码
"header_size"//header的大小
"request_size"//请求的大小
"filetime"//文件创建时间
"ssl_verify_result"//SSL验证结果
"redirect_count"//跳转技术
"total_time"//总耗时
"namelookup_time"//DNS查询耗时
"connect_time"//等待连接耗时
"pretransfer_time"//传输前准备耗时
"size_upload"//上传数据的大小
"size_download"//下载数据的大小
"speed_download"//下载速度
"speed_upload"//上传速度
"download_content_length”//下载内容的长度
"upload_content_length"//上传内容的长度
"starttransfer_time"//开始传输的时间
"redirect_time”//重定向耗时
php | 评论:0
| Trackbacks:0
| 阅读:892
Submitted by admin on 2012, January 31, 10:46 AM
1、修改配置文件
# vi /etc/pam.d/system-auth
增加
auth required pam_tally.so deny=3(deny=N为登录失败N次后锁定用户)
2、在客户端测试
# ssh user@192.168.1.1(user为服务器端的用户,192.168.1.1为主机IP地址)
3、3次后再次测试并用正确密码登录会发现仍不能登录
4、解除锁定方法
在服务器端以root用户登录
执行命令:
# faillog –a ////查看用户登录错误次数
如果超过三次的话,用户不能登录并且此后登录用户错误登录次数还是会增加。
在登录错误次数不满三次时,登录成功后,则这个用户登录错误值将清零,退出后重新ssh登录将采用新的计数。
# faillog -u user –r ////清空指定用户user的错误登录次数
# faillog –r ////清空所有用户错误登录次数
------------------------------------
测试系统 :Asianux 3.0 sp2 x86
kernel : 2.6.18-128.7
pam版本:pam-0.99.6.2-4.1AXS3
操作方法:
一、在字符终端下,实现某一用户连续错误登陆N次后,就锁定该用户X分钟。
执行 vi /etc/pam.d/login
在#%PAM-1.0 下新起一行,加入
auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=10
如果不限制root用户,则可以写成
auth required pam_tally2.so deny=3 unlock_time=5
2 |
even_deny_root 也限制root用户; |
3 |
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户; |
4 |
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒; |
5 |
root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒; |
此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。
二、在图形登陆界面下,实现某一用户连续错误登陆N次后,就锁定该用户X分钟。
执行 vi /etc/pam.d/kde
在#%PAM-1.0 下新起一行,加入
auth required pam_tally2.so even_deny_root deny=3 unlock_time=5 root_unlock_time=10
如果不限制root用户,则可以写成
auth required pam_tally2.so deny=3 unlock_time=5
三、也可以直接在 system-auth 文件中直接添加这些命令,修改完成后,凡是调用 system-auth 文件的服务,都会生效。因为有自动解锁时间,所以,不用担心全部限制后,会出现永远无法登陆的“尴尬”情况。
备注:
可以使用 pam_tally2 -r -u username 命令,手动清除某用户记录次数。
关于 pam_tally 的用法,可参考下面链接:
http://www.edward-han.com/166.html
linux | 评论:0
| Trackbacks:0
| 阅读:2408
Submitted by admin on 2012, January 31, 9:43 AM
windows 的问题你真的好好弄了,问题真的不是一般的多,这个补丁的,那个补丁的,多的让人头痛,诶、、、今天出现 updatebr.inf文件无效,网上查询,发现是没安装一个windows installer这个补丁的问题.补丁编号为KB942288.
补丁下载地址:
For Windows XP Service Pack 2 and Windows XP Service Pack 3 (32-bit platforms):
32bit:
http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsXP-KB942288-v3-x86.exe
For Windows Vista, Windows Vista Service Pack 1 and Windows Server 2008:
32bit
http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/Windows6.0-KB942288-v2-x86.msu
64bit
http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/Windows6.0-KB942288-v2-x64.msu
For Windows Server 2003 Service Pack 1, Windows Server 2003 Service Pack 2 and Windows XP 64-bit Editions:
32bit
http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsServer2003-KB942288-v4-x86.exe
64bit
http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsServer2003-KB942288-v4-x64.exe
转
-------------------
在安装 WindowsXP-KB942288-v3-x86.exe 出现,下载V4的安装完成
----------------------------------
造成这一问题的原因是确认Windows文件认证的Cryptographic服务不能正常工作。
而安装系统漏洞补丁时,Windows需要利用该服务检验补丁安装文件是否经过微软认证,解决方法是:
首先,打开“管理工具”→“服务”管理器,在服务管理器的主窗口服务列表中,找到名称为“Cryptographic Services”的服务项,双击该服务项,在弹出的该服务项属性对话框中,单击“停止”按钮,停止该服务。
接下来,在资源管理器中,打开系统安装目录\System32\文件夹,在该文件夹下,找到名为“catroot2”的文件夹,将其删除或重命名。最后在服务管理器中,将“Cryptographic Services”服务启动,并安装系统漏洞补丁,一般就可以正常安装系统补丁了
|
windows | 评论:0
| Trackbacks:0
| 阅读:2288
Submitted by admin on 2012, January 28, 3:34 PM
SetEnvIfNoCase Referer "51099.com" local_ref=1
Order Allow,Deny
Allow from env=local_ref
外部网站调用论坛的图片会跳转到另一张图:
ErrorDocument 403 http://www.51099.com/error.gif
------------------------------------------
使用.htaccess禁止盗链
通过.htaccess来防止网站的图片、压缩文件、或视频等非Html文件被盗链的方法相当简单,通过在该文件中加入几句命令即可保护我们宝贵的带宽。例如本站的设置如下:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !webeta.cn [NC]
RewriteCond %{HTTP_REFERER} !ikuaizi.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteRule .*.(gif|jpg)$ http://domain.com/no.png [R,NC,L]
简单的解释一下上述语句:
1、RewriteCond %{HTTP_REFERER} !^$ [NC]
允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。
2、RewriteCond %{HTTP_REFERER} !domain.com [NC]
设置允许访问的HTTP来源,包括我们的站点自身、Google、Baidu、Bloglines、Feedburner等。
3、RewriteRule .*.(gif|jpg|png)$ http://domain.com/no.png [R,NC,L]
定义被盗链时替代的图片,让所有盗链 jpg、gif、png 等文件的网页,显示根目录下的 no.png 文件。注意:替换显示的图片不要放在设置防盗链的目录中,并且该图片文件体积越小越好。当然你也可以不设置替换图片,而是使用下面的语句即可:
RewriteRule .*.(gif|jpg|png)$ - [F]
4、说明一下其中的R、NC 和 L
R 就是转向的意思
NC 指的是不区分大小写
L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响
5、防止盗链的文件类型
上例中是 gif、jpg、png,而根据需要,可更改或添加其他文件类型,如rar、mov等,不同文件扩展名间使用“|”分割。
这样的话,就可以基本做到简单的防止被盗链情况的发生,而且可以尽最大可能的减少服务器流量的无畏消耗,当然了,如果你不在意这点流量的话,那么可以不用考虑上述设置啦!
apache/web | 评论:0
| Trackbacks:0
| 阅读:918
Submitted by admin on 2012, January 28, 3:31 PM
首先看一个完整代码示例,关于nginx 301 302跳转的。
301跳转设置:
server {
listen 80;
server_name 123.com;
rewrite ^/(.*) http://456.com/$1 permanent;
access_log off;
}
302跳转设置:
server {
listen 80;
server_name 123.com;
rewrite ^/(.*) http://456.com/$1 redirect;
access_log off;
}
在看下关于nginx 301 302跳转的详细说明文档
server {
server_name test.com;
rewrite ^/(.*) http://www.test1.com/$1 permanent;
}
last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301
Nginx的重定向用到了Nginx的HttpRewriteModule,下面简单解释以下如何使用的方法:
rewrite命令
nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下:
rewrite 正则表达式 替换目标 flag标记
flag标记可以用以下几种格式:
last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301
例如下面这段设定nginx将某个目录下面的文件重定向到另一个目录,$2对应第二个括号(.*)中对应的字符串:
location /download/ {
rewrite ^(/download/.*)/m/(.*)\..*$ $1/nginx-rewrite/$2.gz break;
}
nginx重定向的IF条件判断
在server和location两种情况下可以使用nginx的IF条件判断,条件可以为以下几种:
正则表达式
如:
匹配判断
~ 为区分大小写匹配; !~为区分大小写不匹配
~* 为不区分大小写匹配;!~为不区分大小写不匹配
例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /nginx-ie/$1 break;
}
文件和目录判断
-f和!-f判断是否存在文件
-d和!-d判断是否存在目录
-e和!-e判断是否存在文件或目录
-x和!-x判断文件是否可执行
例如下面设定nginx在文件和目录不存在的时候重定向:
if (!-e $request_filename) {
proxy_pass http://127.0.0.1;
}
return
返回http代码,例如设置nginx防盗链:
location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.test.com www.test1.com;
if ($invalid_referer) {
return 404;
}
}
nginx | 评论:0
| Trackbacks:0
| 阅读:1009
Submitted by admin on 2012, January 28, 9:50 AM
一般的防盗链如下:
location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.51099.com 51099.com ;
if ($invalid_referer) {
rewrite ^/ http://www.51099.com/retrun.html;
#return 403;
}
}
第一行:gif|jpg|png|swf|flv
表示对gif、jpg、png、swf、flv后缀的文件实行防盗链
第二行: 表示对51099.com www.51099.com这2个来路进行判断
if{}里面内容的意思是,如果来路不是指定来路就跳转到http://www.51099.com/retrun.html页面,当然直接返回403也是可以的。
二:针对图片目录防止盗链
location /images/ {
alias /data/images/;
valid_referers none blocked server_names *.xok.la xok.la ;
if ($invalid_referer) {return 403;}
}
三:使用第三方模块ngx_http_accesskey_module实现Nginx防盗链
实现方法如下:
实现方法如下:
1. 下载NginxHttpAccessKeyModule模块文件:Nginx-accesskey-2.0.3.tar.gz;
2. 解压此文件后,找到nginx-accesskey-2.0.3下的config文件。编辑此文件:替换其中的”$HTTP_ACCESSKEY_MODULE”为”ngx_http_accesskey_module”;
3. 用一下参数重新编译nginx:
./configure --add-module=path/to/nginx-accesskey
4. 修改nginx的conf文件,添加以下几行:
location /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "mypass$remote_addr";
}
其中:
accesskey为模块开关;
accesskey_hashmethod为加密方式MD5或者SHA-1;
accesskey_arg为url中的关键字参数;
accesskey_signature为加密值,此处为mypass和访问IP构成的字符串。
访问测试脚本download.php:
<?
$ipkey= md5("mypass".$_SERVER['REMOTE_ADDR']);
$output_add_key="<a href=http://www.51099.com/download/G3200507120520LM.rar?key=".$ipkey.">download_add_key</a><br />";
$output_org_url="<a href=http://www.51099.com/download/G3200507120520LM.rar>download_org_path</a><br />";
echo $output_add_key;
echo $output_org_url;
?>
访问第一个download_add_key链接可以正常下载,第二个链接download_org_path会返回403 Forbidden错误。
参考:
NginxHttpAccessKeyModule
nginx | 评论:0
| Trackbacks:0
| 阅读:931