Squid 代理伺服器 (通透式代理 Transparent Proxy)

由 Derek 發表於 七月 2, 2012 / 尚無評論

什麼是Squid ?

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

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

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

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

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

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

 

通透式代理 (Transparent Proxy) 

Transparent Proxy在客戶端不需要做任何設定。主要是在Proxy Server啟用NAT服務和在防火牆設定上將NAT的80 port 轉向到3128 port、並且在squid上啟用transparent 功能。

 

系統環境 

Centos 5.8  64位元

squid-2.6.STABLE21-6.el5

 

設定 

首先先說明一下,不論是Reverse Proxy(反向代理)或是Transparent Proxy(通透式代理)都是由Forward Proxy(正向代理)修改設定而來的。因此在設定值說明部份以Forward Proxy為主,至於其他兩個代理也會在需要修改的地方加以註明。

 

通透式代理 (Transparent Proxy)

 

Server

通透式代理和正向代理在設定上大至都一樣,所以在squid.conf配置上若沒特別說明的話,就和正向代理設定一樣。

只是通透式代理多了以下幾種設定

1. squid.conf啟動transparent功能

2. 開啟 NAT 服務

3. 對外防火牆上設定NAT

4. 防火牆的NAT加上一條規則,把port80轉導到port3128

 

1. 安裝Squid

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

 

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

 

2. squid.conf配置

可參考FAQ範例 squid.conf

2.1 啟動transparent功能

 

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. 開啟NAT服務

 

4. 防火牆設定

可參考FAQ 設定完成的範例 iptables

4.1 設定NAT服務的防火牆設定

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE

192.168.100.0/24  這是自行設定所允許通過的IP

eth0  指的是外網的網卡

設定好後看的到iptables 如下  可參考FAQ範例 iptables-nat

 

4.2 防火牆的NAT加上一條規則,把port80轉導到port3128

設定好後看的到iptables 如下  可參考FAQ範例 iptables-80-3128

 

4.3 添加一筆允許3128 port通過

-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 3128 -j ACCEPT

 

4.4 添加一筆 允許外網網卡的通過

-A FORWARD -o eth0 -j ACCEPT

 

5. 啟動設定

5.1 Squid 運行參數說明

 

5.2檢查是否正常啟動

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

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

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

 

Client

在設定完Squid 正向代理的server端後,就來設定Client端。

1. [控制台] → [網路和網際網路]

 

2. 點選 [網路和共用中心]

 

3. 點選 [變更介面卡設定]

 

4. [區域網路] → [右鍵內容] → [TCP/IP4] → [內容]

 

5. IP設定

Transparent Proxy 在Client端最大的差別在於IP的設定

IP 位址 : 指定同網段不重覆的IP(此部份也需看squid.conf所允許通過的IP)

子網路遮罩 : 設定為該網段對應的子網路遮罩

預設閘道 : 設定為Transparent Proxy 的IP(至於IP的部份就需要看squid防火牆是允許內網還是外網IP)

慣用DNS伺服器 : 若是有自己的DNS Server 可指到自己的DNS Server,就設定為google的8.8.8.8或中華電信的168.95.1.1

  

關於作者

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

評論

此文章尚無評論。

發表評論

*