Squid代理服務器linux
一 Squid服務基礎web
Squid是linux系統中很經常使用的一款開源代理服務軟件,能夠很好的實現HTTP、FTP以及DNS查詢、SSL等應用的緩存代理,功能十分強大瀏覽器
·緩存代理概述緩存
代理的工做機制服務器
1工做機制網絡
客戶端經過代理請求web頁面時,指定的代理服務器會先檢查本身的緩存,若是緩存中有客戶需求的頁面,則直接將緩存中的頁面反饋給客戶端;若是沒有,則緩存服務器本身向internet中發送請求,得到所需頁面後,會將頁面保存在本身的緩存中併發送給客戶端併發
2優勢dom
減小了向internet提交重複的請求,提升了響應速度ide
隱藏用戶的真實IP地址,起到必定的保護做用工具
還能夠配置代理服務器達到過濾的目的
代理的基本類型
根據實現方式不一樣能夠分爲傳統代理和透明代理
1傳統代理:在客戶機的瀏覽器、QQ聊天工具、下載軟件等程序中,須要手動指定代理服務器的地址和端口,而後才能使用代理來訪問網絡;使用傳統代理時,網頁瀏覽器訪問網站時的域名解析請求會發給指定的代理服務器
2透明代理:客戶機不須要指定代理服務器的地址和端口,而是經過默認路由、防火牆策略將web訪問重定向,實際仍交給代理服務器處理;使用透明代理時,網頁瀏覽器訪問網站時的域名解析請求將優先發給DNS服務器
反向代理:用來爲企業Web站點提供緩存加速,適用於Internet中的大量用戶訪問企業的單個(或少許)Web站點的狀況
·Squid的基本配置
Squid服務端
軟件包:squid-2.6.STABLE21-6.el5
系統服務:squid
主程序:/usr/sbin/squid
主配置文件:/etc/squid/squid.conf
默認監聽端口:TCP 3128
默認訪問日誌:/var/log/squid/access.log
安裝服務:提早查看一下是否安裝
經常使用配置項
配置文件中註釋太多,先過略一下(沒有的配置項可手動添加,不然默認)
http_port 3128
access_log /var/log/squid/access.log squid
cache_mem 64 MB
cache_dir ufs /var/spool/squid 100 16 256
visible_hostname proxy.benet.com
dns_testnames www.google.com www.163.com
maximum_object_size 4096 KB
reply_body_max_size 10240000 allow all
二構建代理服務器
·傳統代理
案例環境:如圖所示
Squid服務器的配置
默認安裝好squid服務後,服務器只對本身進行代理,須要配置主機名、添加訪問策略、其餘配置能夠默認
1修改squid.conf配置文件(其餘默認)
2初始化並啓動服務(自動初始化)
或者使用squid –z初始化,squid –D啓動
確認服務正常監聽
客戶端的配置
1打開瀏覽器,打開internet選項,單擊鏈接選項卡
2點擊局域網設置,勾選並輸入代理服務器地址和默認端口
3測試訪問(客戶端不用指定DNS服務器也能夠)
192.168.1.2
4查看日誌
查看代理服務器跟蹤日誌
查看web服務器訪問日誌,沒有客戶端的地址
·透明代理
透明代理的實現依賴於默認路由和防火牆的重定向策略,適用於爲局域網主機服務,而不適用於爲internet客戶機服務
案例環境:如圖所示;Linux網關提供透明代理服務;局域網經過代理訪問Internet中的網站
配置Squid服務器
1添加透明代理支持並重啓服務
2開啓路由功能
3設置防火牆策略
清空規則
將訪問網站協議HTTP、HTTPS的外發數據轉交給本機的squid服務(3128端口)
此時已經可讓客戶端使用IP進行訪問了,可是不能經過域名訪問,由於域名請求不能經過網關防火牆,還須要編寫SNAT規則
最後進行訪問測試並查看日誌驗證
三ACL訪問控制
Squid提供了強大的代理控制機制,經過合理設置ACL(訪問控制列表)並進行限制,能夠針對源地址、目標地址、訪問的URL路徑、訪問的時間等各類條件進行過濾
在配置文件squid.conf中。ACL訪問控制經過如下兩個步驟實現:
·定義ACL列表
每一行acl配置能夠定義一條訪問控制列表,格式以下
acl 列表名稱 列表類型 列表內容 ...
列表名稱:由管理員自行指定
列表類型:必須使用Squid預約義的值,包括:
src 源地址(能夠是網段、IP地址範圍)
dst 目標地址
port 目標端口
dstdomain 目標域,域內全部站點
time 訪問時間;如MTWHFAS 8:60-17:30表示每一天的這個時間
maxconn 最大併發鏈接
url_regex 目標URL地址;如:url_regex –i ^rhsp://
Urlpath_regex 整個目標URL路徑
列表內容:是控制的主要對象,能夠有多個值,以空格分隔,爲"或"的關係
例如:
若是要限制指定地址,能夠調用黑白名單(提早建立黑白名單)
·設置acl訪問權限
定義好各類訪問控制列表後,須要使用http_access配置項來進行控制;每一條配置必須放在acl配置行以後;格式以下
http_access allow或deny 列表名稱 ...
每一條http_access規則中能夠包含多個acl列表名,以空格風格,爲"與"的關係,即知足全部acl列表對應的條件纔會進行限制,可使用!取反
例如:定義一條acl名爲all,而後拒絕全部地址
注意:
在沒有設置任何規則時,默認拒絕全部
有規則但沒有acl時,會採用最後一條規則相反的規則
綜合示例
測試訪問,被阻止時的顯示
不容許下載時的顯示