cron輔助squid(轉)

post0發表於2007-08-10
cron輔助squid(轉)[@more@]

  利用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的配置檔案,新的配置檔案對上網的許可權進行設定。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940660/,如需轉載,請註明出處,否則將追究法律責任。

相關文章