利用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的配置文件,新的配置文件对上网的权限进行设置。