squid緩存代理---傳統代理和透明代理詳解

目錄linux

  • 緩存代理概述
    c++

  • 代理工做機制web

  • 代理基本類型正則表達式

  • 正向代理實戰vim


squid簡介windows

  Squid做爲應用層的服務軟件,主要提供緩存加速和應用層過濾控制功能。緩存


代理工做機制bash

  QQ截圖20180926182756.png

(1)Squid服務器中有緩存服務器

  當客戶機經過代理來請求Web頁面時,指定的代理服務器會先檢查本身的緩存,若是緩存中已經有客戶機須要的頁面,網絡

則直接將緩存中的頁面內容反饋給客戶機

(2)Squid服務器中沒有緩存

  若是緩存中沒有客戶機要訪問的頁面,則由代理服務器向Internet發送訪問請求,當得到返回的Web頁面之後,

將網頁數據保存到緩存中併發送給客戶機


代理基本類型

正向代理

  某臺電腦經過一臺服務器來上Internet網的方式,其中這臺電腦就叫客戶機,這臺服務器就叫正向代理服務器也就是

一般所說的代理服務器,網站那裏不能獲得你的真實ip地址。

(1)傳統模式

  首先必須在客戶機上手動設置代理服務器的地址和端口,而後才能使用代理服務來訪問網絡。對於網頁瀏覽,

訪問網站時域名解析的請求也會發給指定的代理服務器。

(2)透明模式

   提供與傳統模式相同的功能和服務,區別在於不須要指定代理服務器的地址和端口而是經過默認路由、

防火牆策略將web訪問重定向,實際上仍然交給代理服務器處理。

反向代理

   網站經過一臺服務器發佈到公網,供用戶訪問。用戶直接訪問那臺反向代理服務器,而後經過那臺服務器訪問到網站,

用戶沒法獲得網站的真實IP地址。


正向代理實戰

實驗安裝包:

連接:https://pan.baidu.com/s/1vQyPUzmi2KBrMQTTZBAkjw     密碼:lob4


實驗過程:

1、squid的編譯安裝及運行

(1)手工編譯安裝

一、安裝編譯環境

yum install gcc gcc-c++ make -y 

二、解壓squid包

tar zxf squid-3.4.6 -C /opt

三、手工編譯

cd /opt/squid-3.4.6

./configure --prefix=/usr/local/squid \    #指定安裝路徑

--sysconfdir=/etc \                 #配置地址

--enable-arp-acl \                  #MAC地址管控

--enable-linux-netfilter \            #內核過濾 

--enable-linux-tproxy \              #透明模式開啓

--enable-async-io=100 \              #I/O優化

--enable-err-language="Simplify_Chinese" \ #報錯以簡體中文顯示

--enable-underscore \               #容許url中有下劃線

--enable-poll \                   #poll開啓

--enable-gnuregex                  #支持正則表達式

make && make install

1.png

(2)優化squid

四、建立軟鏈接

ln -s /usr/local/squid/sbin/* /usr/local/sbin     #使系統可直接識別命令

五、建立管理用戶squid

useradd -M -s /sbin/nologin squid 

六、修改目錄權限

chown  -R squid.squid /usr/local/squid/var/

(3)squid配置文件 

七、修改配置文件

vim /etc/squid.conf

2.png    

(4)squid運行控制

八、squid服務啓動

squid -k parse           #檢查配置文件語法

squid -z                 #初始化緩存目錄

squid                    #啓動服務

3.png


補充:此外,能夠編寫squid啓動腳本進行控制

vim /etc/init.d/squid

#!/bin/bash

#chkconfig:2345 90 25

PID="/usr/local/squid/var/run/squid.pid"   #pid文件位置

CONF="/etc/squid.conf"                #配置文件位置           

CMD="/usr/local/squid/sbin/squid"        #命令文件位置    

case "$1" in

        start)

         netstat -ntap | grep squid &>/dev/null

         if [ $? -eq 0 ]                 

         then

           echo "squid is runing"

         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 -ntap | 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

chmod +x /etc/init.d/squid

chkconfig --add squid           #可使用service命令操做    

chkconfig --level 35 squid on



2、傳統代理:(拓撲以下)

QQ截圖20180926170533.png


實驗環境:


主   機 操做系統  IP地址 角色
web服務器 CentOS-7-x86_64 192.168.37.130 http網站服務
squid代理服務器 CentOS-7-x86_64 192.168.37.128 緩存代理服務
客戶機client windows7 192.168.37.100 結果測試


(1)配置squid代理服務器

一、修改squid配置文件

vim /etc/squid.conf

4.png

二、制定防火牆策略,重載squid服務         

iptables -F

setenforce 0

iptables -I INPUT -p tcp --dport 3128 -j ACCEPT     #指定端口3128容許轉發

service squid restart

(2)web服務器:搭建httpd網頁服務

yum install httpd -y

systemctl stop firewalld.service

setenforce 0

systemctl start httpd.service

(3)客戶機測試

 方式一:直接訪問web服務器IP地址:在/etc/httpd/logs/access_log 日誌中查看

http://192.168.37.130

5.png 

vim /etc/httpd/logs/access_log

6.png        

方式二:設置代理服務,再次訪問

工具--Internet--鏈接--局域網設置--代理服務器打勾--輸入IP、端口

7.png


vim /etc/httpd/logs/access_log

8.png

傳統代理實驗部分完成!


3、透明代理(拓撲以下)

QQ截圖20180926173012.png

實驗環境:

主   機 操做系統  IP地址 角色
web服務器 CentOS-7-x86_64 12.0.0.12 http網站服務
squid代理服務器 CentOS-7-x86_64

ens33:192.168.100.1

ens36:12.0.0.1

緩存代理服務(做網關)
客戶機client windows7 192.168.100.10 結果測試

(1)squid服務器配置雙網卡,squid做網關

一、 squid的IP:

1.png

web服務器IP:

2.png

clientIP:

3.png

二、開啓路由模式

echo "1" > /proc/sys/net/ipv4/ip_forward        #開啓路由,可轉發

(2)配置squid支持透明模式

vim /etc/squid.conf

4.png

(3)設置防火牆策略

清空防火牆規則

iptables -F

iptables -t nat -F

setenforce 0

對防火牆進行重定向操做,將訪問本機的80、443端口重定向到3128端口

iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128

iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128

iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

(4)驗證透明代理

http://12.0.0.12

5.png

vim /etc/httpd/logs/access_log

6.png

透明代理實驗部分完成!

相關文章
相關標籤/搜索