cron辅助管理squid

简介: 利用cron的定时功能辅助对squid代理进行上网限制:  1. Squid是我所用过的最好的代理服务器(my opinion)   2. 该文档,该功能只适用于使用静态ip的局域网   3.想要实现的功能:   在工作时间,让一部分办公电脑(allow表中的)上网,在非工作时间,让所有办公电脑上网,定时切换。
利用cron的定时功能辅助对squid代理进行上网限制:

  1. Squid是我所用过的最好的代理服务器(my opinion)

  2. 该文档,该功能只适用于使用静态ip的局域网

  3.想要实现的功能:

  在工作时间,让一部分办公电脑(allow表中的)上网,在非工作时间,让所有办公电脑上网,定时切换。

  工作时间worktime):8:00~11:30(周1-周5)以及13:00~17:00(周1-周5),让一部分办公电脑(allow表中的)上网。非工作时间(notworktime):11:31~12:59(周1-周5)以及17:01(当日)~7:59(次日)(周1-周5)、(周6-周7),让所有办公电脑上网。

step 1:

  vi /etc/crontab,脚本如下


    SHELL=/bin/bash  
    PATH=/sbin:/bin:/usr/sbin:/usr/bin  
    MAILTO=root  
    HOME=/  

    # run-parts  
  01 * * * * root run-parts /etc/cron.hourly  
  02 4 * * * root run-parts /etc/cron.daily  
  22 4 * * 0 root run-parts /etc/cron.weekly  
  42 4 1 * * root run-parts /etc/cron.monthly  
  00 8 * * 1-5 root run-parts /etc/squid/worktime  
  30 11 * * 1-5 root run-parts /etc/squid/notworktime  
  00 13 * * 1-5 root run-parts /etc/squid/worktime  
  00 17 * * 1-5 root run-parts /etc/squid/notworktime  
  0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg  
  注:5至8行为后加入的  

  day(第三列*) 和 month(第四列*)被忽略, 即每周一至每周五的那四个时间,那四个cron定时程序启动

step 2:


  cd /etc/squid  
  mkdir worktime  
  vi worktime.job  

  脚本如下


  SHELL=/bin/sh  
  MAILTO=root  
  rm -f /etc/squid/squid.conf 
  #把原来的配置文件删掉  
  cp /etc/squid/worktime.conf /etc/squid/squid.conf 
  #置换成定制的squid.conf  
  /etc/rc.d/init.d/squid restart
  #重启squid,读新的squid.conf文件  

  注:所建目录,及其中的以.job为扩展名的文件是cron daemon要求的


  mkdir notworktime  
  vi notworktime  

  脚本如下


  SHELL=/bin/sh  
  MAILTO=root  
  rm -f /etc/squid/squid.conf  
  cp -f /etc/squid/notworktime.conf /etc/squid/squid.conf  
  /etc/rc.d/init.d/squid restart  

step 3:

  在/etc/squid下,以squid.conf文件为模板,创建及修改worktime.conf和notworktime


  cp squid.conf worktime.conf
  (拷贝原配置文件并新命名,然后vi worktime.conf)  
  cp squid.conf notworktime.conf  
  vi worktime.conf  

  先:set number,脚本需修改,如下


  47 #Default:  
  48 http_port 80  

  405 #Default:  
  406 cache_mem 64 MB  

  601 #Default:  
  602 cache_dir ufs /var/spool/squid 400 16 256  
  ACCESS CONTROL  
  此处的思想为:先开放(allow)一些,然后在底下全禁(deny all)  
  在临近位置对应添加、修改如下几行  
  1425  
  1426 acl myallow src "/etc/squid/allow"
  (squid会拿有上网请求的ip和此文件中的ip地址列表
  做对比、做查找,如果找到了则允许其上网,否则
  deny.允许上网的机器的ip都在这里)  

  1427  
  1428 acl denymine urlpath_regex .exe .zip(禁止下载.exe和.zip的文件)  

  1458 http_access allow myallow  
  1459 http_access deny denymine  

  1468 http_access allow localhost  
  1469 http_access deny all  

  vi notwortime,先:set number,脚本需修改,如下:


  47 #Default:  
  48 http_port 80  

  405 #Default:  
  406 cache_mem 64 MB  

  601 #Default:  
  602 cache_dir ufs /var/spool/squid 400 16 256  

  ACCESS CONTROL  
  在临近位置对应添加如下几行  
  1422 acl mynet src 192.168.1.0/255.255.255.0  
  1425  

  1456 http_access allow manager localhost  
  1457 http_access deny manager  
  1458 http_access allow mynet (让本网段的机器上网)  

  1470 http_access allow localhost  
  1471 http_access deny all  

step 4:

  在/etc/squid下创建allow文件,vi allow,脚本如下


  192.168.1.124  
  192.168.1.123  

  192.168.1.138(临时上网的,临时在此文件的后面添加其ip)  
  注:每行只能有一个ip  

  final:总结一下,就是利用cron的定时功能去定时置换squid的配置文件,新的配置文件对上网的权限进行设置。

  Dr.li instructed
  Mymail:luanyc@bk.net.cn
  狐狸宝宝捣蛋

 
目录
相关文章
|
9月前
|
监控 应用服务中间件 Shell
监测Nginx访问日志502情况,并做相应动作
监测Nginx访问日志502情况,并做相应动作
130 1
|
11月前
|
存储 应用服务中间件 Shell
shell+定时任务+nginx信号管理实现日志按日期切割存储
shell+定时任务+nginx信号管理实现日志按日期切割存储
|
应用服务中间件 Shell nginx
按天维度切割Nginx访问日志shell脚本
按天维度切割Nginx访问日志shell脚本
79 0
vsftpd目录限制chroot(用户隔离)500错误分析以及解决方案
vsftpd目录限制chroot(用户隔离)500错误分析以及解决方案 1)chroot_list文件不存在 2)安全问题 500 OOPS: vsftpd: refusing to run with weitable root inside chroot() chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
vsftpd目录限制chroot(用户隔离)500错误分析以及解决方案
|
应用服务中间件 Shell Apache
nginx.conf配置文件各项详解(建议收藏查阅)(下)
nginx.conf配置文件各项详解(建议收藏查阅)
155 0
|
Web App开发 缓存 负载均衡
nginx.conf配置文件各项详解(建议收藏查阅)(中)
nginx.conf配置文件各项详解(建议收藏查阅)
349 0
|
缓存 前端开发 Unix
nginx.conf配置文件各项详解(建议收藏查阅)(上)
nginx.conf配置文件各项详解(建议收藏查阅)
199 0
nginx.conf配置文件各项详解(建议收藏查阅)(上)
Ansible 定时任务模块cron、修改主机名字模块hostname(学习笔记十二)
1、新增一个定时任务: ansible all -m cron -a "name=check minute=5 job='pwd'" image.
1343 0