1. 程式人生 > >Squid緩存服務器之ACL訪問控制與反向代理

Squid緩存服務器之ACL訪問控制與反向代理

滿足 大小寫 別名 字母表 星期 80端口 process con 方式

Squid緩存服務器之ACL訪問控制與反向代理

1、ACL訪問控制

  • Squid提供了強大的代理控制機制和,通過合理設置ACL並進行限制。可以針對原地址、目標地址、訪問的URL路徑、訪問的時間等各種條件進行過濾。
  • 在配置文件squid.conf中ACL訪問控制通過以下兩個步驟來實現:其一,使用acl配置項定義需要控制的條件;其二,通過http_access配置項對已定義的列表做“允許”或者“拒絕”訪問的控制。

1)、定義訪問控制列表

  • 每一行acl配置可以定義一條訪問控制列表,格式如下:
acl 列表名稱 列表類型 列表內容···
  • 其中,“列表名稱”有管理員自行指定,用來識別控制條件;“列表類型”必須使用Squid預定義的值,對應不同類型的控制條件;“列表內容”是要控制的具體對象,不同類型的列表所對應的內容也不一樣,可以有多個值(以空格分割,都為“或”的關系)。
  • 常用的訪問控制列表類型:
列表類型 列表內容示例 含義/用途
src 192.168.1.168;192.168.1.0/24;192.168.1.0-192.168.3.0/24 源IP地址、網段、IP地址範圍
dst 216.163.137.3;61.135.167.167/24;www.baidu.com 目標IP地址、網段、主機名
port 80;443;8080;20;21 目標端口
dstdomain .qq.com 目標域,匹配域內所有站點
time MTWHF 8:30-17:30;12:00-13:00;AS 使用代理服務器的時間段;字母表示一星期中個天的縮寫;M-Monday、T-Tuesday、W-Wednesday、H-Thursday、F-Friday、A-Saturday、S-Sunday
maxconn 20 每個客戶機的並發連接數
url_regex url_regex -i ^rtsp://;url_regex -i ^emule:// 目標資源的URL地址,-i表示忽略大小寫
urlpath_regex urlpath_regex -i sex sdult;urlpath_regex -i .mp3$ 目標資源的額、整個URL路徑,-i表示忽略大小寫

2)、設置訪問權限

  • 定義好好、各種訪問控制列表以後,需要使用http_access配置項來進行控制。需要註意的是,http_accss配置行必須放在對應的acl設置行之後。每一行http_access配置確定一條訪問控制規則,格式如下:
http_access alow或deny 列表名···
  • 在每一條http_access規則中,可以同時包含多個訪問控制列表名,每個列表之間以空格分隔,與“與”的關系,表示必須滿足所有訪問控制列表對應的條件才會進行限制。需要使用取反條件是,可以在訪問控制列表前添加“!”符號。
  • 訪問控制時,Squid將按照各條規則的順序依次進行檢查,如果找到一條項匹配的規則就不再向後搜索。因此規則順序安排是非常重要的,以下兩種默認情況需要我們註意。
(1)、沒有設置任何規則時;Squid服務將拒絕客戶端的請求
(2)、有規則但找不到相匹配的項:Squid將采用與最後一條規則相反的權限,即如果最後一條規則時allow,就拒絕客戶端的請求,否則允許該請求。

3)、 驗證訪問控制效果

  • 在Squid代理服務器上設置是內網客戶機192.168.100.101訪問不到外網Web服務器192.168.190.128;

技術分享圖片技術分享圖片技術分享圖片

2、反向代理

  • squid反向代理可以加速網站的訪問速度,可將不同的URL請求分發到後臺不同的web服務器上,同時互聯網用戶只能看到反向代理服務器的地址,加強網站的訪問安全。

  • squid反向代理加速的原理描述如下:

  • (1)、Squid反向代理服務器位於本地Web服務器和Internet之間,客戶端請求訪問Web服務器時,DNS將訪問的域名解析為Squid反向代理服務器的IP地址,客戶端將訪問Squid代理服務器。

  • (2)、如果Squid反向代理服務器緩存了該請求的資源,則將該請求的資源返回給客戶端,否則反向代理服務器將向後臺的Web服務器請求資源,然後將應答資源返回給客戶端,同時也將該資源在本地緩存一份,供下一個請求使用。

1)、Squid反向代理實驗拓補圖

技術分享圖片

2)、Squid反向代理實驗環境

服務器 IP地址 功能
代理服務器 172.16.190.130 squid代理服務
client 172.16.190.132 負責訪問
真實服務器1 172.16.190.128 提供http服務
真實服務器2 172.16.10.131 提供http服務

3)、實驗步驟

  • (1)、配置squid代理服務器

vim /etc/squid.conf

http_port 192.168.190.130:80 accel vhost vport   # 將端口監聽在 172.16.10.137的80端口上,accel 指啟用加速模式,vhost,vport用於轉發請求
cache_peer 192.168.190.128 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1      #cache_peer 指定後端服務器地址,80 為後端服務端口,0 為 ICP 端口號(多個 Squid 時用),originserver 指定資源服務器,round-robin指使用輪詢方式,weight指的是權重,自由分配,name 指定一個別名
cache_peer 192.168.190.131 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.yun.com #定義兩個個基於域名的控制列表,分別命名為web1,web2

技術分享圖片

  • (2)、開啟http服務即可

  • (3)、修改客戶端win7的地址解析使之識別www.yun.com

技術分享圖片技術分享圖片技術分享圖片

Squid緩存服務器之ACL訪問控制與反向代理