4 Squid代理服務器

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    /監聽端口號,默認3128;還能夠直接指定IP地址:http_port 1.1.1.1:3128

access_log /var/log/squid/access.log squid    /指定日誌文件位置和記錄方式

cache_mem 64 MB        /緩存大小,容量爲4的倍數;建議設置爲內存的1/4或1/3

cache_dir ufs /var/spool/squid 100 16 256    /指定緩存數據所使用的格式、目錄、容量、一級子目錄個數、二級子目錄個數;當執行了此參數後會在/var/spool/squid/下建立16個子目錄

visible_hostname proxy.benet.com    /指定代理服務器的主機名

dns_testnames www.google.com www.163.com        /用來執行DNS測試,確保服務器自身的DNS查詢正常

maximum_object_size 4096 KB    /容許保存到緩存空間的最大文件大小,被限制的文件將不會緩存,而是直接轉給用戶;若是緩存視頻、音頻等文件需適當調整此參數

reply_body_max_size 10240000 allow all    /容許用戶下載的最大文件大小(字節)默認爲0字節,表示不限制

二構建代理服務器

·傳統代理

案例環境:如圖所示

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訪問控制經過如下兩個步驟實現:

  1. 使用acl配置項定義須要控制的條件;
  2. 經過http_access配置項對已定義的列表作"容許"或"拒絕"訪問的控制

·定義ACL列表

每一行acl配置能夠定義一條訪問控制列表,格式以下

acl 列表名稱 列表類型 列表內容 ...

列表名稱:由管理員自行指定

列表類型:必須使用Squid預約義的值,包括:

src 源地址(能夠是網段、IP地址範圍)

dst 目標地址

port 目標端口

dstdomain 目標域,域內全部站點

time 訪問時間;如MTWHFAS 8:60-17:30表示每一天的這個時間

maxconn 最大併發鏈接

url_regex 目標URL地址;如:url_regex –i ^rhsp://    -i表示忽略大小寫

Urlpath_regex 整個目標URL路徑

列表內容:是控制的主要對象,能夠有多個值,以空格分隔,爲"或"的關係

例如:

若是要限制指定地址,能夠調用黑白名單(提早建立黑白名單)

·設置acl訪問權限

定義好各類訪問控制列表後,須要使用http_access配置項來進行控制;每一條配置必須放在acl配置行以後;格式以下

http_access allow或deny 列表名稱 ...

每一條http_access規則中能夠包含多個acl列表名,以空格風格,爲"與"的關係,即知足全部acl列表對應的條件纔會進行限制,可使用!取反

例如:定義一條acl名爲all,而後拒絕全部地址

注意:

在沒有設置任何規則時,默認拒絕全部

有規則但沒有acl時,會採用最後一條規則相反的規則

綜合示例

測試訪問,被阻止時的顯示

不容許下載時的顯示

相關文章
相關標籤/搜索