日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Squid 代理服务器应用大全

發布時間:2024/9/3 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Squid 代理服务器应用大全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、Squid 服務基礎
    • 1.1 緩存代理概述
      • (一) 代理的工作機制
      • (二)代理的基本類型
    • 1.2 編譯安裝及運行步驟(理論)
      • 1.編譯安裝Squid(將所需的包上傳到/opt目錄下)
      • 2.修改Squid的配置文件
      • 3 . Squid 的運行控制
      • 4.創建 Squid 服務腳本
    • 1.3 編譯安裝及運行具體操作(實操)
      • 1.編譯安裝Squid(將所需的包上傳到/opt目錄下)
        • ①放入軟件包安裝相關程序
        • ②解壓
        • ③安裝squid相關模塊
        • ④編譯安裝squid
        • ⑤優化路徑、創建squid用戶和指定存放緩存文件的路徑
      • 2.修改Squid的配置文件
      • 3 . Squid 的運行控制
        • ①檢查配置文件語法是否正確
        • ②啟動Squid, 第一次啟動Squid服務時,會自動初始化緩存目錄
      • 4.創建 Squid 服務腳本
        • ①創建squid文件寫入腳本
        • ②賦予權限加入開機自啟動
  • 二、構建代理服務器
    • 2.1 傳統代理
      • 2.1.1 搭建傳統代理的步驟(理論)
        • 1 . 修改squid.conf配置文件
        • 2 . 重啟服務
        • 3 . 添加設置防火墻規則
        • 4 . 修改客戶機代理
        • 5 . 訪問web服務器進行驗證
      • 2.1.2 搭建傳統代理的具體操作步驟(理論)
        • 1 . 修改squid.conf配置文件
        • 2 . 重啟服務
        • 3 . 添加設置防火墻規則
        • 4 . 修改客戶機代理(我這里使用的谷歌瀏覽器)
          • ①打開谷歌瀏覽器設置代理服務器
          • ②清除瀏覽器緩存
        • 5 . web服務器設置
          • ①web服務器關閉防火墻安裝httpd服務
          • ②開啟httpd服務
        • 6 . web服務器使用tail開啟日志跟蹤頁面,Client訪問web服務器進行驗證,可以看到顯示的是squid代理服務器的ip
    • 2.2 透明代理
      • 2.2.1 搭建透明代理的步驟(理論)
        • 1 . Squid服務器:雙網卡
        • 2 . quid服務器配置
          • ① 修改新網卡配置
          • ②修改squid配置文件
          • ③路由和防火墻配置
        • 2 . web服務器配置
        • 3 . client關閉代理服務器
        • 4 . wen服務器使用tail目錄追蹤日志,然后client進行訪問web查看日志來訪ip是否為squid服務器
      • 2.2.1 搭建透明代理的具體實驗步驟(實操)
        • 1 . Squid服務器:雙網卡
          • ① 切換到網卡目錄,然后查看新增的網卡是多少,我這里為ens36
          • ②復制網卡并配置ip相關
          • ③ 重新查看網卡是否配置成功
          • ④ 修改squid配置文件,添加ip
          • ⑤ 開啟ip轉發功能
          • ⑥修改防火墻規則
        • 2 . web服務器配置靜態路由
        • 3 . Client設置
          • ① 關閉代理服務器
          • ② Client訪問web服務器測試
          • ③ web上查看訪問日志是否為網關地址
    • 2.3 ACL 訪問控制
      • 2.3.1 設置ACL訪問控制的步驟(理論)
        • 1、定義訪問控制列表,
          • 方法一:
          • 方法二:(我這里使用的方法二)
        • 2 . WEB服務器1和WEB服務器2上安裝httpd服務
        • 3 . Client客戶上測試
      • 2.3.2 設置ACL訪問控制的具體操作步驟(實操)
        • 1 . squid服務器上配置
          • ① 建立目標 IP 地址名單
          • ② 修改squid配置文件
          • ③ 重啟squid服務并查看端口
        • 2 . WEB1和WEB2上安裝httpd服務并開啟
          • ① 關閉防火墻和SElinux
          • ② 安裝httpd服務并開啟
        • 3 . Client客戶上測試
          • ① 設置手動代理服務
          • ② 清理緩存記錄
          • ③ 訪問WEB1測試
          • ④ 訪問WEB2測試
    • 2.4 Squid 日志分析
      • 2.2.1 實現Squid日志分析的步驟(理論)
        • 1 . 安裝 GD 庫
        • 2.安裝 SARG
        • 3.修改sarg配置文件
        • 4 . 添加不加入站點文件
        • 5 . 添加計劃任務,執行每天生成報告
      • 2.2.2 實現Squid日志分析的具體操作步驟(實操)
        • 1 . 安裝 GD 庫
        • 2.安裝 SARG
          • ① 放入sarg安裝包
          • ② 解壓安裝包
          • ③ 安裝相關模塊
          • ④ 編譯安裝sarg
        • 3.修改sarg配置文件
        • 4 . 添加不加入站點文件
          • ① 優化路徑并啟動sarg
          • ② 瀏覽器中訪問squid服務器測試
        • 5 . 添加計劃任務,執行每天生成報告
          • ① 編寫shell腳本,可以自動生成報告
          • ② 加入到計劃性任務中,每天自動生成報告
    • 2.5 反向代理
      • 2.5.1 反向代理的步驟(理論)
        • 1 . 開啟防火墻、關閉httpd服務
        • 2 . 清空防火墻規則,并放空3128端口
        • 3 . 修改squid配置文件
        • 4 . 后端2臺web節點服務器設置
        • 5 . 客戶機的域名映射配置
        • 6 . 開啟客戶機的代理配置
      • 2.5.1 反向代理的具體操作步驟(實操)
        • 1 . 關閉httpd服務
        • 2 . 清空防火墻規則,并放空3128端口
        • 3 . 修改squid配置文件
        • 4 . 后端2臺web節點服務器設置
          • ① web1安裝http服務并創建網頁文件
          • ② web1安裝http服務并創建網頁文件
        • 5 . 客戶機的域名映射配置
          • ① 找到hosts這個文件
          • ② 添加自己需要解析的ip
        • 6 . 測試反向代理
          • ① 開啟客戶機的代理配置
          • ② 訪問squid進行測試反向代理功能
  • 三、Squid總結
    • 1 . Squid作用:
    • 2 . Squid的三種模式:
      • ① 傳統模式
      • ② 透明代理
      • ③ 反向代理
    • 3 . 對應Squid自身的管理/功能:
      • ① ACL:主要做的是http_access(基于http協議,access訪問)的允許和拒絕管理
      • ② Sarg:日志分析功能,可以以天的方式指定將access_log中的內容輸出到一個web頁面中(借助了httpd)展示出來。

一、Squid 服務基礎

Squid 是 Linux 系 統 中 最 常 用 的 一 款 開 源 代 理 服 務 軟 件 ,可以很好地實現 HTTP 和 FTP,以及 DNS 查詢、SSL 等應 用的緩存代理,功能十分強大。

官 方 網 站 為: http://www.squid-cache.org/

1.1 緩存代理概述

作為應用層的代理服務軟件,Squid 主要提供緩存加速、應用層過濾控制的功能。

(一) 代理的工作機制

當客戶機通過代理來請求 Web 頁面時,指定的代理服務器會先檢查自己的緩存:

如果緩存中已經有客戶機需要的頁面,則直接將緩存中的頁面內容反饋給客戶機。
如果緩存中沒 有客戶機要訪問的頁面,則由代理服務器向 Internet 發送訪問請求,獲得返回的 Web 頁面 以后,將網頁數據保存到緩存中并發送給客戶機

HTTP 代理的緩存加速對象主要是文字、圖像等靜態 Web 元素。使用緩存機制后,當 客戶機在不同的時候訪問同一 Web 元素,或者不同的客戶機訪問相同的 Web 元素時,可 以直接從代理服務器的緩存中獲得結果。這樣就大大減少了向 Internet 提交重復的 Web 請 求的過程,提高了客戶機的 Web 訪問響應速度。

由于客戶機的 Web 訪問請求實際上是由代理服務器來代替完成的,從而可以隱藏用戶 的真實 IP 地址,起到一定的保護作用。另一方面,代理服務器擔任著類似“經紀人”的角色, 可以針對要訪問的目標、客戶機的地址、訪問的時間段等進行過濾控制。

(二)代理的基本類型

根據實現方式不同,代理服務可分為傳統代理和透明代理兩種常見的代理服務:

傳統代理:也就是普通的代理服務,首先必須在客戶機的瀏覽器、QQ 聊天工具、下載 軟件等程序中手動設置代理服務器的地址和端口,然后才能使用代理來訪問網絡。對于 網頁瀏覽器,訪問網站時的域名解析請求也會發給指定的代理服務器。

透明代理:提供與傳統代理相同的功能和服務,其區別在于客戶機不需要指定代理服務 器的地址和端口,而是通過默認路由、防火墻策略將 Web 訪問重定向,實際仍然交給 代理服務器來處理。重定向的過程對客戶機是“透明”的,用戶甚至并不知道自己在使用 代理服務,所以稱為透明代理。使用透明代理時,網頁瀏覽器訪問網站時的域名解析請 求將優先發給 DNS 服務器。

實際應用中,傳統代理多見于 Internet 環境,如為 QQ 程序使用代理可以隱藏本機真實 IP 地址、為下載工具使用多個代理可以規避服務器的并發連接限制。而透明代理多見于局 域網環境,如在 Linux 網關中啟用透明代理后,局域網主機無須進行額外設置就可以享受更 好的上網速度。

1.2 編譯安裝及運行步驟(理論)

## 首先關閉防火墻和SElinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

1.編譯安裝Squid(將所需的包上傳到/opt目錄下)

yum -y install gcc gcc-c++ make
tar zxvf squid-3.5.28.tar.gz -C /opt/ #解壓軟件包

cd /opt/squid-3.5.28
./configure --prefix=/usr/local/squid \ #指定安裝目錄路徑
–sysconfdir=/etc \ #指定配置文件路徑
–enable-arp-acl \ #MAC地址管控,防止客戶端使用IP欺騙
–enable-linux-netfilter \ #使用內核過濾
–enable-linux-tproxy \ #支持透明模式
–enable-async-io=100 \ #異步IO,提升存儲性能
–enable-err-language=“Simplify_ Chinese” \ #錯誤信息的顯示語言
–enable-underscore \ #允許URL中有下劃線
–disable-poll \ #關閉默認使用poll模式
–enable-epoll \ #開啟epoll模式提升性能
–enable-gnuregex #使用GNU正則表達式

make && make install

ln -s /usr/local/squid/sbin/* /usr/local/sbin/

useradd -M -s /sbin/nologin squid

chown -R squid:squid /usr/local/squid/var/ #此目錄用于存放緩存文件

2.修改Squid的配置文件

vim /etc/squid.conf

-----56行–插入------
http_access allow all #放在http_access deny all 之前,允許任意客戶機使用代理服務,控制規則自上而下匹配
http_access deny all
http_port 3128 #用來指定代理服務監聽的地址和端口(默認的端口號為3128)
-----61行–插入------
cache_effective_user squid #添加,指定程序用戶,用來設置初始化、運行時緩存的賬號,否則啟動不成功
cache_effective_group squid #添加,指定賬號基本組
coredump_dir /usr/local/squid/var/cache/squid #指定緩存文件目錄

3 . Squid 的運行控制

#檢查配置文件語法是否正確
squid -k parse

#啟動Squid, 第一次啟動Squid服務時,會自動初始化緩存目錄
squid -z #-z選項用來初始化緩存目錄
squid #啟動squid 服務

netstat -anpt | grep “squid”

4.創建 Squid 服務腳本

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/null
if [ $? -eq 0 ]
then
echo “squid is running”
else
echo “正在啟動 squid…”
$CMD
fi
;;
stop)
$CMD -k kill &> /dev/null
rm -rf $PID &> /dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -natp | grep squid
else
echo “squid is not running”
fi
;;
restart)
$0 stop &> /dev/null
echo “正在關閉 squid…”
$0 start &> /dev/null
echo “正在啟動 squid…”
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo “用法:$0{start|stop|status|reload|check|restart}”
;;
esac
#2345是默認自啟動級別,如是 - 代表任何級別都不自啟動; 90是啟動優先級,25是停止優先級,
優先級范圍是0一100,數字越大,優先級越低。

chmod +x /etc/init.d/squid
chkconfig --add squid
chkconfig --level 35 squid on

1.3 編譯安裝及運行具體操作(實操)

首先關閉防火墻和SElinux

1.編譯安裝Squid(將所需的包上傳到/opt目錄下)

①放入軟件包安裝相關程序

②解壓

③安裝squid相關模塊

④編譯安裝squid

⑤優化路徑、創建squid用戶和指定存放緩存文件的路徑

2.修改Squid的配置文件

3 . Squid 的運行控制

①檢查配置文件語法是否正確

②啟動Squid, 第一次啟動Squid服務時,會自動初始化緩存目錄

4.創建 Squid 服務腳本

①創建squid文件寫入腳本

②賦予權限加入開機自啟動

二、構建代理服務器

2.1 傳統代理

使用傳統代理的特點在于客戶機的相關程序(如 IE 瀏覽器、QQ 聊天軟件)必須指定 代理服務器的地址、端口等基本信息。
基于 Internet 網絡環境(如下圖),案例的主要需求描述如下。

在 Linux 主機 B 上,構建 Squid 為客戶機訪問各種網站提供代理服務,但禁止通過代 理下載超過 10MB 大小的文件。 -
在客戶機 C 上,指定主機 B 作為 Web 訪問代理,以隱藏自己的真實 IP 地址。

針對上述實驗環境,主機 B 作為代理服務器,必須正確構建 Squid 服務,并允許客戶 機使用代理。若要客戶機通過代理以 http://www.bdqn.com/的域名形式訪問,則代理服務器 本身必須能夠正確解析該域名。主機 C 作為客戶機,需要為瀏覽器等程序指定所使用的代 理服務器地址、端口號等信息,主機 A 作為測試網站,需要啟用 httpd 服務。

2.1.1 搭建傳統代理的步驟(理論)

環境準備工作:
服務器類型 系統和IP地址 需要安裝的組件 網絡模式
squid服務器 CentOS7.4(64 位) 192.168.80.10 squid-3.5.28.tar.gz nat模式
web服務器 CentOS7.4(64 位) 192.168.80.20 Apache nat模式
client客戶端 Win10客戶端 192.168.80.100 —— nat模式

1 . 修改squid.conf配置文件

vim /etc/squid.conf

http_access allow all
http_access deny all
http_port 3128
cache_effective_user squid
cache_leffective_group squid
-------63行–插入---------
cache_mem 64 MB
#指定緩存功能所使用的內存空間大小,便于保持訪問較頻繁的WEB對象,容量最好為4的倍數,單位為MB,建議設為物理內存的1/4

reply_body_max_size 10 MB
#允許用戶下載的最大文件大小,以字節為單位,當下載超過指定大小的Web對象時,瀏覽器的報錯頁面中會出現“請求或訪問太大”的提示默認設置0表示不進行限制

maximum_object_size 4096 KB
#允許保存到緩存空間的最大對象大小,以KB為單位,超過大小限制的文件將不被緩存,而是直接轉發給用戶

2 . 重啟服務

service squid restart
systemctl restart squid

3 . 添加設置防火墻規則

#生產環境中還需要修改防火墻規則
iptables -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

4 . 修改客戶機代理

#客戶機的代理配置
打開瀏覽器,工具–>Internet選項–>連接 -->局域網設置–>開啟代理服務器 (地址: Squid服務器IP地址,端口: 3128)
清除緩存后,使用瀏覽器訪問http://192.168.80.10 (web服務器地址)

5 . 訪問web服務器進行驗證

#查看Squid訪問日志的新增記錄
tail -f /usr/local/squid/var/logs/access.log

#查看Web訪問日志的新增記錄
tail -f /var/log/httpd/access_log
在瀏覽器輸入Web服務器IP地址訪問,查看Web服務器訪問日志,顯示的是由代理服務器替客戶機在訪問。

2.1.2 搭建傳統代理的具體操作步驟(理論)

1 . 修改squid.conf配置文件

2 . 重啟服務

3 . 添加設置防火墻規則

4 . 修改客戶機代理(我這里使用的谷歌瀏覽器)

①打開谷歌瀏覽器設置代理服務器

②清除瀏覽器緩存

5 . web服務器設置

①web服務器關閉防火墻安裝httpd服務

②開啟httpd服務

6 . web服務器使用tail開啟日志跟蹤頁面,Client訪問web服務器進行驗證,可以看到顯示的是squid代理服務器的ip



2.2 透明代理

透明代理提供的服務功能與傳統代理是一致的,但是其“透明”的實現依賴于默認路由和 防火墻的重定向策略,因此更適用于為局域網主機服務,而不適合為 Internet 中的客戶機提 供服務。

在 Linux 網關上,構建 Squid 為客戶機訪問 Internet 提供代理服務。
在所有的局域網客戶機上,只需正確設置 IP 地址、默認網關和 DNS,不需要手動指定 代理服務器的地址、端口等信息。

環境準備工作:
服務器類型 系統和IP地址 需要安裝的組件 網絡模式
squid服務器 CentOS7.4(64 位) ens33:192.168.80.10,ens37:12.0.0.1 squid-3.5.28.tar.gz ens33為nat模式,ens36為僅主機
web服務器 CentOS7.4(64 位) 192.168.80.20 Apache nat模式
client客戶端 Win10客戶端 12.0.0.12 —— 僅主機模式

2.2.1 搭建透明代理的步驟(理論)

1 . Squid服務器:雙網卡

內網ens33: 192.168.80.10 外網ens36: 12.0.0.1

2 . quid服務器配置

① 修改新網卡配置

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens36

vim ifcfg-ens36 #修改以下內容,網關和dns不需要

NAME=ens36
DEVICE=ens36
IPADDR=12.0.0.1
NETMASK=255.255.255.0

systemctl restart network

②修改squid配置文件

vim /etc/squid.conf
http_access allow all
http_access deny all
–60行–修改添加提供內網服務的IP地址,和支持透明代理選項transparent
http_port 192.168.80.20:3128 transparent

systemctl restart squid

③路由和防火墻配置

#開啟路由轉發,實現本機中不同網段的地址轉發
echo ‘net.ipv4.ip_forward = 1’ >> /etc/sysctl.conf
sysctl -p

#修改防火墻規則
iptables -F
iptables -t nat -F

##將來源為12.0.0.0 網段:80/443端口的流量重定向到3128端口
iptables -t nat -I PREROUTING -i ens36 -s 12.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 #用于轉發http協議
iptables -t nat -I PREROUTING -i ens36 -s 12.0.0.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 #用于轉發https協議

#若進行重啟,則需要配置以下規則
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

2 . web服務器配置

##添加一條靜態路由
route add -net 12.0.0.0/24 gw 192.168.80.10

3 . client關閉代理服務器

打開瀏覽器,工具–>Internet選項–>連接 -->局域網設置–>關閉代理服務器

4 . wen服務器使用tail目錄追蹤日志,然后client進行訪問web查看日志來訪ip是否為squid服務器

tail -f /var/log/httpd/access_log

2.2.1 搭建透明代理的具體實驗步驟(實操)

1 . Squid服務器:雙網卡

① 切換到網卡目錄,然后查看新增的網卡是多少,我這里為ens36

②復制網卡并配置ip相關

③ 重新查看網卡是否配置成功

④ 修改squid配置文件,添加ip

⑤ 開啟ip轉發功能

⑥修改防火墻規則

2 . web服務器配置靜態路由


3 . Client設置

① 關閉代理服務器


② Client訪問web服務器測試

③ web上查看訪問日志是否為網關地址

squid上查看訪問日志

2.3 ACL 訪問控制

Squid 提供了強大的代理控制機制,通過合理設置 ACL(Access Control List,訪問控 制列表)并進行限制,可以針對源地址、目標地址、訪問的 URL 路徑、訪問的時間等各種 條件進行過濾。

在配置文件 squid.conf 中,ACL 訪問控制通過以下兩個步驟來實現:

1.使用 acl 配置項定義需要控制的條件;
2.通過 http_access 配置項對已定義的列表做“允許”或“拒 絕”訪問的控制。

2.3.1 設置ACL訪問控制的步驟(理論)

環境準備工作:
服務器類型 系統和IP地址 需要安裝的組件 網絡模式
squid服務器 CentOS7.4(64 位) 192.168.80.10 squid-3.5.28.tar.gz nat模式
web服務器 CentOS7.4(64 位) 192.168.80.20 Apache nat模式
web服務器 CentOS7.4(64 位) 192.168.80.30 Apache nat模式
client客戶端 CentOS7.4(64 位) 192.168.80.40 —— nat模式

1、定義訪問控制列表,

格式:
acl列表名稱 列表類型 列表內容
列表名稱:名稱自定義,相當于給ac1起個名字
列表類型:必須使用squid預定義的值,對應不同類別的控制條件
列表內容:是要控制的具體對象,不同類型的列表所對應的內容也不一樣,可以有多個值(以空格為分隔,為“或"的關系)

方法一:

vim /etc/squid.conf

acl localhost src 192.168.80.10/32 #源地址為 192.168.184.10
acl MYLAN src 192.168.80.0/24 #客戶機網段
acl destionhost dst 192.168.80.20/32 #目標地址為 192.168.184.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 地址名單
vim ipblock.list
192.168.80.20 #添加要拒絕的服務器ip

修改squid配置文件

vim /etc/squid.conf

# should be allowed (此行下面添加)
acl destionhost dst “/dest.list”
# Deny requests to certain unsafe ports (此行下面添加)
http_access deny destionhost

# Squid normally listens to port 3128
http_port 3128 ##修改為3128端口

重啟服務并查看是否開啟

systemctl restart squid.service
netstat -natp | grep 3128

2 . WEB服務器1和WEB服務器2上安裝httpd服務

yum install -y httpd
systemctl start httpd

3 . Client客戶上測試

在火狐瀏覽器中設置手動代理服務

設置步驟: 打開菜單 》》首選項 》》高級 》》 網絡 》》連接

瀏覽器中輸入192.168.80.20和192.168.80.30查看web1是否被拒絕

2.3.2 設置ACL訪問控制的具體操作步驟(實操)

1 . squid服務器上配置

① 建立目標 IP 地址名單

② 修改squid配置文件


③ 重啟squid服務并查看端口

2 . WEB1和WEB2上安裝httpd服務并開啟

① 關閉防火墻和SElinux

② 安裝httpd服務并開啟

3 . Client客戶上測試

① 設置手動代理服務

② 清理緩存記錄

③ 訪問WEB1測試

④ 訪問WEB2測試

2.4 Squid 日志分析

SARG 全稱是 Squid Analysis Report Generator,是一款 Squid 日志分析工具,采用
HTML 格式,詳細列出每位用戶訪問 Internet 的站點信息、時間占用信息、排名、連接次數、 訪問量等。

2.2.1 實現Squid日志分析的步驟(理論)

1 . 安裝 GD 庫

[root@localhost ~]# yum -y install gd gd-devel pcre-devel

2.安裝 SARG

[root@localhost ~]# mkdir /usr/local/sarg
[root@localhost ~]# tar zxf sarg-2.3.7.tar.gz
[root@localhost ~]# cd sarg-2.3.7

##–sysconfdir=/etc/sarg: 配置文件目錄,默認是/usr/loca/etc
##–enable-extraprotection: 添加額外的安全保護
[root@localhost sarg-2.3.7]# ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
[root@localhost ~]#make && make install

3.修改sarg配置文件

cd /etc/sarg/
vim sarg.conf

-----------------------第7行取消注釋-----------------------------------
access_log /usr/local/squid/var/logs/access.log #指定訪問日志文件

-----------------------第25行取消注釋-----------------------------------
title “Squid User Access Reports” #網頁標題

-----------------------第120行取消注釋-----------------------------------
output_dir /var/www/html/sarg #報告輸出目錄

-----------------------第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 #指定網頁根目錄

4 . 添加不加入站點文件

touch /usr/local/sarg/noreport
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
sarg
## 顯示一下代表成功
SARG: 紀錄在文件: 334, reading: 100.00%
SARG: 成功的生成報告在 /var/www/html/squid-reports/2021Jul05-2021Jul06

5 . 添加計劃任務,執行每天生成報告

vim /usr/local/sarg/report.sh

#!/bin/bash
#Get current date
TODAY=KaTeX parse error: Expected 'EOF', got '#' at position 18: …ate +%d/%m/%Y) #?get one week ag…(date -d “1 day ago” +%d/%m/%Y)
/usr/local/sarg/bin/sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/sarg -z -d YESTERDAY?YESTERDAY-YESTERDAY?TODAY &> /dev/null
exit 0

chmod +x /usr/local/sarg/report.sh
crontab -e
crontab: installing new crontab

2.2.2 實現Squid日志分析的具體操作步驟(實操)

1 . 安裝 GD 庫

2.安裝 SARG

① 放入sarg安裝包

② 解壓安裝包

③ 安裝相關模塊

④ 編譯安裝sarg

3.修改sarg配置文件





4 . 添加不加入站點文件

① 優化路徑并啟動sarg

② 瀏覽器中訪問squid服務器測試

5 . 添加計劃任務,執行每天生成報告

① 編寫shell腳本,可以自動生成報告

② 加入到計劃性任務中,每天自動生成報告

2.5 反向代理

如果Squid反向代理服務器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端;
否則反向代理服務器將向后臺的Web服務器請求資源,然后將請求的應答返回給客戶端,同時也將該應答緩存在本地,供下一個請求者使用。

工作機制:

緩存網頁對象,減少重復請求
將互聯網請求輪詢或按權重分配到內網web服務器
代理用戶請求,避免用戶直接訪問Web服務器,提高安全

2.5.1 反向代理的步驟(理論)

環境準備工作:
服務器類型 系統和IP地址 需要安裝的組件 網絡模式
squid服務器 CentOS7.4(64 位) 192.168.80.10 squid-3.5.28.tar.gz nat模式
web服務器 CentOS7.4(64 位) 192.168.80.20 Apache nat模式
web服務器 CentOS7.4(64 位) 192.168.80.30 Apache nat模式
client客戶端 Win10 192.168.80.100 —— nat模式

1 . 開啟防火墻、關閉httpd服務

systemctl start firewalld.service
systemctl stop httpd.service

2 . 清空防火墻規則,并放空3128端口

iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

3 . 修改squid配置文件

http_port 192.168.80.10:80 accel vhost vport
cache_peer 192.168.80.20 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.80.30 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.clj.com

表示對www.clj.com的請求,squid向192.168.80.20和192.168.80.30的80端口發出請求

##重啟squid服務
systemctl stop squid.service
systemctl start squid

####關鍵字解釋如下####
http port 80 accel vhost vport
#squid從一個緩存變成了一個Web服務器反向代理加速模式,這個時候squid在80端口監聽請求,
同時和webserver的請求端口(vhost vport)綁定,這個時候請求到了squid, squid是不用轉發請求的,
而是直接要么從緩存中拿數據要么向綁定的端口直接請求數據。
accel:反向代理加速模式
vhost:支持域名或主機名來表示代理節點
vport :支持IP和端口來表示代理節點
parent :代表為父節點,上下關系,非平級關系
80:代理內部web服務器的80端口
0 :沒有使用icp, 表示就一臺squid服務器
no-query :不做查詢操作,直接獲取數據
originserver :指定是源服務器
round- robin : 指定squid通過輪詢方式將請求分發到其中一臺父節點
maxconn:指定最大連接數
weight :指定權重
name:設置別名

4 . 后端2臺web節點服務器設置

##節點1(web1:192.168.80.20)
echo “this is WEB1” >> /var/www/html/index.html

##節點2(web2:192.168.80.30)
echo “this is WEB1” >> /var/www/html/index.html

5 . 客戶機的域名映射配置

修改C:\Windows\System32\drivers\etc\hosts 文件
192.168.80.10 www.clj.com

6 . 開啟客戶機的代理配置

打開瀏覽器,工具–>Internet選項–>連接–>局域網設置–>開啟代理服務器
(地址: Squid服.務器IP地址,端口: 80)

瀏覽器訪問http:/ /www. clj. com

2.5.1 反向代理的具體操作步驟(實操)

1 . 關閉httpd服務

2 . 清空防火墻規則,并放空3128端口

3 . 修改squid配置文件


4 . 后端2臺web節點服務器設置

① web1安裝http服務并創建網頁文件

② web1安裝http服務并創建網頁文件

5 . 客戶機的域名映射配置

① 找到hosts這個文件

② 添加自己需要解析的ip

6 . 測試反向代理

① 開啟客戶機的代理配置

② 訪問squid進行測試反向代理功能

三、Squid總結

1 . Squid作用:

緩存加速,緩存從后端web服務器獲取到的,加速為了客戶端訪問

2 . Squid的三種模式:

① 傳統模式

需要客戶端指向squid代理服務器,客戶端能感知到squid代理服務器的存在
修改的配置文件:squid.conf 設置 3128 端口、緩存和允許下載的大小

② 透明代理

客戶端不需要配置,只要直接訪問即可,服務端開啟路轉發,借助了防護墻規則及靜態路由的方式,完成透明代理
修改的配置文件:squid.conf 設置ip和 3128 端口
需要設置iptables的流量重定向,將指定網卡網段的流量重定向到 3128 端口

③ 反向代理

作為類似于nginx服務器的反向代理功能,但自身不需要一個首頁,基于ip:端口。權重的方式完成反向代理
修改的配置文件:squid.conf 設置端口為 80
服務端需要開啟客戶機的代理配置

3 . 對應Squid自身的管理/功能:

① ACL:主要做的是http_access(基于http協議,access訪問)的允許和拒絕管理

使用 acl 配置項定義需要控制的條件;
通過 http_access 配置項對已定義的列表做“允許”或“拒 絕”訪問的控制。

② Sarg:日志分析功能,可以以天的方式指定將access_log中的內容輸出到一個web頁面中(借助了httpd)展示出來。

借助SARG日志分析工具實現;
編寫腳本并加入計劃性任務可實現每日自動生成報告。

總結

以上是生活随笔為你收集整理的Squid 代理服务器应用大全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。