Squid cache(簡稱爲Squid)是一個流行的自由軟件(GNU通用公共許可證)的代理服務器和Web緩存服務器。Squid有普遍的用途,從做爲網頁服務 器的前置cache服務器緩存相關請求來提升Web服務器的速度,到爲一組人共享網絡資源而緩存萬維網,域名系統和其餘網絡搜索,到經過過濾流量幫助網絡 安全,到局域網經過代理上網。Squid主要設計用於在Unix和Linux一類系統運行。
有關代理服務器,主要有如下幾個特色:
應用層代理
一、針對特定的網絡協議進行代理
二、典型應用:HTTP代理和FTP代理
代理服務器做用
一、局域網內主機能夠經過網內能夠訪問的主機去訪問外網
二、能夠提供緩存,提升訪問效率
三、能夠實現必定程度的訪問控制
squid服務具備的功能
一、提供HTTP和FTP協議的代理
二、緩存代理內容,提升訪問速度
三、對客戶機進行訪問控制(基於目標地址或時間)
squid代理類型
正向代理:爲客戶端提供代理服務,須要客戶端指定IP
反向代理:爲服務器提供代理服務,目的爲了減輕真實服務器負擔
透明代理:特殊的正向代理,不須要客戶端作任何設置,代理服務器必須是網關,就至關於路由器和防火牆緩存
SQUID工做原理是什麼?
1、SQUID緩存的存放方式:
每一臺Squid 代理服務器上都有若干顆硬盤,每顆硬盤又分割成多個分區,每個分區又可創建不少目錄,目錄下才放文件(Squid 把它叫object)。安全
2、SQUID的查詢方式:
SQUID經過查詢表的方式來定位某個資源的位置,所查詢的表叫Hash table 和Digest table;Digest table在這裏能夠稱之爲摘要或者索引,它記錄了磁盤上每一個分區,每一個目錄裏存的緩存摘要,Hash table在這裏能夠稱之爲目錄或者提綱,它記錄全部的Digest table表信息,SQUID接受到請求後先查詢Hash table,在根據Hash table所指向的Digest table查詢須要的信息。服務器
3、SQUID服務器之間的關係:
SQUID服務器存在兩種工做關係,一種爲Child、Parent,當child squid server沒有用戶須要的數據時,就象parent server發出請求,並持續等待,直到parent server迴應本身爲止;另一種爲ibling,當本地SQUID server沒有用戶請求數據時,會向sibling server發出請求,若是sibling server沒有資料則會向上級sibling或者INTERNET發送數據請求。網絡
4、SQUID運做模式
1. 當Squid Server 沒有資料時,會先向Sibling 的Squid Server 要資料,若是Sibling沒資料,就跳過它直接向Parent 要。
2. 向Parent 要資料,然後一直等,直到Parent 給它資料爲止(Parent 本身有的資料或上Internet 去拿)。
3. 沒有Parent 時,就本身上Internet 去拿。
4. 若是這三者都拿不到資料,才向用戶端回報拿不到資料。
通常而言,把網路上一層的Squid Server 設成Sibling 是不錯的選擇(例如:一個學校將所在城市網和附近的大學設成Sibling),由於網路上一層的Squid Server 服務對象較多,其硬件功能較強,離咱們比較近,速度也比較快;萬一要不到資料,咱們還能夠本身上Internet 去拿。那什麼時候設Parent?當您的出口只有一個,或上一層Squid Server 拿不到資料,本身也必定拿不到,只好將上一層Squid Server 設爲Parent。tcp
案例一:ide
透明代理:ui
拓撲圖spa
具體配置步驟:設計
5.配置DNS nat轉換代理
[root@ws ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport 53 -o eth1 -j MASQUERADE
6.設置端口重定向
[root@ws ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j REDIRECT --to-ports 3128
7.在squid配置中加入 transparent
案例二:
拓撲圖
具體配置步驟: