Squid--傳統代理


一、suqid的介紹

1.1、squid是什么?

Squid 是一個高性能的http代理服務器和web緩存服務器,可以很好的實現HTTP和FTP以及DNS查詢、SSL等應用的緩存代理。

  • 1、代理用戶向web服務器請求數據並進行緩存,可以過濾流量幫助網絡安全。

  • 2、可以作為代理服務器鏈中的一環,向上級代理轉發數據或直接連接互聯網。

  • 3、可以用在局域網中,使局域網用戶通過代理上網。

  • 4、可以將數據緩存在內存中,同時也緩存DNS查詢的結果,還支持非模塊化的DNS查詢,對失敗的請求進行消極緩存。

  • 5、Squid支持SSL,支持ACL訪問控制。

Web代理的工作機制

  • 緩存網頁對象,減少重復請求

在這里插入圖片描述

1.2、squid的優勢

  • 1、提高客戶端訪問速度。
  • 2、隱蔽內部主機的ip地址。
  • 3、部署簡單,可以實現訪問控制。

1.3、squid的作用

  • 1、代理上網 (傳統代理,透明代理)
  • 2、網站靜態頁面緩存加速(反向代理)

二、squid的代理類型

  • 1、傳統代理又叫做正向代理,適用於Internet,需明確指定服務端。

  • 2、透明代理,客戶機不需要指定代理服務器的地址和端口,而是通過默認路由、防火牆策略將Web訪問重定向給代理服務器處理

  • 3、反向代理

三、squid傳統代理的部署

傳統代理模式

  • 客戶端必須在自己的瀏覽器里指定服務器的ip地址和監聽的端口號,才能通過squid代理服務器**上網。

3.1、 案例介紹

如上圖所示,在服務器B上構建Squid代理服務器,允許客戶機指定squid代理服務器作為Web代理,訪問網站服務器,但禁止通過代理下載超過10MB的文件,超過4MB的文件不進行緩存。

 

  • 環境介紹
主機 系統 IP地址 主要軟件
squid代理服務器 CentoS7.6 20.0.0.10 squid-3.5.27.tar.gz
WEB服務器 CentoS7.6 20.0.0.20 Apache
客戶機 win10 20.0.0.30 自帶的瀏覽器

先修改主機名,方便實驗效果

[root@server1 ~]# hostnamectl set-hostname squid
[root@server1 ~]# bash
[root@squid ~]# 
[root@server2 ~]# hostnamectl set-hostname web
[root@server2 ~]# bash
[root@web ~]# 

3.2、部署過程

1、在squid服務器部署squid服務

1、解壓squid的安裝包
tar zxvf squid-3.4.6.tar.gz -C /opt/
cd /opt/squid-3.4.6/

#先安裝編譯包
yum -y install gcc gcc-c++ make pcre pcre-devel zlib-devel perl

#配置編譯
./configure --prefix=/usr/local/squid \     ##自定義安裝路徑
--sysconfdir=/etc \                                  ##單獨將配置文件修改到/etc目錄下   
--enable-arp-acl \                                   ##可在ACL中設置通過MAC地址進行管理,防止客戶端使用IP欺騙
--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                                ##支持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、修改配置文件,編寫腳本優化服務啟動項

vim /etc/squid.conf
//增添下句並注釋deny
http_access allow all
#http_access deny all  

//在端口port下增添兩行代碼  
http_port 3128   
cache_effective_user squid    
cache_effective_group squid   
coredump_dir /usr/local/squid/var/cache/squid

squid -k parse      #檢查配置文件語法
squid –k rec                       ##重新加載配置文件
squid -z               #初始化緩存目錄
squid                  #啟動服務
netstat -ntap | grep 3128     #查看服務是否啟動

//編寫優化腳本
cd /etc/init.d/
vim 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

chmod +x squid
chkconfig --add squid
chkconfig --level 35 squid on     #設置為開機自啟動

service squid stop
service squid start
netstat -ntap | grep 3128

3、配置squid傳統模式

vim /etc/squid.conf
http_port 3128
cache_mem 64 MB                   #內存空間大小
reply_body_max_size 10 MB       #允許下載最大文件大小
maximum_object_size 4096 KB   #允許保存緩存的空間最大對象大小
http_access deny all                                    #前面兩行需要放在這行之上才生效

iptables -F    #清空防火牆規則
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3218 -j ACCEPT  
#-I:插入input鏈 -p:協議  允許3128端口訪問外網的WEB服務器

//重新加載squid服務
service squid reload
netstat -ntap | grep 3128

4、配置web服務器

[root@Web ~]# systemctl stop firewalld
[root@Web ~]# setenforce 0
[root@Web ~]# yum -y install httpd

5、驗證

 看客戶機能否成功訪問Apache首頁

 

 

 查看日志,還是客戶自身的IP

 

 

 

 設置Squid代理,查看來訪IP變化
1、先清除瀏覽器緩存
2、在瀏覽器中設置代理

 

 

再次訪問后查看日志

 

 

 成功變成代理ip

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

  

  

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM