squid介紹及其簡單配置
1.Squid是什麽?
Squid是一種用來緩沖Internet數據的軟件。它是這樣實現其功能的,接受來自人們需要下載的目標(object)的請求並適當地處理這些請求。也就是說,如果一個人想下載一web頁面,他請求Squid為他取得這個頁面。Squid隨之連接到遠程服務器(比如:http://squid.nlanr.net/)並向這個頁面發出請求。然後,Squid顯式地聚集數據到客戶端機器,而且同時復制一份。當下一次有人需要同一頁面時,Squid可以簡單地從磁盤中讀到它,那樣數據迅即就會傳輸到客戶機上。當前的Squid可以處理HTTP,FTP,GOPHER,SSL和WAIS等協議。但它不能處理如POP,NNTP,RealAudio以及其它類型的東西。
2.squid代理的作用:
3. 接下來我們主要探討的是squid各種代理的定義
正向代理
a.標準的代理緩沖服務器
一個標準的代理緩沖服務被用於緩存靜態的網頁(例如:html文件和圖片文件等)到本地網絡上的一臺主機上(即代理服務器)。當被緩存的頁面被第二次訪問的時候,瀏覽器將直接從本地代理服務器那裏獲取請求數據而不再向原web站點請求數據。這樣就節省了寶貴的網絡帶寬,而且提高了訪問速度。但是,要想實現這種方式,必須在每一個內部主機的瀏覽器上明確指明代理服務器的IP地址和端口號。客戶端上網時,每次都把請求送給代理服務器處理,代理服務器根據請求確定是否連接到遠程web服務器獲取數據。如果在本地緩沖區有目標文件,則直接將文件傳給用戶即可。如果沒有的話則先取回文件,先在本地保存一份緩沖,然後將文件發給客戶端瀏覽器。
b.透明代理緩沖服務器
透明代理緩沖服務和標準代理服務器的功能完全相同。但是,代理操作對客戶端的瀏覽器是透明的(即不需指明代理服務器的IP和端口)。透明代理服務器阻斷網絡通信,並且過濾出訪問外部的HTTP(80端口)流量。如果客戶端的請求在本地有緩沖則將緩沖的數據直接發給用戶,如果在本地沒有緩沖則向遠程web服務器發出請求,其余操作和標準的代理服務器完全相同。對於Linux操作系統來說,透明代理使用Iptables或者Ipchains實現。因為不需要對瀏覽器作任何設置,所以,透明代理對於ISP(Internet服務器提供商)特別有用。
反向代理:
a. 反向代理緩沖服務器
反向代理是和前兩種代理完全不同的一種代理服務。使用它可以降低原始WEB服務器的負載。反向代理服務器承擔了對原始WEB服務器的靜態頁面的請求,防止原始服務器過載。它位於本地WEB服務器和Internet之間,處理所有對WEB服務器的請求,組織了WEB服務器和Internet的直接通信。如果互聯網用戶請求的頁面在代理服務器上有緩沖的話,代理服務器直接將緩沖內容發送給用戶。如果沒有緩沖則先向WEB服務器發出請求,取回數據,本地緩存後再發送給用戶。這種方式通過降低了向WEB服務器的請求數從而降低了WEB服務器的負載。
4.Squid主要組成部分
服務名:squid
主程序:/usr/sbin/squid
配置目錄:/etc/squid
主配文件:/etc/squid/squid.conf
監聽tcp端口號:3128
默認訪問日誌文件:/var/log/squid/access.log
5.squid 常用配置選項(/etc/squid/squid.conf)
http_port 3128 (還可以只監聽一個一個ip http_port 192.168.0.1:3128)
cache_mem 64MB#緩存占內存大小
maximum_object_size 4096KB#最大緩存塊
reply_body_max_size 1024000 allow all #限定下載文件大小
access_log /var/log/squid/access.log #訪問日誌存放的文件
visible_hostname proxy.test.com #可見的主機名
cache_dir ufs /var/spool/squid 100 16 256
usf:緩存數據的存儲格式
/var/spool/squid 緩存目錄
100 : 緩存目錄占磁盤空間大小(M)
16 :緩存空間一級子目錄個數
256 :緩存空間二級子目錄個數
cache_mgr [email protected] #定義管理員郵箱
http_access deny all #訪問控制
6.squid中的訪問控制
使用訪問控制特性,可以控制在訪問時根據特定的時間間隔進行緩存、訪問特定站點或一組站點等等。 Squid 訪問控制有兩個要素:ACL 元素和訪問列表。訪問列表可以允許或拒絕某些用戶對此服務的訪問。
下面列出一些重要的 ACL 元素類型
* src : 源地址 (即客戶機IP地址)
* dst : 目標地址 (即服務器IP地址)
* srcdomain : 源名稱 (即客戶機名稱)
* dstdomain : 目標名稱 (即服務器名稱)
* time : 一天中的時刻和一周內的一天
* url_regex : URL 規則表達式匹配
* urlpath_regex: URL-path 規則表達式匹配,略去協議和主機名
* proxy_auth : 通過外部程序進行用戶驗證
* maxconn : 單一 IP 的最大連接數
為了使用控制功能,必須先設置 ACL 規則並應用。ACL 聲明的格式如下:
acl acl_element_name type_of_acl_element values_to_acl
註:
1. acl_element_name 可以是任一個在 ACL 中定義的名稱。
2. 任何兩個 ACL 元素不能用相同的名字。
3. 每個 ACL 由列表值組成。當進行匹配檢測的時候,多個值由邏輯或運算連接;換言之,即任一 ACL bbs.bitsCN.com 元素的值被匹配,,則這個 ACL 元素即被匹配。
4. 並不是所有的 ACL 元素都能使用訪問列表中的全部類型。
5. 不同的 ACL 元素寫在不同行中,Squid 將把它們組合在一個列表中。
我們可以使用許多不同的訪問條目。下面列出我們將要用到的幾個:
* http_access: 允許 HTTP 訪問。這個是主要的訪問控制條目。
* no_cache: 定義對緩存請求的響應。
訪問列表的規則由一些類似 ‘allow‘ 或 ‘deny‘ 的關鍵字構成,用以允許或拒絕向特定或一組 ACL 元素提供服務。
註:
1. 這些規則按照它們的排列順序進行匹配檢測,一旦檢測到匹配的規則,匹配檢測就立即結束。
2. 一個訪問列表可以有多條規則組成。
3. 如果沒有任何規則與訪問請求匹配,默認動作將與列表中最後一條規則對應。
4. 一個訪問條目中的所有元素將用邏輯與運算連接:
http_access Action 聲明1 AND 聲明2 AND 聲明 OR.
http_access Action 聲明3
多個 http_access 聲明間用或運算連接,但每個訪問條目的元素間用與運算連接。
5. 請記住列表中的規則總是遵循由上而下的順序。
7.下面我們來對squid幾種代理進行簡單配置:
標準的代理緩沖服務器的配置:
a.squid服務器上的配置
準備環境:軟件包:squid(任意版本)
雙網卡:eth0:192.168.1.1 eth1:10.106.34.12
如圖:
vi /etc/squid/squid.conf
http_port 192.168.1.1:3128 (可寫多個)
cache_mem 64MB
maximum_object_size 4096KB
reply_body_max_size 1024000 allow all
access_log /var/log/squid/access.log
visible_hostname proxy.test.com
cache_mgr [email protected]
http_access allow all
b.一切配置以後:
squid –z 初始化緩存
squid –k parse 檢查語法
service squid start 啟動squid
chkconfig squid on 加入開機啟動
netstat –nltp 查看3128端口是否打開
c.客服端的配置:
ip : 192.168.1.12 gw:192.168.1.1
然後打開瀏覽器工具選項連接局域網設置代理服務器
地址:192.168.1.1 端口:3128
在瀏覽器輸入http://www.google.cn即可訪問,上網了easy吧!
透明代理緩沖服務器的配置:
a. aquid服務器上的配置與標準的代理緩沖服務器幾乎一樣
差別就是:http_port 192.168.1.12:3128 transparent
b.添加iptables規則:
iptables -t nat -I PREROUTING -s 192.168.1.0/24 -p tcp -dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 53 -j SNAT -to-source 10.106.34.12
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport 53 -j SNAT -to-source 10.106.34.12
squid –k parse
service squid reload
c.客服端不需要在瀏覽器中指定代理服務器的地址,端口
但需設置上網的DNS
好了經過上三個步驟你就可以上網了
反向代理緩沖服務器配置
註意:反向代理和透明代理不能同時使用
步驟:
a. Squid服務器的設置,修改/etc/squid/squid.conf
同樣反向代理aquid服務器上的配置與標準的代理緩沖服務器幾乎一樣
不同之處:http_port 10.106.34.12:80 vhost
Cache_peer 192.168.1.12 parent 80 0 originserver weight=5 max-conn=30
上一行的解釋:定義web服務器 web服務器地址 服務器類型 http端口 icp端口 [可選項]
squid –k parse
service squid reload
b. 客服端的設置(註意:這時的客服端就是web服務器)
開啟web服務
好了通過以上配置外網即可訪問你的web服務器了
squid介紹及其簡單配置