下載安裝 squid
安裝各種套件的方法主要可以分成 rpm 升級以及用來源檔(binary檔案)升級,以 rpm 方法升級是比較簡單的方法,而且以 rpm -q 的指令可以來查詢目前你的系統中的套件版本!不過由於 rpm 出來的時間會比較慢,並且不同 Linux 版本之間可能會有版本兼容性的問題,所以你也可以直接以 binary 升級(就是使用 *.tar.gz 的檔案升級的方法)。要注意的是,你只要以其中一種方法升級就好了,不用重復升級喔!
下載:
目前使用最多的代理服務器程序,大概是 squid 這一套程序了!在 Redhat 6.1 中就已經有這套軟件,只是版本比較舊(2.2.stable-4),通常我會喜歡把這一套軟件升級後才予以設定!升級的方式有兩種,一個是使用 rpm 升級,另一個則是直接使用 source code 升級,以下提供的是 squid-2.4.STABLE1-5.src.rpm 的升級方式。不過,由於 squid 在安裝的時候需要其它的附屬套件的安裝,所以還需要一些套件,這裡提供了使用 rpm 升級的所有需要的套件,你可以下載回去用用看!另外,如果你需要使用到原始碼來安裝的話,這個網站你也可以去看看!
rpm 安裝方法:
我是以 RPM 程序來安裝的,安裝的附屬套件要先安裝才行,過程如下:
[root@tsai /root]# tar -zxvf squid-2.4.STABLE1-5.tar.gz
先解壓縮吧,這時會有一些檔案會產生出來,然後請接著執行下面的動作!
[root@tsai /root]# /bin/rpm --rebuild pam-0.74-22.src.rpm
[root@tsai /root]# /bin/rpm -ivh /usr/src/redhat/RPMS/i386/pam-0.74-22.i386.rpm
[root@tsai /root]# /bin/rpm -ivh /usr/src/redhat/RPMS/i386/pam-devel-0.74-22.i386.rpm
[root@tsai /root]# /bin/rpm --rebuild sgml-common-0.5-7.src.rpm
[root@tsai /root]# /bin/rpm --rebuild sgml-tools-1.0.9-12.src.rpm
[root@tsai /root]# /bin/rpm -ivh /usr/src/redhat/RPMS/noarch/sqml-common-0.5-7.noarch.rpm
[root@tsai/root]#/bin/rpm -Uvh --nodeps /usr/src/redhat/RPMS/i386/sqml-tools-1.0.9-12.i386.rpm
[root@tsai /root]# /bin/rpm --rebuild openjade-1.3-13.src.rpm
[root@tsai /root]# /bin/rpm -ivh /usr/src/redhat/RPMS/i386/openjade-1.3-13.i386.rpm
[root@tsai /root]# /bin/rpm --rebuild bash-2.05-8.src.rpm
[root@tsai /root]# /bin/rpm -Uvh /usr/src/redhat/RPMS/i386/bash-2.05-8.i386.rpm
[root@tsai /root]# /bin/rpm --rebuild squid.2.4.STABLE1-5.src.rpm
[root@tsai/root]#/bin/rpm -Uvh --nodeps /usr/src/redhat/RPMS/i386/squid.2.4.STABLE1-5.i386.rpm
請注意,由於有些套件有點小錯誤,所以需要強制安裝,因此有些安裝過程需要加上 --nodeps 這個參數才能安裝!!至於 --rebuild 是重新編譯的意思,若對於 rpm 不明了,請在往前看看以 rpm 升級的辦法一文吧!
基本上,經過上面的安裝之後,應該就可以把 squid 升級了,你可以察看一下:
[root@tsai /root]# rpm -q squid
squid-2.4.STABLE1-5
這樣就安裝好啰!
來源檔升級:(update 2001/11/09)
那如果你想要以最新版的 squid 來升級的話呢,要如何是好?這裡提供了目前(2001/09/xx)最新的 squid 版本 squid-2.4.STABLE2-src.tar.gz ,新版的功能是比較多的。
安裝的方法很簡單,只是你要先將 RedHat 6.1 原先的 squid 移除,然後將剛剛捉下去的檔案。整個安裝的方法,簡單的來說,有下列幾個步驟:
[root@tsai /root]# cp squid-2.4.STABLE2-src.tar.gz /usr/local
將檔案拷貝到 linux 預設的本機安裝套件的目錄 /usr/local 中!
[root@tsai /root]# cd /usr/local
[root@tsai local]# tar -zxvf squid-2.4.STABLE2-src.tar.gz
這時會產生一個名為 squid-2.4.STABLE2 的目錄!
在這個目錄中有一個 INSTALL 的檔案,你可以看一下裡面的流程!
[root@tsai local]# cd squid-2.4.STABLE2
[root@tsai squid-2.4.STABL2]# ./configure --prefix=/usr/local/squid
--enable-icmp --enable-async-io=40
--enable-err-language="Traditional_Chinese"
--enable-cache-digests
上面 --prefix 後面接的是 squid 即將安裝的目的目錄,
也就是說,你的這一版 squid 會安裝在 /usr/local/squid 中!
另外, --enable-async-io=40 這一個咚咚最好加上去!
會增加很多的總體效能喔!(快得不得了!)
至於 --enable-err-language-"Traditional_Chinese" 是指將錯誤訊息
以中文輸出!
[root@tsai squid-2.4.STABL2]# make
[root@tsai squid-2.4.STABL2]# make install
上面就是在編譯及安裝啦!
這樣就安裝完畢啰!
設定代理服務器
這裡僅提供簡單的代理服務器的設定,如果你需要更詳細的設定的話,請到 squid 的網頁去看看吧!
需要給予設定的檔案:
基本上,需要給予設定的檔案只有一個,即是 squid.conf 這個檔案。要注意的是,如果你是以 rpm 安裝的,則這個檔案會放在 /etc/squid/ 中,如果你是以 binary 安裝的,那這個檔案就會放在 /usr/local/squid/conf 當中!
另外,程序預設的激活批次檔, rpm 的是 /etc/rc.d/init.d/squid 這個檔案,而 binary 則在 /usr/local/squid/bin/squid 這個檔案;
而程序預設的暫存目錄在 /var/spool/squid !
以下我將以 rpm 的檔案進行說明,當然啰, binary 的修改是一樣的,只是檔案放置的地點不一樣罷了!
確定 squid 可以正常執行:
我們先簡單修改一下 /etc/squid/squid.conf 這個檔案,讓他可以被激活,然後再繼續往下修改!
找到下面幾行,將批注(#)拿掉:
http_port 3128
icp_port 3130
cache_mem 8 MB
cache_dir ufs /var/spool/squid 100 16 256
cache_Access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
找到下面這行,並改成下列情況:
http_access deny all ==> http_access allow all
上面那一行改好之後,儲存並離開 vi ,然後執行:
/etc/rc.d/init.d/squid start
或者是
/usr/local/squid/bin/squid
如此則 squid 應該可以正常執行了!接下來請到 IE 中,如果你是 IE 5.0 以後的版本,請到:
『工具』->
『Internet 選項』->
『聯機』->
『局域網絡設定』中,點選
『使用 Proxy 服務器』
並在網址列輸入你的主機名稱(或者是 IP 均可),然後按確定離開!然後在 IE 中按按看網頁的設定有沒有成功,如果可以讀到網頁的話,表示 squid 可以正常的被使用了!
雖然 squid 可以被使用,但是要讓你的 squid 實際發揮應有的能力時,你應該最少要設定一些基礎的參數的!所以請繼續往下看吧!
進階的 squid.conf 設定:
在完成了上述的設定之後,你的 Proxy Server 就可以激活了,不過,如果你想要再進一步進行設定的話,例如剛剛提過的,你想要讓 squid 的上層代理伺服器具有選擇性,以及想讓 squid 的暫存空間更大,那你就必須要再設定了,以下提供幾個不錯的網頁提供給你做為參考!
優克筆記本;
台北市教育網絡中心;
基本上,需要注意的地方主要可以分為底下幾個:
http_port 3128:
這個東西是用來設定你的 Proxy 監聽訊息的 port ,目前 proxy 通用的 port 是 3128 ,但是你也可以自行設定一個大於 1024 的 port ,例如另一個常用的 port 是 8080 這一個。不過我並不建議你修改這個 port ,因為如果你修改了之後,很有可能會造成無法聯機的情況,所以還是使用默認值 3128 吧!
cache_peer:(相當重要的!)
這個就是用來設定上層代理服務器的指令,剛剛有提過『代理服務器可以設定多個』,而且你可以將代理服務器分類,以我為例,因為我住台南,所以成大計中對我而言是一個很不錯的服務器,則我如果要向上層代理服務器要求訊息,可以指向成大計中(快很多喔!),亦即是 proxy.ncku.edu.tw 3128 這一個,請你依照你的所在地來設定你的代理服務器吧。
cache_peer proxy.ncku.edu.tw parent 3128 3130
上面的說明是,使用 proxy.ncku.edu.tw 這個主機當作 主要的(parent,就是父母的意思)上層代理服務器,另外,如果你想要向對等的服務器要求東西,就可以將 parent 寫成 slbling 啰!除此之外,這一個指令可以重復寫入,也就是說,你可以同時設定多個上層代理服務器!不過這裡要向大家報告一下,如果設太多上層服務器的話,由於資料會一層層的去要求,所以速度反而會變慢!基本上是建議大家只要設定兩個到三個左右的上層代理服務器就好了。
再者,3128是 squid 主要的 port ,而 3130 則是另外一個監聽的 port ,也要寫上去喔!
cache_peer_domain:(相當重要的!)
這個參數可以用來分別指定不同網域的代理服務器,以我為例,因為常上美國 EPA 的網站,而 proxy.ncku.edu.tw 對於這個網站的讀取能力很強,另外,gate.ncku.edu.tw 這個 proxy 則對 UCar.edu 這個美國網域的讀取能力較強,那我可以使這兩個網域向不同的 proxy 索取資料:
cache_peer_domain proxy.ncku.edu.tw .epa.gov
cache_peer_domain gate.ncku.edu.tw .ucar.edu
那你曉得了嗎?只要你在這裡分別指定不同的代理服務器,那你自己的這個代理服務器就自動的幫你完成你需要的資料來源了!很重要吧!
cache_mem 8 MB:
這東西與你的內存有關,如果你的內存夠大的話,這個 8 可以變大一些,例如你的內存有 256 MB 時,你可以設成 256*1/4 ==> 64 MB,如果你只有 64MB,而且主機還有其它用途,那使用預設的 8 MB 就好了。
cache_dir ufs /var/spool/squid 100 16 256:(update 2001/11/09)
這個指令就是限制暫存區大小的地方啦,上面的說明是:暫存區目錄為 /var/spool/squid ,而暫存空間大小為 100M , 在這個暫存目錄下有 16 個目錄,而每個目錄中又有 256 個目錄(你可以實際進入 /var/spool/squid 當中去看看)。如果你要改變暫存盤目錄及這個目錄的大小時,可以在這裡修改!不建議修改 16, 256 這兩個數值。另外,通常,如果是我們一般小型的區網(不超過10個人),那設定個 500 應該夠了,如果你的硬盤夠大,設定成 1000 以上更好。修改過這個指令後,要再重新激活 squid 之前,請先使用下面的指令來使你的目錄可以進行存取的動作,否則你的 squid 是不會工作的!例如你將上面的參數修改成:
cache_dir ufs /var/spool/squid 1000 16 256
然後再進行下面的指令:
rm -rf /var/spool/squid
mkdir /var/spool/squid
chown squid:squid /var/spool/squid
/usr/sbin/squid -z
這樣你的squid暫存目錄就可以使用啰!
另外,如果你剛剛在安裝的時候有將 --enable-async-io=40 這一個加進來的話,將可以增加 aufs 這一個磁盤的用途!這個東西可真是好呀!可以將你的硬盤發揮到最極限的速度喔!雖然在 squid.conf 檔案中有提及,這個 type 可能會有 bug 存在,不過,據鳥哥的使用結果,發現,沒啥大問題!好用的很!所以,你可以將上面的咚咚改成下面的樣子:
cache_dir aufs /var/spool/squid 1000 16 256
acl 與 http_access:
這兩個檔案是相互輝映的,例如:如果你只要將這個 Proxy 開放給內部網絡 192.168.1.XXX 用的話,你可以增加這三行:
acl insidenet src 192.168.1.0/255.255.255.0 (insidenet 只是一個代號,你可以任意設定,但須與底下的相同名稱。而 src 代表後面接的是 IP 的意思,而後面的 IP(255.255.255.0) 表示 192.168.1.0~192.168.1.255 均為此設定中!)
http_access deny all(關於 proxy 全部的服務均取消)
http_access allow insidenet localhost(僅開放 Proxy 給 insidenet 及 localhost 兩個網域使用)
cache_mgr root:
當 squid 有問題的時候,要聯絡誰?通常我都將 root 改成我自己的 ID ,如此才能在其它的機器上收到信!
cache_mgr
[email protected]
acl 與 always_direct:(很重要)
這個就是是否需要直接去讀取你要的網頁,而不要透過上層代理服務器的指令(重要)。例如:我們不需要在台灣地區的學術網絡還透過上層代理服務器的話,可以寫入這兩行:
acl Taiwan-net dstdomain .edu.tw(就是設定網址,其中 dstdomain 後面接的就是網址,網址的型態亦可僅寫成 .tw 即可)
always_direct allow Taiwan-net(這個網址的網頁,直接由我們這個 Proxy 去捉,而不透過上層 Proxy)
acl 與 never_direct:
這個就是不要直接去取得資料的設定處,例如我們常去的美國環保署網站,我們希望關於這個網頁的資料一定由上層 Proxy 去捉取,則可以這樣設定:
acl usepa dstdomain .epa.gov
never_direct allow usepa
上面這個 always_direct 與 never_direct 的設定可以是多重的,你可以多寫入幾個對應的網址,去定義你的上層 Proxy 的工作路徑!
prefer_direct off:
上面這個選項一定要設定為 off ,不然的話你的 squid 將會嘗試直接到網站去捉資料,而不會透過上層 proxy 喔!
重新激活:
設定完成之後,最重要的就是重新激活了,你可以這樣來激活:
/etc/rc.d/init.d/squid restart
/usr/local/squid/bin/squid -k reconfigure
特別需要注意的地方:基本上這樣的 squid 設定應該能滿足你的需求了,如果你的上層代理服務器設定妥當的話,那你應該會感受到代理服務器帶給你的網絡聯機速度上的快樂喔!不過有些地方還是需要注意一下的:
目前作為代理服務器的主機,大都由於頻寬的問題,所以會限制聯機上來的使用者,就是上面的 http_access 這個參數的設定值,因此,你應該針對你所在的網域去調查你的上層代理服務器,若可能的話,可以提出申請,請管理員幫你開啟使用,否則對 squid 是不會有幫助的!
在 acl 後面接了代號及 dstdomain 之後,如果你要接一個網域的話,請在前面加 . 例如美國環保署的網站(不論是 www 或其它)就要寫成 .epa.gov 而不是 epa.gov(先前我搞錯了!向大家對不起!),這樣一來,不論 http://www.epa.gov/ 或 adb.epa.gov 才會經過你的上層 proxy 喔!
請依照你實際的需求來設定 acl 與 never_direct 與 always_direct ,例如你人在台灣,那幾乎所有 com.tw 的網站都不用透過 proxy 也可以捉得很好!反而透過 proxy 會變慢哩,同樣的,如果是學術網絡的話,就直接把 .edu.tw 加入到 always_direct 當中吧!
也需要注意一下 cache_peer_domain 用來分流的方法喔!
設定的幾個范例:
這裡有幾個設定的范例可以參考一下:
Windows 內的設定
以下使用 IE 作為說明,如果是 Netcape 的話,基本上的設定是相同的:
開啟 IE ,然後在『工具』內選擇『Internet 選項』:
在開啟的窗口內選擇『聯機』並點選下方的『局域網絡設定』:
在新的框框中,填入你所需要的 Proxy 的網址或者是 IP 均可,而 port 則需視你的代理服務器而定,以我為例,我都是使用 192.168.1.2 作為我的主機(NAT、Proxy、Web 都是同一台機器),而 port 也僅是設定為通用的 3128 ,所以如下方設定即可,當然,如果你是在南部的 seednet 用戶,或者可以填入 ksproxy.seed.net.tw,port 則填入 8080 即可。
另外,你也可以在 IE 中直接設定你要直接去捉取的網頁名稱,點選上個圖的 『進階』那一項,在出現的框框的最底下,可以填入你不想透過 Proxy 捉取的網站網址!
如此一來則設定好了 Proxy Server 啰!
squid 的注意事項
使用代理服務器後,浏覽國外的網頁應該是可以變快的!但是,你要小心幾件事:
若 squid 內設定的使用空間滿了,則 squid 將不會運作!
若 squid 的紀錄文件太大了,則工作效率會變慢!
如上所述,由於 squid 可能會讓你的硬盤空間飽和(尤其我們都是使用舊計算機,硬盤容量本來就不是很足夠),如果每隔幾個月就要去清理硬盤一次,那可能會造成人力的浪費,這個時候,使用例行性的工作就是個好方法啦!
刪除記錄文件的方法:
基本上,記錄文件不需要保存太久的時間,你可以在 /etc/cron.daily 這個目錄中增加一個檔案(檔名隨便取都可以),假設檔名為 system_do.sh,則在這個檔案中,你可以增加這一行:
/usr/sbin/squid -k rotate <==/usr/sbin/squid 這個路徑要指向你的 squid 執行檔
這個方法在使你的紀錄文件可以被轉成備份文件!而且每天都更新備份,不過,你必須將 system_do.sh 這個檔案更改成可執行檔,例如: chmod 700 system_do.sh
然後在你的 /etc/cron.weekly 目錄中,也增加一個檔案,裡頭也增加一行:
rm -rf /var/log/squid/*.gz
同樣的做成可執行檔,如此,則每個禮拜系統可將你的備份文件殺掉啰!
刪除記錄目錄的方法:
同樣的,你可以在每個月清理一次你的暫存目錄,你可以將你的 /etc/cron.monthly 裡面增加一個檔案,增加下面這幾行:
echo Now, restart Proxy Service
/etc/rc.d/init.d/./squid stop
echo removing Directory "/var/spool/squid"
rm -rf /var/spool/squid <==與你的暫存目錄設定有關
echo recreated directory "/var/spool/squid"
mkdir /var/spool/squid <==與你的暫存目錄設定有關
echo chang owner to squid
chown squid:squid /var/spool/squid
echo recreated swap directory, using /usr/sbin/squid
/usr/sbin/squid -z
echo starting proxy server!
/etc/rc.d/init.d/squid start
則每個月系統會自動的將 squid 暫存於 /var/spool/squid 的資料全部殺掉,再重新建造一個新的目錄,另外,將目錄改變成 squid 所有(避免不能讀寫的情況!)之後,激活這個暫存目錄的格式化(squid -z),最後再重新激活!如此則不需害怕暫存目錄會被吃光光了!
增加 proxy 效能的方法:
關於上層代理服務器:用 cache_peer 設定上層代理服務器的數目不要太多,只要 2-5 個之間就好了,而且上層代理服務器一定要找距離你最近,並且具有較大頻寬的主機,如果是在台南,那 proxy.ncku.edu.tw 就是不錯的主機;
關於暫存目錄的設定:以 cache_dir ufs 設定的目錄,最好是單獨割出來的約 1-2 GB 的硬盤槽,以我為例,我將另外一台主機的 30GB 的硬盤割兩槽給 proxy 用,而每一槽只有 2GB ,分別命名為 proxy1 與 proxy2 ,則可以寫成
cache_dir ufs /proxy1 2000 16 256
cache_dir ufs /proxy2 2000 16 256
由於分成兩槽來存取,所以整體效率上會比較好,但這是針對一般比較大型的代理服務器的設定了,我們這個小主機就不用如此設定(但是效率真的有差哩!)。
善用 acl, always_direct, never_direct:就如同上面提到的,因為你的目的不同,所以會使用到不同的 proxy 作為你的上層代理服務器,如果你發現你的上層代理服務器無法針對你常上的網站來求取資料時,就將那個網站加入你的 always_direct 吧!另外,也可以使用 cache_peer_domain 來處理喔!
在 ./configure 的時候增加 --enable-async-io=40 這一個指令:基本上,增加這個指令之後,將可以使您的磁盤多一個 type ,亦即是 aufs ,這個 type 的速度較快!
__________________
善用 acl, always_direct, never_direct:就如同上面提到的,因為你的目的不同,所以會使用到不同的 proxy 作為你的上層代理服務器,如果你發現你的上層代理服務器無法針對你常上的網站來求取資料時,就將那個網站加入你的 always_direct 吧!另外,也可以使用 cache_peer_domain 來處理喔!
在 ./configure 的時候增加 --enable-async-io=40 這一個指令:基本上,增加這個指令之後,將可以使您的磁盤多一個 type ,亦即是 aufs ,這個 type 的速度較快!
__________________
cache_dir ufs /proxy1 2000 16 256
cache_dir ufs /proxy2 2000 16 256
由於分成兩槽來存取,所以整體效率上會比較好,但這是針對一般比較大型的代理服務器的設定了,我們這個小主機就不用如此設定(但是效率真的有差哩!)。
善用 acl, always_direct, never_direct:就如同上面提到的,因為你的目的不同,所以會使用到不同的 proxy 作為你的上層代理服務器,如果你發現你的上層代理服務器無法針對你常上的網站來求取資料時,就將那個網站加入你的 always_direct 吧!另外,也可以使用 cache_peer_domain 來處理喔!
在 ./configure 的時候增加 --enable-async-io=40 這一個指令:基本上,增加這個指令之後,將可以使您的磁盤多一個 type ,亦即是 aufs ,這個 type 的速度較快!
__________________