1、squid簡介
Squid Cache
(簡稱爲
Squid
)是
HTTP
代理服務器
軟件。Squid用途普遍的,能夠做爲
緩存服務器
,
代理用戶向web服務器請求數據並進行緩存,
能夠過濾流量幫助網絡安全,也能夠做爲代理服務器鏈中的一環,向上級代理轉發數據或直接鏈接互聯網。
還也能夠用在局域網中,使局域網用戶經過代理上網。
Squid將數據元緩存在內存中,同時也緩存
DNS查尋的結果,除此以外,它還支持非模塊化的DNS查詢,對失敗的請求進行消極緩存。Squid支持SSL,支持
訪問控制。因爲使用了ICP,Squid可以實現重疊的代理陣列,從而最大限度的節約帶寬。
Squid由一個主要的服務程序Squid,一個DNS查詢程序
dnsserver,幾個重寫請求和執行認證的程序,以及幾個管理工具組成。當Squid啓動之後,它能夠派生出指定數目的
dnsserver進程,而每個dnsserver進程均可以執行單獨的DNS查詢,這樣一來就大大減小了服務器等待DNS查詢的時間。
Squid的另外一個優越性在於它使用
訪問控制清單(ACL)和訪問權限清單(ARL)。訪問控制清單和訪問權限清單經過阻止特定的網絡鏈接來減小潛在的Internet非法鏈接,可使用這些清單來確保內部網的主機沒法訪問有威脅的或不適宜的站點。
2、squid應用
squid便可以做爲正向代理服務器也能夠做爲反向代理服務器。更多關於代理服務器分類,請參考博文:
系統原理分析架構-三--代理服務器簡介及分類
(2014-10-15 19:54)
注:原本此文是講解squid做爲反向代理的頁面緩存功能的,可是因爲squid經常使用的還有正向代理功能,所以也一併講解,後續文章中也會以這種思路進行講解,這樣經過對比更能加深對整個squid的理解。
一、squid正向代理服務器
舉個簡單的例子,倘若公司內網機器正常來講都不讓訪問外網。可是因爲工做須要,爲研發同事配備了一臺統一可以訪問外網查看資料的機器。這樣每次你們有須要上外網則須要爭搶惟一一臺外網主機。這種狀況在大多數公司存在。聰明的程序員確定不願罷休,怎麼也要把本身機器搗鼓出能上外網。這時候squid正向代理就能派上用場了。
注:正向代理還包括透明代理,本專題。
二、使用squid正向代理訪問外網:
(1)環境:
假設windows機器不能訪問外網,能訪問內網。(windows7)
有一臺linux服務器,能訪問外網,且windows機器可以與該機器互相訪問。(centos 6.5 mini版,ip:192.168.10.36)
|
(2)node36上安裝squid:
#
yum install squid #安裝squid
#
vim /etc/sysctl.conf#開啓路由轉發功能
net.ipv4.ip_forward設置爲1
#
vi /etc/sysconfig/network
#
sysctl -p#路由強制生效
# service network restart
配置squid:
#
vim /etc/squid/squid.conf
#http_port指令告訴squid在哪一個端口偵聽HTTP請求。默認端口是3128
#緩存目錄的設置,能夠設置多個緩存目錄,語法爲:<cache_dir> <aufs|ufs> <目錄所在> <MBytes大小> <dir1> <dir2>
#設置acl訪問控制表
以容許192.168.10.0/24網段內全部客戶機訪問代理服務器爲示例:
配置文件中添加acl my_allow_net src 192.168.10.0/24
配置文件中添加acl my_allow_net src 192.168.10.0/24
(注:該記錄必定要添在deny all以前,應該配置文件讀到deny all則後面的配置文件就不生效)
# squid -k parse
假如你看不到輸出,配置文件有效,你能繼續後面的步驟。然而,若是配置文件包含錯誤,squid會告訴你
# squid -z #初始化緩存空間
# /etc/init.d/squid restart#重啓squid生效,起送squid時間比較長,耐心等待
(3)windows下測試代理服務器:
瀏覽器訪問baidu.com
後臺日誌:
tailf /var/log/squid/access.log
普通正向代理成功。
三、高級功能配置項
#中止squid 最安全的中止squid的方法是使用squid -k shutdown命令: # squid -k shutdown
#重配置運行中的squid進程,重配置運行中的squid最好的方法是使用squid -k reconfigure命令: # squid -k reconfigure
#禁止來自某些IP地址的訪問,在squid配置文件中添加如下acl名稱及訪問規則,並從新加載配置文件 acl deny_net src 192.168.20.6/32 http_access deny deny_net
#禁止在某些時段訪問 acl Working_times MTWHF 08:00-17:00 http_access allow Working_times http_access deny !Working_times # 禁止某個代理客戶創建過多鏈接 acl MaxConnLimit maxconn 4 http_access deny MaxConnLimit
|
四、關於squid的透明代理
透明代理業屬於正向代理的一種,不一樣的是普通代理須要在客戶端(瀏覽器局域網代理服務器)設置代理IP和PORT,而透明代理再經過
NAT功能,將特定的數據請求映射到代理服務器上。
ex:#iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.62.0/24 --dport 80 -j REDIRECT --to-ports 3128
透明代理再也不過多講解,有興趣請自行查閱相關資料。