Squid 代理伺服器 (正向代理 Forward Proxy)

由 Derek 發表於 六月 25, 2012 / 尚無評論

什麼是Squid ?

Squid 扮演著一種中介的角色,可用來節省使用者在連結網頁時所使用的頻寬,加快內部網路訪問的速度,並且也能提供監控記錄方便查詢。

Squid代理伺服器是網路上常見的服務之一優點如下:

1. 可以儲存暫存,減少伺服器的負載,同時也可提升Client訪問網頁的速度。

2. 可以解決現階段IPv4不足的問題,減少外網IP使用量。

3. 可對Web訪問時對內容進行過濾,設定一些網頁訪問的規則。也正因為介於伺服器和Client之間,在某些程度上可提高伺服器的安全性。

在 Squid 代理上可分為 正向代理、反向代理、通透式代理(透明代理)。以下就來介紹正向代理 (Forward Proxy)

 

正向代理 (Forward Proxy) 

此類型的代理主要是位於客戶端和伺服器之間的Proxy Server,也是最常見的服務。主要應用為當客戶端透過Forward Proxy連上網路並要連結到其他網頁時,此時的Squid Forward Proxy 就會先將該網頁的資料暫存一份於Proxy Server上。然後當下一位使用者要連結時便可快速提供相關資料。已減少頻寬的消耗。

 

環境 

Centos 5.8  64位元

squid-2.6.STABLE21-6.el5

 

正向代理 (Forward Proxy) 

 

Server

1. 安裝Squid

1.1 先檢查是否已經有安裝Squid

 

1.2 如果沒安裝的話請自行安裝

 

2. squid.conf配置

可參考FAQ設定範例squid.conf

 

2.1 修改Proxy協定port

3128 port可自行修改為合適的埠口

 

2.2開放特定網段的 Proxy 客戶端設定

由於squid 預設只允許 locahost 來使用Proxy Server,因此須要修改一下,才可讓其他使用者使用。

 

添加兩筆設定

acl faq_test src  192.168.100.0/24

http_access allow faq_test

acl 的部份 增加 「acl faq_test src  192.168.100.0/24」。「faq_test」只是一個名稱,可任意修改只要不重覆就可以了。而「192.168.100.0/24」則是設定來源IP,若是想開放給外部任何人使用的話可以設定為「0.0.0.0/0.0.0.0」

http_acces 的部份則是用來設定允許拒絕的部份。增加「http_access allow faq_test」。(faq_test指的是第一行acl定義的名稱)。在設定http_acces時要特別注意順序,必須要設定在「http_access deny all」之前,否則會被deny all的設定先拒絕掉了。

修改前

 

修改後

 

2.3修改快取目錄的相關設定 (cache_dir)

此目錄主要是用來存放快取資料的位置和相關設定,磁碟快取是影響proxy效能的一個相當重要的參數。

cache_dir ufs /var/spool/squid 100 16 256

100 表示為磁碟使用量為100MB (可自行修改)

16  表示在第一層共有16個次目錄

256 表示在每層次目錄內再分為256個次目錄

比較常見的快取目錄且效能較佳的為16  256或64  64。因為在這兩層次目錄的部份是可不用去做修改。只需修改磁碟使用量。

修改前

修改後

 

 

2.4 記憶體

2.4.1 squid 使用的記憶體計算方式

給proxy 額外使用的記憶體,主要用來處裡較為熱門的快取資料。預設1GB的磁碟快取會佔用約10M的記憶體,而Squid本身會佔用約15MB。在上述1.3 時,設定磁碟大小為10GB,整體Squid會使用到的記憶大小試算方式如下:

10 * 10 + 15 + “cache_mem 設定值 (8)”= 123MB

在Squid的官網上建議實體記憶體的大小最好是上面試算出來的兩倍以上,如此一來效能才會比較好一些。

 

2.4.2設置快取記憶體

如果實體記憶體比較大時,可透過修改快取記憶體來提升squid的效能

cache_mem預設是8MB,可依各人需求修改

修改前

修改後

 

2.5 設定LOG存放位置

基本上LOG預設都是存放在/var/log/squid裡。如果有需要修改的也可以自行修改存放路徑。

cache_access_log曾經使用過 squid 的用戶記錄

cache_log        暫存LOG

cache_store_log  儲存使用狀態的LOG

 

2.6 快取磁碟的設定

以下兩種設定方式,都是為兩避免因為快取磁碟被裝滿後,進而造成squid無法使用。

 

2.6.1設定檔案是否快取儲存

minimum_object_size 設定小於多少KB的資料不放到快取內,0為不限制

maximum_object_size 設定大於多少KB的資料不放到快取內,預設為4MB

有關快取大小的設定,可依個人情況設定。

修改前

修改後

 

2.6.2 設定控制磁碟容量上限

cache_swap_high 95  當磁碟使用超過95%時,開始刪除舊有的快取

cache_swap_low 90   當刪除到90%時,停止刪除。

也就是說,假設我的磁碟空間有10GB,然後當使用到10G*0.95=9.5G時,就會開始從磁碟空間中最舊的資料開始刪除。然後當刪除到剩下10G*0.9=9G時,就會停止刪除了。基本上這樣的設定就足夠使用了,所以也不用特意的去修改數值。

修改前

修改後

 

2.7 設置squid主機名稱

會需要設定visible_hostname 主要是因為,若DNS解析有問題時,會找不到主機名而出錯,因此加上此設定可避免此問題,也可減少無法啟動squid的問題。

visible_hostname  squid.faq-test.tk   squid.faq-test.tk可修改為該台主機名稱或是內網IP

 

2.8 設定使用者與使用者群組

修改前

 修改後

 

若是有設定此項的話,請記得新增使用者和組群。

 

也要查看一下LOG是否也為該使用者,若有問題的話請記得修改權限

 

 

3. 防火牆設定

可參考FAQ設定範例 iptables

在防火牆的部份,如果在squid.conf設定2.2 中,有設定到acl faq_test src  192.168.100.0/24 允許此網段使用的話,防火牆也要設定允許此網段IP通過3128 port。

 

 

4.啟動設定

4.1 Squid 運行參數說明

 

4.2檢查是否正常啟動

Squid 的預設port為3128,可查看此port是否正常LISTEN

或是使用ps來查看是否有正常在運作中

[Note] 當Client端設定好,可使用網頁後。Server端可查看access.log和store.log會有相關記錄

 


Client

在設定完Squid 正向代理的server端後,就來設定Client端。以下使用IE瀏覽器為範例

1. [開啟IE] → [工具] → [網際網路選項]

 

2. [連線] → [區域網路設定]

 

3. 請把[在您的區域網路使用Proxy伺服器]打勾 → [進階]

 

4. 然後在HTTP的地方輸入 Squid的ip和連接埠,之後就可以開啟ie上網了

 

[Note] 由於Firefox的設定不吃windows內的,所以若使用Firefox還請在自行設定。

 

 

  

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

此文章尚無評論。

發表評論

*