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 192.168.100.128 squid-3.5.27.tar.gz
WEB服務器 CentoS7.6 192.168.100.131 Apache
客戶機 win10 192.168.100.3 自帶的瀏覽器

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

[root@localhost ~]# hostnamectl set-hostname squid
[root@localhost ~]# su
[root@squid ~]# 

[root@localhost ~]# hostnamectl set-hostname web
[root@localhost ~]# su
[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服務器

//關閉防火牆
systemctl stop firewalld
setenforce 0

//安裝httpd
yum install httpd -y
echo "welcome to test web" > /var/www/html/index.html
systemctl start httpd

//進入目錄下,設置測試內容
cd /var/www/html/
dd if=/dev/zero of=test1.tgz bs=1M count=11
dd if=/dev/zero of=test2.tgz bs=1M count=2

5、在客戶端驗證

1、設置win10虛擬機的IP地址
在這裏插入圖片描述
2、設置IE瀏覽器----internet選項----連接-----局域網設置----勾選代理服務器,填寫IP地址和端口號—IP:squid服務器地址 端口號爲3128
在這裏插入圖片描述
驗證:訪問web服務器地址,並查看web服務器的訪問日誌access.log是代理服務器地址訪問,
即squid代理服務器搭建成功。
在這裏插入圖片描述
注意:access.log日誌在 /etc/httpd/logs/目錄下
在這裏插入圖片描述
之前設置了允許下載最大的文件大小爲10M,test2文件可以下載,test1過大超出範圍,提示不能下載。
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章