天天看點

Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

Squid代理伺服器應用

  • 一、Squid 代理伺服器
    • 1、代理的工作機制
    • 2、Squid 代理的類型
  • 二、安裝 Squid 服務
    • 1、編譯安裝 Squid
    • 2、修改 Squid 的配置檔案
    • 3、Squid 的運作控制
    • 4、建立 Squid 服務腳本
  • 三、建構傳統代理伺服器
    • 環境配置
    • Squid-Server(192.168.28.10)
      • 1、首先先編譯安裝squid,然後修改配置檔案
      • 2、生産環境中還需要修改防火牆規則
    • 客戶機的代理配置(192.168.28.15)
      • 1、配置用戶端IP位址
      • 2、打開浏覽器,配置代理功能
    • Web1(192.168.28.20)
    • 客戶機的代理配置(192.168.28.15)
      • 檢測
    • 檢視Web1通路日志的新增記錄(192.168.28.20)
  • 四、建構透明代理伺服器
    • 環境配置
    • Web1(12.0.0.12)
    • Squid伺服器配置(ens33、ens36)
    • 客戶機測試(192.168.28.15)
      • 檢視 Squid 通路日志的新增記錄
      • 檢視 Web 通路日志的新增記錄,顯示的是由代理伺服器的外網口代替客戶機在通路

一、Squid 代理伺服器

Squid 主要提供緩存加速、應用層過濾控制的功能。

1、代理的工作機制

1、代替客戶機向網站請求資料,進而可以隐藏使用者的真實IP位址。

2、将獲得的網頁資料(靜态 Web 元素)儲存到緩存中并發送給客戶機,以便下次請求相同的資料時快速響應。

2、Squid 代理的類型

  • 傳統代理:适用于Internet,需在客戶機指定代理伺服器的位址和端口。
  • 透明代理:客戶機不需指定代理伺服器的位址和端口,而是通過預設路由、防火牆政策将Web通路重定向給代理伺服器處理。
  • 反向代理:如果 Squid 反向代理伺服器中緩存了該請求的資源,則将該請求的資源直接傳回給用戶端;否則反向代理伺服器将向背景的 WEB 伺服器請求資源,然後将請求的應答傳回給用戶端,同時也将該應答緩存在本地,供下一個請求者使用。

二、安裝 Squid 服務

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
           

1、編譯安裝 Squid

yum -y install gcc gcc-c++ make
           

把壓縮包squid-3.5.28.tar.gz放到/opt目錄下

cd /opt
tar zxvf squid-3.5.28.tar.gz
cd /opt/squid-3.5.28

./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 \
--disable-poll \
--enable-epoll \
--enable-gnuregex


#--------子產品解釋--------------------------------------------------
--prefix=/usr/local/squid                  #指定安裝目錄路徑
--sysconfdir=/etc                          #指定配置檔案路徑
--enable-arp-acl                           #MAC位址管控,防止用戶端使用ip欺騙
--enable-linux-netfilter                   #使用核心過濾
--enable-linux-tproxy                      #支援透明模式
--enable-async-io=100                      #異步1o,提升存儲性能
--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/			#建立軟連接配接至路徑環境變量,便于系統識别squid

useradd -M -s /sbin/nologin squid						#建立程式使用者squid,保證系統安全性

chown -R squid:squid /usr/local/squid/var/				#為/usr/local/squid/var目錄遞歸指定屬組和屬主
#/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	#指定緩存檔案目錄
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

3、Squid 的運作控制

  • 檢查配置檔案文法是否正确
squid -k parse
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
  • 啟動 Squid,第一次啟動squid服務時,會自動初始化緩存目錄
squid -z 								#-z 選項用來初始化緩存目錄
squid									#啟動 squid 服務

netstat -anpt | grep "squid"			#檢視squid服務是否開啟
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 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

#檢視squid服務在哪些級别中自啟
chkconfig --list squid
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

三、建構傳統代理伺服器

環境配置

主機 作業系統 IP位址 軟體、安裝包、工具
Squid-Server CentOS7 192.168.28.10 squid-3.5.28.tar.gz
Web1 CentOS7 192.168.28.20 httpd
客戶機 Windows 192.168.28.15 -----

Squid-Server(192.168.28.10)

1、首先先編譯安裝squid,然後修改配置檔案

vim /etc/squid.conf
......
http_access allow all
http_access deny all
http_port 3128
cache_effective_user squid
cache_effective_group squid
#---------63行插入-----------------------------------------------
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB
           

#---------添加内容解釋------------------------------------------

cache_mem 64 MB #指定緩存功能所使用的記憶體空間大小,便于保持通路較頻繁的WEB對象,容量最好為4的倍數,機關為MB,建議設為實體記憶體的1/4

reply_body_max_size 10 MB #允許使用者下載下傳的最大檔案大小,以位元組為機關,當下載下傳超過指定大小的Web對象時,浏覽器的報錯頁面中會出現“請求或通路太大”的提示預設設定0表示不進行限制

maximum_object_size 4096 KB #允許儲存到緩存空間的最大對象大小,以KB為機關,超過大小限制的檔案将不被緩存,而是直接轉發給使用者

#-------------------------------------------------------------------

service squid restart
#或systemctl restart squid

netstat -antp | grep squid
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

2、生産環境中還需要修改防火牆規則

iptables -F											#清空IP tables的規則
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT		#允許所有通過3128端口的tcp協定的入棧資料博愛通過
iptables -L INPUT									#列出入站資料鍊裡的所有規則
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

客戶機的代理配置(192.168.28.15)

1、配置用戶端IP位址

Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

2、打開浏覽器,配置代理功能

Web1(192.168.28.20)

systemctl stop firewalld.service
setenforce 0
yum -y install httpd
systemctl start httpd
netstat -natp | grep 80
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

客戶機的代理配置(192.168.28.15)

檢測

在浏覽器輸入Web伺服器IP位址通路,檢視Web伺服器通路日志,顯示的是由代理伺服器替客戶機在通路。

http://192.168.28.20
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

檢視Web1通路日志的新增記錄(192.168.28.20)

tail -f /var/log/httpd/access_log
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

四、建構透明代理伺服器

環境配置

主機 作業系統 IP位址 服務、安裝包、工具
Squid-Server CentOS7 ens33:192.168.28.10 、 ens37:12.0.0.1 squid-3.5.28.tar.gz
Web1 CentOS7 12.0.0.12 httpd
客戶機 Windows 192.168.28.15 -----

Web1(12.0.0.12)

先把網卡的IP位址改掉

systemctl stop firewalld.service
setenforce 0
vim /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
ifconfig
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
yum -y install httpd
systemctl restart httpd.service 
           

Squid伺服器配置(ens33、ens36)

關機,添加一塊網卡,開機,ifconfig檢視新增網卡名稱,編輯網卡配置檔案

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

IPADDR=192.168.28.10
NETMASK=255.255.255.0
#GATEWAY=192.168.28.2
#DNS1=192.168.28.2
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
vim ifcfg-ens36

NAME=ens36
#UUID=.....				#把UUID注釋掉
DEVICE=ens36
IPADDR=12.0.0.1
NETMASK=255.255.255.0
#GATEWAY=192.168.28.2
#DNS1=192.168.28.2
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
systemctl restart network
ifconfig 
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
vim /etc/squid.conf
60行修改添加提供内網服務的IP位址,和支援透明代理選項 transparent
......
http_access allow all
http_access deny all

http_port 192.168.28.10:3128 transparent

systemctl restart squid			#重新開機服務
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
開啟路由轉發,實作本機中不同網段的位址轉發
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf		#開啟IP轉發功能
sysctl -p												#加載核心配置檔案
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
修改防火牆規則
iptables -F
iptables -t nat -F
iptables -t nat -I PREROUTING -i ens33 -s 192.168.28.0/24 -p tcp --dport 80 -j REDIRECT --to 3128	
iptables -t nat -I PREROUTING -i ens33 -s 192.168.28.0/24 -p tcp --dport 443 -j REDIRECT --to 3128	
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
           
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

客戶機測試(192.168.28.15)

關閉客戶機的浏覽器之前設定的代理伺服器的功能後通路 http://12.0.0.12

Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器
Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

檢視 Squid 通路日志的新增記錄

tail -f /usr/local/squid/var/logs/access.log
           

Squid代理伺服器則是檢測到客戶機通路目标網站

Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

檢視 Web 通路日志的新增記錄,顯示的是由代理伺服器的外網口代替客戶機在通路

tail -f /var/log/httpd/access_log
           

可以看到是代理伺服器外網口12.0.0.1通路的12.0.0.12

Squid代理伺服器應用(一)一、Squid 代理伺服器二、安裝 Squid 服務三、建構傳統代理伺服器四、建構透明代理伺服器

繼續閱讀