缓存加速-----Squid-访问控制列表日志分析反向代理
文章目錄
- 一: ACL訪問控制
- 1.1: ACL訪問控制概述
- 1.2: ACL訪問控制實驗
- 二: Squid日志分析
- 三: 反向代理
- 3.1: 反向代理詳解
- 3.2: 實驗分析以及結(jié)構(gòu)圖
- 3.3: 具體操作分析
一: ACL訪問控制
1.1: ACL訪問控制概述
-
ACL訪問控制方式
acl 列表名稱 列表類型列表內(nèi)容...
根據(jù)源地址、目標(biāo)URL、文件類型等定義列表 -
針對已定義的acl列表進行限制
http_access allow或deny 列表名稱... -
ACL規(guī)則優(yōu)先級
一個用戶訪問代理服務(wù)器時,Squid會順序匹配Squid中定義的所有規(guī)則列表,一旦匹配成功,立即停止匹配
所有規(guī)則都不匹配時,Squid會使用與最后一條相反的規(guī)則 -
常用的ACL列表類型
src --> 源地址 dst --> 目標(biāo)地址 port端口 odstdomain -->目標(biāo)域 time -->訪問時間 maxconn -->最大并發(fā)連接 url_regex -->目標(biāo)URL地址 Urlpath_regex -->整個目標(biāo)URL路徑 -
最簡單的ACL控制
禁止任何客戶機使用此代理服務(wù)
[root@localhost~]# viletclsquid.conf acl all src 0.0.0.0/0.0.0.0 http_access deny all 定義一條名為all的列表,匹配來自任意 源地址的代理訪問;然后拒絕此列表 -
ACL綜合應(yīng)用1
[root@localhost~]# vi letclsquid.conf ...... acl all src 0.0.0.0/0.0.0.0 acl MYLAN src 192.168.1.0/24 192.168.4.0/24 acl WORKTIMEtime MTWHF 08:30-17:30 http_access allow MYLAN WORKTIME http_access deny all
允許多個局域網(wǎng)段在工作時間上網(wǎng)
1.2: ACL訪問控制實驗
-
做傳統(tǒng)代理,(也可以基于透明代理)
1.解壓squid軟件包 monut.cifs //192.168.1.150/qq-Download /mnt cd /mnt tar xzvf squid-3.4.6.tar.gz -C /opt 2.安裝相關(guān)軟件包 yum install gcc gcc-c++ make -y 3.配置服務(wù)模塊,編譯安裝 cd /opt/squid-3.4.6/ ./configure \ --prefix=/usr/local/squid \ --sysconfdir=/etc --enable-arp-acl \ --enable-linux-netfilter \ --enable-linux-tproxy \ --enable-async-io=100 \ --enable-err-language="Simplify_Chinese" \ --enable-underscore \ --enable-poll \ --enable-gnuregexmake && make install 4.創(chuàng)建軟鏈接,優(yōu)化服務(wù)控制方式 ln -s /usr/local/squid/sbin/squid /usr/local/sbin/ 5.創(chuàng)建squid用戶 useradd -M -s /sbin/nologin squid 6.修改squid中的var的屬性 chown -R squid.squid /usr/local/squid/var/ 7.編輯squid的配置文件 vim /etc/squid.conf55 # And finally deny all other access to this proxy56 http_access allow all57 http_access deny all //允許所有用戶訪問58 59 # Squid normally listens to port 312860 http_port 3128 61 cache_mem 64 MB //指定緩存功能所使用的內(nèi)存空間大小62 reply_body_max_size 10 MB //允許用戶下載的最大文件大小63 maximum_object_size 4096 KB //允許保存到緩存空間的最大對象大小64 cache_effective_user squid //添加指定程序用戶65 cache_effective_group squid //添加指定賬戶基本組66 67 # Uncomment and adjust the following to add a disk cache directory.68 #cache_dir ufs /usr/local/squid/var/cache/squid 100 16 2568.編輯防火墻規(guī)則 iptables -F //清除所有規(guī)則 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT //允許目標(biāo)端口3128做轉(zhuǎn)發(fā)9.檢查語法并且開啟服務(wù) squid -k parse //檢查配置文件語法 squid -z //初始化緩存目錄 squid //啟動服務(wù) [root@squid ~]# netstat -natp | grep squid tcp6 0 0 :::3128 :::* LISTEN 36414/(squid-1) [root@squid ~]# 10.編輯腳本,優(yōu)化服務(wù)控制方式(service 工具) vim /etc/init.d/squid #!/bin/bash #chkconfig: 2345 90 25 PID="/usr/local/squid/var/run/squid.pid" CONF="/etc/squid.conf" CMD="/usr/local/squid/sbin/squid"case "$1" in start)netstat -natp | grep squid &> /dev/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在啟動 squid...."echo "成功啟動"$CMDfi;; stop)$CMD -k kill &> /dev/nullrm -rf $PID &> /dev/null;; status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -natp | grep squidelseecho "squid is not running"fi;; restart)$0 stop &> /dev/nullecho "正在關(guān)閉 squid..."echo "關(guān)閉成功"$0 start &> /dev/nullecho "正在啟動 squid..."echo "啟動成功";; reload)$CMD -k reconfigure;; check)$CMD -k parse;;*)echo "用法:$0{start|stop|status|reload|check|restart}";; esacchmod +x /etc/init.d/squid //添加服務(wù)執(zhí)行權(quán)限 chkconfig --add squid //添加到service的服務(wù)列表 chkconfig --level 35 squid on //開機自啟 [root@localhost ~]# service squid restart 正在關(guān)閉 squid... 關(guān)閉成功 正在啟動 squid... 啟動成功 -
修改squid配置文件
禁止源地址訪問
[root@squid ~]# vim /etc/squid.conf ... # should be allowed acl netlocal src 192.168.100.30 '添加ACL規(guī)則' ... # Deny requests to certain unsafe ports http_access deny netlocal '拒絕netlocal列表訪問' [root@squid ~]# service squid reload '重新加載如無' -
禁止訪問目的地址
[root@squid ~]# mkdir /etc/squid [root@squid ~]# vim /etc/squid/denyip.list '創(chuàng)建文件' 192.168.100.150 '添加目的地址,web服務(wù)器的地址' [root@squid ~]# vim /etc/squid.conf # should be allowed acl destionhost dst "/etc/squid/denyip.list" '添加絕對路徑'# Deny requests to certain unsafe ports http_access deny destionhost '添加規(guī)則' [root@squid ~]# service squid reload取消調(diào)用
取消調(diào)用后可以訪問web
二: Squid日志分析
-
Sarg(Squid Analysis Report Generator),是一款squid日志分析工具,采用HTML的格式,詳細列出每一位用戶訪問Internet的站點信息、時間占用信息、排名、連接次數(shù)、訪問量等
-
在squid代理服務(wù)器上配置sarg服務(wù)
1.安裝必要軟件包 yum install -y gd gd-devel2.解壓軟件包 tar xzvf sarg-2.3.7.tar.gz -C /opt3.安裝功能模塊,編譯安裝 mkdir /usr/local/sarg //創(chuàng)建安裝目錄 cd /opt/sarg-2.3.7 ./configure \ --prefix=/usr/local/sarg \ --sysconfdir=/etc/sarg \ //配置文件存放位置 --enable-extraprotection //額外的安全防護 make && make install 4.編輯sarg的配置文件 [root@squid ~]# vim /etc/sarg/sarg.conf //開啟以下功能 前面數(shù)字位行號 7 access_log /usr/local/squid/var/logs/access.log //指定訪問日志文件 25 title "Squid User Access Reports" //網(wǎng)頁標(biāo)題 120 output_dir /var/www/html/squid-reports //輸出網(wǎng)頁的目錄 178 user_ip no //是否使用用戶名顯示 184 topuser_sort_field connect reverse //top排序中有連接次數(shù)、訪問字節(jié)、降序排列 降序為reverse,升序為normal 206 exclude_hosts /usr/local/sarg/noreport //不計入排序的站點列表文件,需要創(chuàng)建 257 overwrite_report no //不覆蓋同名日志 289 mail_utility mailq.postfix //發(fā)送郵件報告,命令 434 charset UTF-8 //開啟字符集 517 weekdays 0-6 //按星期周期排序 525 hours 0-23 //按小時周期排序 633 www_document_root /var/www/html //網(wǎng)頁根目錄5.添加不計入站點文件,添加的域名將不被顯示在排序中 touch /usr/local/sarg/noreport6.創(chuàng)建軟鏈接,優(yōu)化服務(wù)控制方式 ln -s /usr/local/sarg/bin/sarg /usr/local/bin7.安裝http服務(wù) yum install httpd -y8.開啟日志分析服務(wù) [root@squid ~]# sarg SARG: 紀(jì)錄在文件: 17, reading: 100.00% SARG: 成功的生成報告在 /var/www/html/squid-reports/2020Feb03-2020Feb04 [root@squid ~]# 9.開啟httpd服務(wù),關(guān)閉防火墻 [root@squid ~]# systemctl stop firewalld [root@squid ~]# setenforce 0 [root@squid ~]# systemctl start httpd [root@squid ~]# netstat -natp | grep 80 tcp6 0 0 :::80 :::* LISTEN 1631/httpd -
計劃性任務(wù)的sarg的日志分析
sarg命令常用選項: -l 指定輸入日志來源 -o 指定輸出目錄 -z 處理信息 -d 指定日期 -
執(zhí)行周期性計劃任務(wù),每天生成報告
[root@squid squid-reports]# sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports/ -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y) -
在客戶機訪問,日志報告網(wǎng)頁
日志分割后
三: 反向代理
3.1: 反向代理詳解
-
squid作為代理服務(wù)軟件,其主要功能是使用代理上網(wǎng)可以節(jié)約緊缺的IP地址資源,而且可以阻斷外部主機對內(nèi)部主機的訪問,有一定的安全性,但是如果想讓互聯(lián)上的主機訪問內(nèi)部網(wǎng)的主機資源(例如:web站點),又想使內(nèi)部主機免受外部網(wǎng)主機攻擊,一般的代理服務(wù)是不能實現(xiàn)的這就需要反向代理來實現(xiàn)
-
什么是反向代理呢?其實,反向代理也就是通常所說的web服務(wù)器加速,它是一種通過在繁忙的WEB服務(wù)器和internet之間增加一個高速的web緩沖服務(wù)器(即:web反向代理服務(wù)器)來降低實際的web服務(wù)器的負載
-
下面將對幾種典型的代理服務(wù)作一個簡單的比較。在網(wǎng)絡(luò)上常見的代理服務(wù)器有三種:
1. 標(biāo)準(zhǔn)的代理緩沖服務(wù)器(傳統(tǒng)代理)
一個標(biāo)準(zhǔn)的代理緩沖服務(wù)被用于緩存靜態(tài)的網(wǎng)頁(例如:html文件和圖片文件等)到本地網(wǎng)絡(luò)上的一臺主機上(即代理服務(wù)器)。當(dāng)被緩存的頁面被第二次訪問的時候,瀏覽器將直接從本地代理服務(wù)器那里獲取請求數(shù)據(jù)而不再向原web站點請求數(shù)據(jù)。這樣就節(jié)省了寶貴的網(wǎng)絡(luò)帶寬,而且提高了訪問速度。但是,要想實現(xiàn)這種方式,必須在每一個內(nèi)部主機的瀏覽器上明確指明代理服務(wù)器的IP地址和端口號。客戶端上網(wǎng)時,每次都把請求送給代理服務(wù)器處理,代理服務(wù)器根據(jù)請求確定是否連接到遠程web服務(wù)器獲取數(shù)據(jù)。如果在本地緩沖區(qū)有目標(biāo)文件,則直接將文件傳給用戶即可。如果沒有的話則先取回文件,先在本地保存一份緩沖,然后將文件發(fā)給客戶端瀏覽器。
2. 透明代理緩沖服務(wù)器
透明代理緩沖服務(wù)和標(biāo)準(zhǔn)代理服務(wù)器的功能完全相同。但是,代理操作對客戶端的瀏覽器是透明的(即不需指明代理服務(wù)器的IP和端口)。透明代理服務(wù)器阻斷網(wǎng)絡(luò)通信,并且過濾出訪問外部的HTTP(80端口)流量。如果客戶端的請求在本地有緩沖則將緩沖的數(shù)據(jù)直接發(fā)給用戶,如果在本地沒有緩沖則向遠程web服務(wù)器發(fā)出請求,其余操作和標(biāo)準(zhǔn)的代理服務(wù)器完全相同。對于Linux操作系統(tǒng)來說,透明代理使用Iptables或者Ipchains實現(xiàn)。因為不需要對瀏覽器作任何設(shè)置,所以,透明代理對于ISP(Internet服務(wù)器提供商)特別有用。
3. 反向代理緩沖服務(wù)器
反向代理是和前兩種代理完全不同的一種代理服務(wù)。使用它可以降低原始WEB服務(wù)器的負載。反向代理服務(wù)器承擔(dān)了對原始WEB服務(wù)器的靜態(tài)頁面的請求,防止原始服務(wù)器過載。它位于本地WEB服務(wù)器和Internet之間,處理所有對WEB服務(wù)器的請求,阻止了WEB服務(wù)器和Internet的直接通信。如果互聯(lián)網(wǎng)用戶請求的頁面在代理服務(wù)器上有緩沖的話,代理服務(wù)器直接將緩沖內(nèi)容發(fā)送給用戶。如果沒有緩沖則先向WEB服務(wù)器發(fā)出請求,取回數(shù)據(jù),本地緩存后再發(fā)送給用戶。這種方式通過降低了向WEB服務(wù)器的請求數(shù)從而降低了WEB服務(wù)器的負載。
- 反向代理工作原理
- 當(dāng)用戶瀏覽器發(fā)出一個HTTP請求時,通過域名解析將請求定向到反向代理服務(wù)器(如果要實現(xiàn)多個WEB服務(wù)器的反向代理,需要將多個WEB服務(wù)器的域名都指向反向代理服務(wù)器)。由反向代理服務(wù)器處理器請求。反向代理一般只緩存可緩沖的數(shù)據(jù)(比如html網(wǎng)頁和圖片等),而一些CGI腳本程序或者ASP之類的程序不緩存。它根據(jù)從WEB服務(wù)器返回的HTTP頭標(biāo)記來緩沖靜態(tài)頁面。有四個最重要HTTP頭標(biāo)記:
Last-Modified: 告訴反向代理頁面什么時間被修改
Expires: 告訴反向代理頁面什么時間應(yīng)該從緩沖區(qū)中刪除
Cache-Control: 告訴反向代理頁面是否應(yīng)該被緩沖
Pragma: 告訴反向代理頁面是否應(yīng)該被緩沖.
例如:在默認情況下,ASP頁面返回” Cache-control: private.” ,所以ASP頁面時不會在反向代理服務(wù)器緩存的
3.2: 實驗分析以及結(jié)構(gòu)圖
-
類型IP地址系統(tǒng)軟件包 squid代理服務(wù)器 ens33:192.168.100.140/24 centos7 squid-3.4.6.tar.gz web服務(wù)器1 192.168.100.150/24 centos7 web服務(wù)器2 192.168.100.160/24 centos7 客戶機 192.168.100.10/24 centos7
3.3: 具體操作分析
-
配置squid代理服務(wù)器
[root@squid squid-reports]# vim /etc/squid.conf http_port 192.168.100.140:80 accel vhost vport '//監(jiān)控本機80端口' cache_peer 192.168.100.150 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1 '//節(jié)點服務(wù)器1最大訪問30,權(quán)重1,別名web1' cache_peer 192.168.100.160 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2 '//節(jié)點服務(wù)器2最大訪問30,權(quán)重1,別名web2' cache_peer_domain web1 web2 www.yun.com '//訪問www.yun.com匹配web1,web2節(jié)點' [root@squid squid-reports]# service squid restart '//重啟服務(wù)' 正在關(guān)閉 squid... 正在啟動 squid... [root@squid squid-reports]# netstat -ntap |grep 80 '//查看80端口是否被squid使用' tcp 0 0 192.168.100.140:80 0.0.0.0:* LISTEN 5197/(squid-1) //這里如果httpd的80端口在使用,把httpd停掉,這里用不掉,要先空閑80端口 -
配置web服務(wù)器兩個節(jié)點相同
[root@web1 ~]# cd /var/www/html [root@web1 html]# vim index.html '//修改首頁內(nèi)容' <h1>this is web01!</h1> '//web2服務(wù)器設(shè)置' [root@web2 ~]# yum install httpd -y '//安裝httpd服務(wù)' [root@web2 ~]# vim /var/www/html/index.html '//修改首頁內(nèi)容' <h1>this is web02 web!</h1> //另外一臺Web修改為web01 systemctl stop firewalld.service setenforce 0 systemctl start httpd客戶機環(huán)境
-
測試訪問
已經(jīng)輪詢代理
總結(jié)
以上是生活随笔為你收集整理的缓存加速-----Squid-访问控制列表日志分析反向代理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 联合索引 abc_ABC联合
- 下一篇: 幼儿园小班上计算机课 作业内容是手口一致