linux下用squid和squidGuard配置代理服務器
網上有不少在linux中使用squid和squidGuard配置代理服務器的文章,這幾天一直在搞這么個東東網上的資料也看了不少總是覺的和自己設置的不一樣。就把我自己寫的發上來。大家可以參考也給自己留個備份。
1.設置網絡參數什么IP。
主機名什么的這個就不廢話了。
2.建立squid的用戶和組
groupadd squid 編輯\etc\passwd suuid:x:500:501::/usr/local/squid:/bin/bash 用戶目錄設為/usr/local/squid |
www.squid-cache.org ;下載squid-2.4.STABLE2-src.tar.gz存在本地/usr/local/squid/src。
$cd /usr/local/squid/src $tar xvzf squid-2.4.STABLE2-src.tar.gz $ cd squid-2.4.STABLE2 $./configure $make $make install http://www.sleepycat.com $su 從http://ftp.ost.eltele.no/pub/www/proxy/squidGuard/squidGuard-1.1.4.tar.gz下載軟件包并存于本地/usr/local/squidGuard/src/ #cd /usr/local/squidGuard/src/ |
#make #make test 測試ok,即可進行下一步安裝 測試的時候可能也會報一個錯誤好像是什么什么權限問題。可以到squidGuard-1.1.4目錄下的test下在執行一下#make test 要是這里沒有問題就可以繼續。 #make install |
#p#
4.配置squid:
修改squid的配置文件/usr/local/squid/etc/squid.conf: http_port 8080 #squid的代理端口,使用1024以下的端口,squid必須以root身份運行 #允許所有的用戶通過代理進行http訪問 #squid啟用squidGuard進行過濾和轉發 |
cache_mem:設置代理服務使用的內存大小,一般推薦為物理內存的三分之一 cache_dir:指定cache目錄的路徑,默認為/usr/local/squid/cache。 maximum_object_size: 指定Squid可以接收的***對象的大小。Squid缺省值為4M,可以根據自己的需要進行設定。 |
cache_dir /usr/local/squid/cache 100 16 256 /usr/local/squid/cache代表緩存的位置;100代表緩存***為100M;16和256代表一級和二級目錄數。 |
cache_effective_group:設定使用緩存的有效用戶組。缺省組為nogroup,如果系統中沒有組nogroup,***建一個組。這里是squid組
5.配置squidGuard:
修改squidGuard的配置文件/usr/local/squidGuard/squidGuard.conf文件:
logdir /usr/local/squidGuard/logs #日志目錄定義 dbhome /usr/local/squidGuard/db #db目錄定義 time testtime { #時間規則定義 weekly mtwhf 05:00 - 10:30 src admin { #源組定義 ip 192.168.100.18 src client{ dest porn { #目標組定義 domainlist porn/domains acl { #訪問規則定義 admin within testtime { (#也可以重定向到一個含有一些信息的cgi頁面,如下: } |
#p#
# vi db/porn/domains |
co.za sex.com |
# vi db/porn/urls |
qihui.com/sex valen.sohu.com/album |
# vi db/porn/expressions |
(^|[?+=/])(.*)(girl)(.*)([?+=/]|$) |
注意:squidGuard對配置文件的語法要求很嚴,如果配置文件語法有誤,squidGuard仍能運行,但是squidGuard已進入應急模式,此時代理服務不具有任何阻塞作用,所有通過該代理的訪問都可通過,可以查看logs/squidGuard的日志文件,即可發現錯誤,例如:
2001-12-20 17:08:44 [2430] parse error in configfile /usr/local/squidGuard/squidGuard.conf line 8 2001-12-20 17:08:44 [2430] going into emergency mode ……. |
6. 運行:
$ chmod 777 /var/log/squid $ chmod 777 /var/spool/squid $ chmod 777 /usr/local/squid/var $ chmod 777 /usr/local/squid/var/logs $ chmod 777 /usr/local/squidGuard/log $ chmod 777 /var/log/squid |
記得的好像就是這幾個文件開777權限。要是疏漏了可以看日志修改
$ /usr/local/squid/bin/squid -z |
#/usr/local/squid/bin/squid 后臺執行squid。如果想前臺執行squid:如果你想前臺執行Squid執行命令:
|
查看squidGuard日志文件:
init domainlist /usr/local/squidGuard/db/porn/domains 2001-12-20 16:14:43 [2270] init domainlist /usr/local/squidGuard/db/porn/domains 2001-12-20 16:14:43 [2270] init urllist /usr/local/squidGuard/db/porn/urls 2001-12-20 16:14:43 [2270] init expressionlist /usr/local/squidGuard/db/porn/expressions 2001-12-20 16:14:43 [2270] squidGuard 1.1.4 started (1008836083.022) 2001-12-20 16:14:43 [2270] recalculating alarm in 917 seconds 2001-12-20 16:14:43 [2270] squidGuard ready for requests (1008836083.044) |
7.開機自動啟動
最容易的機制之一是/etc/rc.local腳本。這是個簡單的shell腳本,在每次系統啟動時以root運行。使用該腳本來啟動squid非常容易,增加一行如下:
/usr/local/squid/sbin/squid -D touch /var/lock/subsys/local |
8.一些小經驗和大家分享一下
在開啟squid之前,你應該謹慎的驗證配置文件。這點容易做到,運行如下命令即可:%squid -k parse假如你看不到輸出,配置文件有效,你能繼續后面的步驟。
然而,如果配置文件包含錯誤,squid會告訴你:squid.conf line 62: http_access allow okay2 aclParseAccessLine: ACL name 'okay2' not found.這里你可以看到,62行的http_access指令指向的ACL不存在。有時候錯誤信息很少:FATAL: Bungled squid.conf line 76: memory_pools在這個情形里,我們忘記了在76行的memory_pools指令后放置on或off.
建議你養成習慣:在每次修改配置文件后,使用squid -k parse。假如你不愿麻煩,并且你的配置文件有錯誤,squid會告訴你關于它們而且拒絕啟動。假如你管理著大量的cache,也許你會編輯腳本來自動啟動,停止和重配置squid。你能在腳本里使用該功能,來確認配置文件是有效的。
保存日志vi /etc/logrotate.d/squid/var/log/squid/access.log
{ weekly } |
原文來自:http://netdl.blog.51cto.com/184762/33118
【編輯推薦】