2012年5月22日 星期二

網路加速器 -- squid3


網路加速器 -- squid3

●注意:本文是配合 Ubuntu Server 12.04 LTS 安裝

一般的上網環境拓撲,長的大約是下圖一的樣子,使用一個防火牆或 IP 分享器設定與網際網路的連線,用戶端的電腦以 HUB 或 Switch 串起形成一個內部網路,再透過 IP 分享器連接到網際網路上,這樣的設計很簡單,基本上也沒有什麼問題,所以我們的情境,不是在這樣的環境中(~笑),而是上網人數比較多,也許有 300 台電腦,對外網路頻宽又比較不夠時,也許只有 4M,僧多粥少的情形下,造成上網的速度較慢,此時可以透過內部代理伺服器( Proxy )建立,讓電腦在瀏覽同樣的網頁資料不需要真正對外,直接由內部存取即可。

 ▲    圖一、一般上網環境的網路拓撲圖

代理伺服器有很多的解決方案,這邊使用的是在 Ubuntu Server 12.04 LTS 下安裝 squid3,使用代理伺服器後,網路拓撲的長法如下圖二,用戶端電腦可以在瀏覽器中,選擇要或不要使用代理伺服器上網,要管控的更嚴格?讓使用者不使用代理伺服器就無法上網,這不是 squid 可以解決的,管理者可以在 IP 分享器進行限定,設定只有代理伺服器可以連外原則,以達成節省頻宽的目標。

 ▲    圖二、內網中使用代理伺服器

為什麼代理伺服器可以節省頻宽的使用?因為代理伺服器代理在網際網路上的網頁伺服器,以快取回傳網頁資料給使用者,也就是說用戶端電腦在瀏覽器中,設定使用代理伺服器進行網路連線後,用戶端電腦上網的動作會變成,連線到代理伺服器,代理伺服器有資料就回傳給用戶端,這個時候可以得到最快的上網速度,因為資料都在內部網路中傳輸,如果代理伺服器中沒有用戶端電腦要求的網路資料,那就要去網際網路中撈取,才能再回傳給用戶端電腦,並存入快取,以備下次或其它的使用者使用。

▲    圖三、在 IE 設定代理伺服器 (註:位址是環境中安裝代理伺服器的電腦位址,或者使用 FQDN )

以下情境是使用一台 Ubuntu 的電腦安裝 squid,安裝 squid 的指令為

►   sudo apt-get install squid -y

ruilung@proxy:~$ sudo apt-get install squid -y

[sudo] password for ruilung:

Reading package lists... Done

Building dependency tree

Reading state information... Done

The following extra packages will be installed:

libcap2 libltdl7 squid-langpack squid3 squid3-common ssl-cert Suggested packages:

squidclient squid-cgi smbclient openssl-blacklist The following NEW packages will be installed:

libcap2 libltdl7 squid squid-langpack squid3 squid3-common ssl-cert

0 upgraded, 7 newly installed, 0 to remove and 23 not upgraded.

Need to get 1,951 kB of archives.

After this operation, 7,001 kB of additional disk space will be used.

Get:1 http://tw.archive.ubuntu.com/ubuntu/ precise/main libcap2 amd64

1:2.22-1ubuntu3 [12.0 kB]

...中間略

Creating Squid HTTP proxy 3.x spool directory structure

2012/05/18 09:04:01| Creating Swap Directories

squid3 start/running, process 1911

Setting up squid (3.1.19-1ubuntu2) ...

Processing triggers for libc-bin ...

ldconfig deferred processing now taking place

▲    表一、安裝 squid 的過程

安裝好 squid 後需要進行設定,設定檔的位置在 /etc/squid3/squid.conf,編修執行指令為

►   sudo vi /etc/squid3/squid.conf

在 squid.conf 中,我們需要修改兩個值

http_access deny all改為http_access allow all,squid預設的設定比較嚴,只有本機可以使用代理伺服器中的快取,如果有需要開放給其它電腦使用,就要使用acl進行細部設定,但在我們需求中,是想要節省大家使用時的頻宽,所以沒有進行嚴謹的設定,而是通通開放,於是把預設的deny all改成allow all。
#cache_dir ufs /var/spool/squid3 100 16 256,修改去掉#,再把100改為1000,變成cache_dir ufs /var/spool/squid3 1000 16 256,這個部份是快取內容存放於硬碟的大小,由原本的100M太少了,可能暫存不了多少網頁的內容,當然,也不一定要改成1000M,可以依照伺服器上的硬體配備,與網路環境進行最佳化的設定。另外要提到的是,硬碟的效率會影響快取的效能,所以使用快的硬碟會有比較好的效能,有多顆硬碟時,將快取檔案分散在不同硬碟中,也可以增進效能。

設定檔案變更了,需要重新讀取設定檔,執行指令如下,但是在下面我們會有關閉與重啟squid的動作,重啟squid時本來就會重讀設定檔,故此動作可以省略。

►   sudo squid3 -k reconfigure

再來要建立快取目錄,但是建立目錄前要關閉squid,執行指令為

►   sudo service squid3 stop

伺服器的快取目錄建立,執行指令為

►   sudo squid3 -z

ruilung@proxy:~$ sudo squid3 -z

2012/05/17 14:51:01| Creating Swap Directories

2012/05/17 14:51:01| /var/spool/squid3 exists

2012/05/17 14:51:01| Making directories in /var/spool/squid3/00

2012/05/17 14:51:01| Making directories in /var/spool/squid3/01

2012/05/17 14:51:01| Making directories in /var/spool/squid3/02

2012/05/17 14:51:01| Making directories in /var/spool/squid3/03

2012/05/17 14:51:01| Making directories in /var/spool/squid3/04

2012/05/17 14:51:01| Making directories in /var/spool/squid3/05

2012/05/17 14:51:01| Making directories in /var/spool/squid3/06

2012/05/17 14:51:01| Making directories in /var/spool/squid3/07

2012/05/17 14:51:01| Making directories in /var/spool/squid3/08

2012/05/17 14:51:01| Making directories in /var/spool/squid3/09

2012/05/17 14:51:01| Making directories in /var/spool/squid3/0A

2012/05/17 14:51:01| Making directories in /var/spool/squid3/0B

2012/05/17 14:51:01| Making directories in /var/spool/squid3/0C

2012/05/17 14:51:01| Making directories in /var/spool/squid3/0D

2012/05/17 14:51:01| Making directories in /var/spool/squid3/0E

2012/05/17 14:51:01| Making directories in /var/spool/squid3/0F

▲    表二、建立 squid 暫存區的過程

到這裡,所以設定的工作都完成了,再來只要啟用squid服務就可以了,啟用指令為

►   sudo service squid3 start

順一下整個流程,簡單的動作流程如下圖所示。


▲    圖四、安裝squid的流程

如此一來,就有一台代理伺服器可以在內網中,為使用者提供上網快取的服務了。

軟體下載:
Ubuntu Server 12.04 LTS

轉載自《iThome Download