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

[经验分享] RHCE培训笔记——Squid

[复制链接]

尚未签到

发表于 2018-12-26 12:19:16 | 显示全部楼层 |阅读模式
  代理服务是一种特殊的服务,允许客户端通过它与另一个网络服务进行非直接的连接,也称网络代理。提供代理服务的计算机或其他类型的网络节点称为代理服务器,代理服务器中实现网络代理的软件称为代理软件。Linux中用到的代理软件是squid。
  

  本实验平台为Centos 6.2,环境为:
  Squid服务器暨Apache服务器
  主机名:itpro    IP地址:192.168.56.53
  客户端测试机
  主机名:station     IP地址:192.168.56.123
  

  准备工作:
  

  Httpd方面,
  [root@itpro ~]# yum install httpd
  [root@itpro ~]# chkconfig httpd on
  [root@itpro ~]# service httpd start
  同时,在/var/www/html/下创建一个index.html文件,内容随意,用于测试网页访问。
  

  Squid方面,
  [root@itpro ~]# yum install squid
  [root@itpro ~]# chkconfig squid on
  [root@itpro ~]# service squid start
  [root@itpro ~]# ls /var/spool/squid/
  (注:此时的缓存目录为空目录)
  

  一、缓存设置
  

  Squid主配文件/etc/squid/squid.conf中,有一行是用于指定缓存目录设置的,如下
  cache_dir ufs /var/spool/squid 100 16 256
  默认情况下被注释掉了,要将其前面的“#”删除,才能生效。
  其中ufs表示缓存数据的存储格式;
  /var/spool/squid 指缓存目录;
  100 : 缓存目录占磁盘空间大小(M);
  16 :缓存空间一级子目录个数;
  256 :缓存空间二级子目录个数。
  

  修改配置文件,将cache_dir ufs /var/spool/squid 100 16 256前面的#去掉,再重启服务,可以看到/var/spool/squid/下多了16个目录,每个目录里又有256个子目录。
  [root@itpro ~]# service squid restart
  init_cache_dir /var/spool/squid... Starting squid: ......  [  OK  ]
  [root@itpro ~]# ls /var/spool/squid/
  00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F  swap.state
  

  在客户端station,打开firefox浏览器,将其代理服务设置为192.168.53.56:3128,
  然后访问http://192.168.53.56,能看到先前在服务器上创建的index.html的内容,
  表明客户机station通过squid服务器itpro成功访问httpd服务器(也是itpro)。
  刷新页面两次。
  

  在服务器上查看squid访问日志,内容如下:
  [root@itpro ~]# tail /var/log/squid/access.log
  1368574347.237     23 192.168.56.123 TCP_MEM_HIT/200 427 GET http://192.168.56.53/ - NONE/- text/html
  1368574350.174     23 192.168.56.123 TCP_IMS_HIT/304 291 GET http://192.168.56.53/ - NONE/- text/html
  1368574354.157     23 192.168.56.123 TCP_IMS_HIT/304 291 GET http://192.168.56.53/ - NONE/- text/html
  

  其中第一条记录的状态码为200,表示这是squid服务器第一次访问http服务器,由http服务器提供请求的页面。
  第二、三条记录的状态码为304,表示网页内容未修改过,http服务器只返回响应,不返回页面内容,亦即客户端浏览器上看到的是squid里的缓存。
  

  二、访问控制
  

  A、设置1
  

  1.修改记主配文件
  [root@itpro ~]# vim/etc/squid/squid.conf
……省略部分内容……
acl rhca src  192.168.56.123/32  #定义来源主机的acl
#acl rhca dst 192.168.56.53/32
……省略部分内容……
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access deny rhca  #注,这条记录要在http_access allow localnet记录的上面,否则不生效,或者把http_access allow localnet记录注释掉
http_access allow localnet #注,允许本地网络访问,即同一网段的主机都可以访问
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all # squid.conf中,最后一条规则永远是http_access deny all
……省略部分内容……  

  2.修改完成后重启服务
  [root@itpro ~]# service squid reload
  2013/05/15 09:16:09| WARNING cache_mem is larger than total disk cache space!
  

  3.在客户端使用浏览器访问网站主页
  

  4.在服务器上查看squid访问日志报错
  [root@itpro ~]# tail /var/log/squid/access.log
  …………
  1368580343.071      0 192.168.56.123 TCP_DENIED/403 3841 GET http://192.168.56.53/ - NONE/- text/html
  1368580343.096      0 192.168.56.123 TCP_DENIED/403 3919 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
  1368580345.106      0 192.168.56.123 TCP_DENIED/403 3841 GET http://192.168.56.53/ - NONE/- text/html
  1368580345.127      0 192.168.56.123 TCP_DENIED/403 3919 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- text/html
  

  

  B、设置2
  

  1.修改主配文件
[root@itpro ~]# vim/etc/squid/squid.conf
……省略部分内容……
#acl rhca src  192.168.56.123/32
acl rhca dst 192.168.56.53/32 #定义目的主机的acl
……省略部分内容……
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access deny rhca
http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
……省略部分内容……  

  2.修改完成后重启服务
  [root@itpro ~]# service squid reload
  2013/05/15 09:16:09| WARNING cache_mem is larger than total disk cache space!
  

  3.在客户端使用浏览器访问网站主页
  

  4.在服务器上查看squid访问日志报错
  [root@itpro ~]# tail /var/log/squid/access.log
  ……省略部分内容……
  1368580731.245      0 192.168.56.123 TCP_MISS/503 4231 GET http://www.squid-cache.org/Artwork/SN.png - DIRECT/www.squid-cache.org text/html
  1368580731.870      0 192.168.56.123 TCP_DENIED/403 3841 GET http://192.168.56.53/ - NONE/- text/html
  1368580731.877      0 192.168.56.123 TCP_MISS/503 4231 GET http://www.squid-cache.org/Artwork/SN.png - DIRECT/www.squid-cache.org text/html
  

  以上两种情况,客户端浏览器上显示的结果都是“Access Denied”页面,不过,squid服务器的访问日志,收到的httpd服务器返回的状态码是不一样的。404表示的是请求出错,即客户端出错;504表示服务器在处理请求时发生错误,即服务器端的错。
  

  C、其他设置
  以下是摘抄的资料,只有第一点实验验证了。
  

  1. 假如不想让用户访问某个网站应该怎么做呢?可以分为两种情况:一种是不允许用户访问某个站点的某个主机,比如新浪sina的www主机,即www.sina.com,而其它的新浪资源却是允许访问的,那么ACL可以这样写:
  acl  sina-www dstdomain sinapage4.sina.com
  ……
  http_access deny sinapage
  ……
  由此可以看到,除了www,其它如 news.sina.com、bbs.sina.com.cn都可以正常访问。
  另一种情况是整个网站都不许访问,只需要写出这个网站共有的域名即可,配置如下:
  acl sina dstdomain .sina.com
  ……
  http_access deny sina
  ……
  

  注意,sina前面的“.”,正是它指出以此域名结尾的所有主机都不可访问,否则就只有tencent.com.cn这一台主机不能访问。
  

  2. 通过IP地址来识别用户不可靠,比IP地址更好的是网卡的MAC物理地址。要在Squid中使用MAC地址识别,必须在编译时加上 “--enable-arp-acl”选项,然后可以通过以下的语句来识别用户:
  acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b ...
  

  它直接使用用户的MAC地址,而MAC地址一般是不易修改的,即使有普通用户将自己的IP地址改为高级用户也无法通过,所以这种方式比IP地址可靠得多。
  

  3.还有一种比较广泛的控制是文件类型。如果不希望普通用户通过代理服务器下载MP3、AVI等文件,完全可以对他们进行限制,代码如下:
  acl mmxfile urlpath_regex \.mp3$ \.avi$ \.exe$
  http_access deny mmxfile
  

  看到regex,很多读者应该心领神会,因为这条语句使用了标准的规则表达式(又叫正则表达式)。它将匹配所有以.mp3、.avi等结尾的URL请求,还可以用-i参数忽略大小写,例如以下代码:
  acl mmxfile urlpath_regex -i \.mp3$
  这样,无论是.mp3还是.MP3都会被拒绝。当然,-i参数适用于任何可能需要区分大小写的地方,如前面的域名控制。
  

  4.如果想让普通用户只在上班时间可以上网,而且是每周的工作日,用 Squid应当如何处理呢?看看下面的ACL定义:
  acl worktime time MTWHF 8:30-12:00 14:00-18:00
  http_access deny !worktime
  首先定义允许上网的时间是每周工作日(星期一至星期五)的上午和下午的固定时段,然后用http_access 定义所有不在这个时间段内的请求都是不允许的。
  

  5.或者为了保证高级用户的带宽,希望每个用户的并发连接不能太多,以免影响他人,也可以通过Squid控制,代码如下:
  

  acl conncount maxconn 3
  http_access deny conncount normal
  http_access allow normal
  这样,普通用户在某个固定时刻只能同时发起三个连接,从第四个开始,连接将被拒绝。
  总之,Squid的ACL配置非常灵活、强大,更多的控制方式可以参考squid.conf.default。
  

  另,反向代理比较难,未研究实验。
  





运维网声明 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-656078-1-1.html 上篇帖子: squid 经典配置 下篇帖子: squid配置及应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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