设为首页 收藏本站
查看: 1066|回复: 0

[经验分享] squid流量限制

[复制链接]

尚未签到

发表于 2018-12-26 08:08:46 | 显示全部楼层 |阅读模式
配置squid代理,用的是直接编译,不是用port安装的。今天想对某些用户进行流量控制,  发现delay_pool不起作用,原来是要编译的时候要加enable选项–enable-delay-pools ,郁闷。
  下面是一篇很好的配置说明
  ----------------------------------------
  Squid 是一种源代码开放的高性能代理缓存服务器。它可支持FTP,gopher和Http数据对象的代理。另外,Squid也支持SSL,多样化访问控制和代理请求的完整日志功能。通过轻量级的网际缓存协议,Squid以网状或层次的方式分配内存,这样能节省额外的带宽。提供Http服务加速代理,Web服务器把Http数据推到Squid缓存中,外界的请求访问可以通过缓存提取所需数据,实现Web服务器的动态镜像。
  另外,为了实现对Squid服务器的监控,采用MRTG。MRTG 是 Multi Router Traffic Grapher 的缩写,它主要的用途是监测网络服务设备的流量,并生成包括图片的HTML文件,可以直观的显示网络服务的流量,以提供Squid缓存服务的监测。
  通过Squid+MRTG可以配置一个完善的代理服务提供方案。下面为具体配置步骤:
  一.基础准备
  Squid下载地址:http://www.squid-cache.org
  版本:squid-2.4.STABLE4-src.tar.gz
  MRTG下载地址:http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/
  版本:mrtg-2.9.22.tar.gz
  机器配置为:256M内存,9G硬盘(其中4G分区专用缓存目录),PII433。
  二.安装步骤
  解压Squid(一般做法,把软件包括在/opt目录下)
  #tar zxvf squid-2.4.STABLE4-src.tar.gz
  #cd squid
  //进行编译
  #./configure –prefix=/usr/local/squid –enable-delay-pools –enable-snmp –enable-cache-digests –enable-auth-modules=”NCSA”
  #make all
  #make install
  *对编译项目的解释:
  –prefix 为编译Squid所存放的目录,这里为/usr/local/squid
  –enable-delay-pools 此选项使能一个延时池,这样能对某些特定的请求限制额定带宽。
  –enable-snmp 此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid支持SNMP接口。
  –enable-cache-digests 使能缓存摘要,本来此项目的是为了在Squid集群服务之间迅速发现缓存对象,这里在本地使用,可以加快请求时,检索缓存内容的速度。
  –enable-auth-modules 此编译选项启用认证模块,可以对访问代理用户进行授权。
  安装MRTG
  #tar zxvf mrtg-2.9.22.tar.gz
  #cd mrtg*
  #./configure –prefix=/usr/local/mrtg-2
  #make
  #make install
  /* 几点说明:
  1.MRTG大部分程序是用Perl脚本写成,需要Perl版本为5.005以上才能运行,RH 7.2带有perl版本为v5.6.0,非常满足要求。(如果版本不够,请到www.perl.com下载安装。)
  2. MRTG需要zlib,gd和libpng三个处理图形的库支持,RH7.2满足此要求。(如果没有安装,请到http: //www.boutell.com/gd/ http://www.libpng.org/pub/png/src/ http://www.gzip.org/zlib 下载安装)
  三.具体配置
  lSquid配置(仅对必要选项配置并说明):
  http_port 80
  此选项用于Squid代理所侦听的端口,由于要实现Http加速代理,则侦听端口80
  tcp_outgoing_address 255.255.255.255
  此句法指定了远程服务器的IP地址,这里我们使用255.255.255.255来指定为所有地址
  tcp_incoming_address
  这里可以使用http_port语法进行绑定端口和IP地址。表示客户端的请求。可以不使用。
  cache_mem 64 MB
  由于Squid在读写磁盘,I/O通道,数据转贮等需要大量内存,我们可以把内存值稍微设置大一些,这样可以提供服务器性能。
  cache_swap_low 95
  这用做表示缓存内部对象的替换的衡量基线。当交换分区的磁盘利用率超越这个基线,那么缓存对象替换也就随之开始。这里是用百分率做衡量标准。
  cache_swap_high 98
  此标记用于缓存对象替换的最高程度,当交换分区磁盘利用率接近此设置,则表示对象的更新程度更为剧烈。这里由于我的缓存区设置比较大,因此设置为98%。
  下面几个配置标记采用系统默认配置。
  { maximum_object_size 4096 KB
  { 超过此尺寸的对象将不缓存。
  { minimum_object_size 0 KB
  { 小于此尺寸的对象将不缓存。
  { maximum_object_size_in_memory 8 KB
  { 内存中能缓存的最大对象尺寸。
  { ipcache_size 1024
  { 指定IP缓存大小。
  { ipcache_low 90
  { 缓存IP地址的最低基线。
  { ipcache_high 95
  { 缓存IP地址的最高极限。
  { fqdncache_size 1024
  { 缓存DNS全域名解析的尺寸。
  cache_replacement_policy lru
  此标记用于当缓存新对象时,使用缓存策略来清除缓存中特定对象。这里使用lru表示:它只替换长时间没有被访问过的对象。其他策略请参看配置文档介绍。
  memory_replacement_policy lru
  此用法同上,区别在于替换内存对象。
  cache_dir ufs /cache 4000 16 256
  设置缓存根目录为/cache,类型为ufs,缓存区大小为4G,可以有16个二级子目录,每有二级目录有256个三级子目录。
  cache_access_log /var/log/squid/access.log
  cache_log /var/log/squid/cache.log
  cache_store_log /var/log/squid/store.log
  cache_swap_log /var/log/squid/swap.log
  上面几项是缓存日志记录的路径和文件名。
  log_ip_on_direct on
  记录客户端主机的IP地址。
  log_fqdn on
  记录全DNS域名解析。
  mime_table /usr/local/squid/etc/mime.conf
  Squid所用mime的文件路径
  pid_filename /usr/local/squid/logs/squid.pid
  Squid进程ID的文件。
  ftp_user Squid@ynst.net.cn
  这里可以使用匿名登陆FTP服务器。
  ftp_list_width 32
  FTP文件列表长度,超过长度则截断文件名。
  ftp_passive on
  允许主动连接FTP服务器。
  dns_nameservers 202.98.187.1
  指定代理的域名解析服务器。
  authenticate_program /usr/local/squid/bin/ncsa_auth
  /usr/local/squid/etc/passwd
  代理认证程序,这里在/usr/local/squid/etc使用htpasswd产生一个密码文件,具体方法如下:
  #htpasswd –cdb passwd auth_usr1 pass1
  #htpasswd –db passwd auth_usr2 pass2
  #htpasswd –db passwd auth_usr3 pass3
  创建passwd文件,并添加auth_usr1,auth_usr2,auth_usr3三个认证用户。
  authenticate_children 5
  所需要要产生的认证进程数。
  authenticate_ttl 3600
  此标记设置认证保持时间。
  authenticate_ip_ttl 1800
  此标记设置认证绑定IP地址的时间长度。
  authenticate_ip_ttl_is_strict on
  此标记可在authenticate_ttl时间内,拒绝其他非认证IP地址访问。
  request_header_max_size 10 KB
  request_body_max_size 1 MB
  设置了Http请求的包头和数据大小。
  request_body_max_size 0
  这里,请求所返回的数据大小为0,意义为没有任何限制。
  connect_timeout 180 seconds
  read_timeout 15 minutes
  request_timeout 20 seconds
  上面几项是代理服务几个超时设置,这里使用配置文件默认值。
  下面是访问控制列表一些配置,这里对访问的IP地址,域名,访问类型极其访问代理的权限做的限制:
  acl acldomain dstdomain .ynst.net.cn
  acl acceleratedport port 80
  acl acceleratedhost dst 202.98.187.17/255.255.255.255
  acl aclprotocol proto HTTP FTP
  acl aclmethod method GET POST
  acl aclauth proxy_auth required
  (注:这里使用required表示任何passwd文件中存在的合法用户才授予访问权限。)
  acl aclsnmp snmp_community secrect
  MRTG可以使用snmp协议检测此代理服务运行状态。
  acl aclconn maxconn 20
  可并行连接的最大数量。
  启用定义的访问控制列表
  http_access allow manager localhost
  http_access deny manager
  http_access allow aclauth
  http_access allow acceleratedport acceleratedhost
  http_access deny all
  下面为缓存管理设置
  cache_mgr admin@ynst.net.cn
  设置缓存管理者的接受邮件地址。
  cache_effective_user squidusr
  cache_effective_group squidgrp
  设置执行Squid的用户和用户组。
  {注:设置用户和用户组及其权限修改方法如下:
  #groupadd squidgrp
  #useradd –g squidgrp –d /home/squidusr squidusr
  修改log日志权限属性,使squidusr有写权限。
  #chown squidusr /var/log/squid
  #chgrp squidgrp /var/log/squid
  #chown squidusr /var/log/squid/*.log
  #chown squidgrp /var/log/squid/*.log
  }
  下面配置Http服务加速代理
  httpd_accel_host 202.98.187.17
  httpd_accel_port 80
  httpd_accel_with_proxy on
  (注:如果配置代理和加速服务,必须httpd_accel_with_proxy选项打开。如果需要配置多个加速,可以使用虚拟的概念。)
  snmp_port 3401
  此标记设置snmp_port端口为3401,可以使MRTG监测服务运行状态。
  snmp_access allow aclsnmp localhost
  snmp_access deny all
  snmp_incoming_address 0.0.0.0
  snmp_outgoing_address 0.0.0.0
  以上选项用于配置和MRTG交互信息的Snmp设置。
  digest_generation on
  digest_rebuild period 1 hour
  digest_rewrite_period 1 hour
  digest_swapout_chunk_size 4096 bytes
  digest_rebuild_chunk_percentage 10
  产生缓存摘要,并设置摘要重构所需要的时间及其相关设置,这里采用系统默认设置。缓存摘要使的庞大的缓存内容形成一个微型检索,提高代理性能。
  最后我们进行延迟队列池进行配置
  延迟队列池可以基于一定规则对特定请求数据的进行限制,这样可以防止恶意用户发送非正规数据串***服务器。
  以下选项只在必要处进行说明,配置如下:
  delay_pools 1 #定义一个池
  delay_class 1 1 #池为1类型
  delay_access 1 allow all #允许类型1的所有请求访问
  delay_parameters 1 128000/128000 #限制访问的128k/s
  delay_initial_bucket_level 50 #Squid启动时,初始化池所用的带宽数量。
  运行Squid代理服务:
  #squid –z /*创建Squid所使用的缓存目录结构
  如果想在前台运行
  #squid –NCdl
  如果想在后台运行
  #squid
  检查Squid是否运行
  #squid –k check
  lMRTG配置:
  首先测试SNMP服务是否启动:
  #snmpwalk -p 3401 hostname communitystring .1.3.6.1.4.1.3495.1.1
  如果看到如下输出:
  enterprises.nlanr.squid.cacheSystem.cacheSysVMsize = 7970816
  enterprises.nlanr.squid.cacheSystem.cacheSysStorage = 2796142
  enterprises.nlanr.squid.cacheSystem.cacheUptime = Timeticks: (766299) 2:07:42.99
  则说明SNMP正常工作。
  按照mrtg.hdl.com的文档,使用cfgmaker和indexmaker就可以生成MRTG所需要的Web发布文件。使用cfgmaker可以创建配置MRTG所需要的配置文件,而Indexmaker则是检索MRTG生成的Web文件,制作一个Index.html。这里,我提供一种更为简洁的办法:
  (感谢Chris提供的mrtg-squid.cfg文件和index.html,可到http://www.psychofx.com/chris/unix/mrtg/ 下载这两个文件。)
  修改mrtg-squid.cfg文件选项如下:
  修改 WorkDir 和 LoadMIBs 路径设置
  修改所有出现在文件中的"hostname" 为你实际服务器名字
  修改所有 "chris"字段为你需要的名字和地址
  修改community 字串属性
  这里配置如下:
  WorkDir: /home/www/mrtg/squid
  LoadMIBs: /usr/local/squid/etc/mib.txt
  所有public@hostname修改secrect@proxysvr
  创建/home/www/mrtg/squid这样一个目录。
  #mkdir /home/www/mrtg/squid
  #cd /home/www/mrtg/squid
  #cp /opt/mrtg-squid.cfg .
  #mrtg mrtg-squid.cfg
  #cp /opt/index.html .
  修改/etc/httpd/conf/httpd.conf如下几个选项
  Listen 8000
  Port 8000
  Documentroot /home/www/mrtg/squid
  由于mrtg读取文件需要资源,因为合理设置读取间隔,这里我设置为5分钟:
  crontab –e
  */5 * * * * /usr/local/mrtg-2/bin/mrtg /home/www/mrtg/squid/mrtg-squid.cfg
  这样,我们就建立了一个完善的代理加速访问服务器,通过mrtg的强大监控,可以统计服务器运行时设备运行状态。由于以上软件遵从GNU,因此一种强大而有经济的建站手段。通过认证控制,允许特定用户使用代理服务。而Web加速服务器则成为服务器镜像的方便手段。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655882-1-1.html 上篇帖子: Squid 理解 下篇帖子: Squid中的时间和过期
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表