Squid代理伺服器應用(二)
- 一、ACL通路控制
-
- 1.通路控制清單格式
- 環境配置
-
- Squid-Server(192.168.28.10)
- Web1 (192.168.28.20)、Web2 (192.168.28.30)
- 浏覽器通路web伺服器
- 二、Squid 日志分析
-
- 1、安裝圖像處理軟體包
- 2、添加不計入站點檔案,添加的域名将不被顯示在排序中
- 3、運作
- 4、驗證
- 5、添加計劃任務,執行每天生成報告
- 三、Squid 反向代理
-
- 環境配置
-
- Squid-Server(192.168.28.10)
- web1、web2
- web1(192.168.28.20)
- web2(192.168.28.30)
- 客戶機(192.168.184.100)的域名映射
- 客戶機的代理配置
- 浏覽器通路 http://www.mxx.com
一、ACL通路控制
- 在配置檔案 squid.conf 中,ACL 通路控制通過以下兩個步驟來實作:
- 步驟一:使用 acl 配置項定義需要控制的條件;
- 步驟二:通過 http_access 配置項對已定義的清單做“允許”或“拒絕”通路的控制。
1.通路控制清單格式
格式:acl 清單名稱 清單類型 清單内容 …
清單類型 | 定義的清單内容 |
---|---|
src | 源位址 |
dst | 目标位址 |
maxconn | 最大并發連接配接 |
port | 目标位址 |
dstdomain | 目标域 |
url_regex | 比對請求URL的任何部分 |
urlpath_regex | 與url_regex非常相似(不包含傳輸協定和主機名) |
time | 通路時間 |
例如:
vim /etc/squid.conf
......
acl localhost src 192.168.28.10/32 #源位址為 192.168.28.10
acl MYLAN src 192.168.28.0/24 #客戶機網段
acl destionhost dst 192.168.28.20/32 #目标位址為 192.168.28.20
acl MC20 maxconn 20 #最大并發連接配接 20
acl PORT port 21 #目标端口 21
acl DMBLOCK dstdomain .qq.com #目标域,比對域内所有站點
acl BURL url_regex -i ^rtsp:// ^emule:// #以 rtsp://、emule:// 開頭的 URL,-i表示忽略大小寫
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$ #以 .mp3、.mp4、.rmvb 結尾的 URL 路徑
acl WORKTIME time MTWHF 08:30-17:30 #時間為周一至周五 8:30~17:30,“MTWHF”為每個星期的英文首字母
環境配置
主機 | 作業系統 | IP位址 | 軟體、安裝包、工具 |
---|---|---|---|
Squid-Server | CentOS7 | 192.168.28.10 | squid-3.5.28.tar.gz |
Web1 | CentOS7 | 192.168.28.20 | httpd |
Web2 | CentOS7 | 192.168.28.30 | httpd |
客戶機 | Windows | 192.168.28.15 | ----- |
Squid-Server(192.168.28.10)
iptables -F
iptables -t nat -F
mkdir /etc/squid
vim /etc/squid/dest.list
192.168.28.20

vim /etc/squid.conf
......
acl destionhost dst "/etc/squid/dest.list" #調用指定檔案中的清單内容
......
http_access deny destionhost #注意,如果是拒絕清單,需要放在http_access allow all前面
http_port 3128
systemctl restart squid
netstat -natp | grep 3128
Web1 (192.168.28.20)、Web2 (192.168.28.30)
systemctl stop firewalld.service
setenforce 0
yum -y install httpd
systemctl start httpd
浏覽器通路web伺服器
浏覽器(192.168.28.15)通路Web伺服器 http://192.168.28.20 ,顯示被通路被拒絕,通路http://192.168.28.30則可以通路。
客戶機浏覽器打開代理功能,代理伺服器192.168.28.10,端口3128
二、Squid 日志分析
1、安裝圖像處理軟體包
- 需要使用線上源,出現報錯,将網卡配置檔案中的dns和網關修改回原樣
- 安裝圖像處理軟體包
yum install -y pcre-devel gd gd-devel
mkdir /usr/local/sarg
tar zxvf sarg-2.3.7.tar.gz -C /opt/
cd /opt/sarg-2.3.7
./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
make && make install
#---------./configure中子產品解釋---------------------------------------
--prefix=/usr/local/sarg #指定安裝目錄/usr/local/sarg
--sysconfdir=/etc/sarg #配置檔案目錄,預設是/usr/local/etc
--enable-extraprotection #額外安全防護
#------------------------------------------------------------------
vim /etc/sarg/sarg.conf
#---------7行,取消注釋---------------------------------------------
access_log /usr/local/squid/var/logs/access.log #指定通路日志檔案
#---------25行,取消注釋--------------------------------------------
title "Squid User Access Reports" #網頁标題
#---------120行,取消注釋-------------------------------------------
output_dir /var/www/html/squid-reports #報告輸出目錄
#---------178行,取消注釋-------------------------------------------
user_ip no #使用使用者名顯示
#---------184行,取消注釋,修改--------------------------------------
topuser_sort_field connect reverse #top排序中,指定連接配接次數采用降序排列,升序是normal
#---------190行,取消注釋,修改--------------------------------------
user_sort_field connect reverse #對于使用者通路記錄,連接配接次數按降序排序
#---------206行,取消注釋,修改--------------------------------------
exclude_hosts /usr/local/sarg/noreport #指定不計入排序的站點清單的檔案
#---------257行,取消注釋-------------------------------------------
overwrite_report no #同名同日期的日志是否覆寫
#---------289行,取消注釋,修改--------------------------------------
mail_utility mailq.postfix #發送郵件報告指令
#---------434行取消注釋,修改---------------------------------------
charset UTF-8 #指定字元集UTF-8
#---------518行,取消注釋-------------------------------------------
weekdays 0-6 #top排行的星期周期
#---------525行,取消注釋-------------------------------------------
hours 0-23 #top排行的時間周期
#---------633行,取消注釋--------------------------------------------
www_document_root /var/www/html #指定網頁根目錄
2、添加不計入站點檔案,添加的域名将不被顯示在排序中
touch /usr/local/sarg/noreport #建立不計入站點檔案
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/ #建立軟連接配接,便于系統識别
sarg --help #檢視指令幫助
3、運作
sarg #啟動一次記錄
4、驗證
- 此時安裝web服務在squid伺服器上,其他用戶端機器無法通路測試的頁面
yum install httpd -y
systemctl start httpd
- 浏覽器通路 http://192.168.28.10/squid-reports ,檢視sarg報告網頁
-
Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理 Squid代理伺服器應用(二)一、ACL通路控制二、Squid 日志分析三、Squid 反向代理
5、添加計劃任務,執行每天生成報告
vim /usr/local/sarg/report.sh #編輯腳本,日志分割
#/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y) #設定變量TODAY,表示今天的時間,格式:日/月/年
#Get one week ago today
YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y) #變量TESTEDAY,表示前一天的時間,格式:日/月/年
#指令sarg -l:導出緩存日志 -o:輸出到的目錄 -z:程序消息 -d:日期消息
/usr/local/sarg/bin/sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports -z -d $YESTERDAY-$TODAY &> /dev/null
exit 0 #退出傳回值是0
chmod +x /usr/local/sarg/report.sh
crontab -e #加入周期性計劃
0 0 * * * /usr/local/sarg/report.sh #每天的0:00執行
三、Squid 反向代理
如果 Squid 反向代理伺服器中緩存了該請求的資源,則将該請求的資源直接傳回給用戶端;否則反向代理伺服器将向背景的 Web 伺服器請求資源,然後将請求的應答傳回給用戶端,同時也将該應答緩存在本地,供下一個請求者使用。
工作機制:
●緩存網頁對象,減少重複請求
●将網際網路請求輪訓或按權重配置設定到内網Web伺服器
●代理使用者請求,避免使用者直接通路Web伺服器,提高安全
環境配置
主機 | 作業系統 | IP位址 | 軟體、安裝包、工具 |
---|---|---|---|
Squid-Server | CentOS7 | 192.168.28.10 | squid-3.5.28.tar.gz |
Web1 | CentOS7 | 192.168.28.20 | httpd |
Web2 | CentOS7 | 192.168.28.30 | httpd |
客戶機 | Windows | 192.168.28.15 | ----- |
Squid-Server(192.168.28.10)
vim /etc/squid.conf
......
#---------60行,修改,插入-------------------------------------------
http_port 192.168.28.10:80 accel vhost vport
cache_peer 192.168.28.20 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.28.30 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.mxx.com
systemctl stop httpd #關閉httpd服務,以免幹擾squid重新開機
systemctl restart squid
#---------解釋-----------------------------------------------------
http_port 80 accel vhost vport
#squid從一個緩存變成了一個Web伺服器使用加速模式,這個時候squid在80端口監聽請求,同時和web server的請求端口(vhost vport)綁定,這個時候請求到了squid,squid是不用轉發請求的,而是直接要麼從緩存中拿資料要麼向綁定的端口直接請求資料。
accel:反向代理加速模式
vhost:支援域名或主機名來表示代理節點
vport:支援ip和端口來表示代理節點
parent:代表為父節點
80:HTTP_PORT
0:ICP_PORT
no-query:不做查詢操作,直接擷取資料
originserver:指定是源伺服器
round-robin:指定 squid 通過輪詢方式将請求分發到其中一台父節點
max_conn:指定最大連接配接數
weight:指定權重
name:設定别名
web1、web2
systemctl stop firewalld.service
setenforce 0
yum install -y httpd
systemctl start httpd
web1(192.168.28.20)
echo "this is mxx" >> /var/www/html/index.html
web2(192.168.28.30)
echo "this is zx" >> /var/www/html/index.html
客戶機(192.168.184.100)的域名映射
修改 C:\Windows\System32\drivers\etc\hosts 檔案
192.168.28.10 www.mxx.com