缓存加速----Squid传统代理透明代理
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                缓存加速----Squid传统代理透明代理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                文章目錄
- 前言
- 一:Squid代理服務概述
- 1.1:概述
- 1.2:工作機制
- 1.3:Squid基本類型
 
- 二:環境
- 三:傳統代理試驗過程
- 四:透明代理實驗過程
前言
一:Squid代理服務概述
1.1:概述
- Squid是一個高性能的代理緩存服務器,Squid支持FTP、gopher、HTTPS和HTTP協議。和一般的代理緩存軟件不同,Squid用一個單獨的、非模塊化的、I/O驅動的進程來處理所有的客戶端請求。
1.2:工作機制
-  緩存網頁對象,減少重復請求 
-  它是這樣實現其功能的,接受來自人們需要下載的目標(object)的請求并適當地處理這些請求 
-  也就是說,如果一個人想下載一web頁面,他請求Squid為他取得這個頁面。Squid隨之連接到遠程服務器(比如:http://squid.nlanr.net/)并向這個頁面發出請求 
-  然后,Squid顯式地聚集數據到客戶端機器,而且同時復制一份。當下一次有人需要同一頁面時,Squid可以簡單地從磁盤中讀到它,那樣數據迅即就會傳輸到客戶機上。 
1.3:Squid基本類型
- 傳統代理 - 普通的代理服務,適用于Internet,需明確指定服務端
 
- 透明代理 - 客戶機不需要指定代理服務器的地址和端口,是通過默認路由,防火墻將web重定向給代理
 
- 使用代理可以提高web的訪問速度,同時可以隱藏客戶機的真實IP地址,從而起到一定的保護作用
- 另一方面,squid也可以針對要訪問的目標、客戶機的地址、訪問的時間段進行過濾控制。
二:環境
- VMware軟件
- 一臺centos7虛擬機作為squid服務器,IP地址為:192.168.100.140
- 一臺centos7虛擬機作為web服務器,IP地址為:192.168.100.150
- 一臺win10虛擬機作為client測試機,IP地址為:192.168.100.10
三:傳統代理試驗過程
-  Squid服務器配置 1.解壓squid軟件包 monut.cifs //192.168.1.150/qq-Download /mnt cd /mnt tar xzvf squid-3.4.6.tar.gz -C /opt 2.安裝相關軟件包 yum install gcc gcc-c++ make -y 3.配置服務模塊,編譯安裝 cd /opt/suqid-3.4.6/ ./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 \ --enable-poll \ --enable-gnuregexmake && make install 4.創建軟鏈接,優化服務控制方式 ln -s /usr/local/squid/sbin/squid /usr/local/sbin/ 5.創建squid用戶 useradd -M -s /sbin/nologin squid 6.修改squid中的var的屬性 chowm -R squid.squid /usr/local/squid/var/ 7.編輯squid的配置文件 vim /etc/squid.conf55 # And finally deny all other access to this proxy56 http_access allow all57 http_access deny all //允許所有用戶訪問58 59 # Squid normally listens to port 312860 http_port 3128 61 cache_mem 64 MB //指定緩存功能所使用的內存空間大小62 reply_body_max_size 10 MB //允許用戶下載的最大文件大小63 maximum_object_size 4096 KB //允許保存到緩存空間的最大對象大小64 cache_effective_user squid //添加指定程序用戶65 cache_effective_group squid //添加指定賬戶基本組66 67 # Uncomment and adjust the following to add a disk cache directory.68 #cache_dir ufs /usr/local/squid/var/cache/squid 100 16 2568.編輯防火墻規則 iptables -F //清除所有規則 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT //允許目標端口3128做轉發9.檢查語法并且開啟服務 squid -k parse //檢查配置文件語法 squid -z //初始化緩存目錄 squid //啟動服務 [root@squid ~]# netstat -natp | grep squid tcp6 0 0 :::3128 :::* LISTEN 36414/(squid-1) [root@squid ~]# 10.編輯腳本,優化服務控制方式(service 工具) 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/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在啟動 squid...."echo "成功啟動"$CMDfi;; stop)$CMD -k kill &> /dev/nullrm -rf $PID &> /dev/null;; status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -natp | grep squidelseecho "squid is not running"fi;; restart)$0 stop &> /dev/nullecho "正在關閉 squid..."echo "關閉成功"$0 start &> /dev/nullecho "正在啟動 squid..."echo "啟動成功";; reload)$CMD -k reconfigure;; check)$CMD -k parse;;*)echo "用法:$0{start|stop|status|reload|check|restart}";; esacchmod +x /etc/init.d/squid //添加服務執行權限 chkconfig --add squid //添加到service的服務列表 chkconfig --level 35 squid on //開機自啟 [root@localhost ~]# service squid restart 正在關閉 squid... 關閉成功 正在啟動 squid... 啟動成功 [root@localhost ~]#
-  Web服務器配置 [root@apache ~]# yum install httpd -y [root@apache ~]# systemctl stop firewalld.service [root@apache ~]# setenforce 0 [root@apache ~]# systemctl start httpd.service [root@apache ~]# netstat -natp | grep 80
-  客戶機Win10的配置 配置地址192.168.100.10 網關192.168.100.2 
-  瀏覽器訪問Web服務器測試 這里看不出來,到底是代理訪問的Apache還是客戶端訪問的,我們要看Apache的日志 [root@apache ~]# cat /var/log/httpd/access_log日志顯示是代理來訪問的Web服務器 那么問題來了,客戶機要選擇代理,若是客戶不會操作的,由此,產生Squid透明模式,下文介紹如何搭建 
四:透明代理實驗過程
-  網絡拓撲圖 
-  實驗環境 類別IP地址系統軟件包 squid服務器 ens33:192.168.100.140/24;ens36:192.168.10.1/24 centos7 squid-3.4.6.tar.gz web服務器 192.168.100.150 centos7 客戶機 192.168.10.10 win10 
-  配置squid服務器 1.配置網卡 ens33為NAT模式 ens36為僅主機模式 cd /etc/sysconfig/network-scripts/ cp -p ifcfg-ens33 ifcfg-ens36 vim ifcfg-ens36 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens36" DEVICE="ens36" ONBOOT="yes" IPADDR="192.168.10.1" '這個地址是客戶機的網關' PREFIX="24" IPV6_PRIVACY="no" ~ service network restart [root@squid network-scripts]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.100.140 netmask 255.255.255.0 broadcast 192.168.100.255inet6 fe80::7264:7578:de4e:190 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:17:9c:75 txqueuelen 1000 (Ethernet)RX packets 96630 bytes 110402508 (105.2 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 94922 bytes 172796714 (164.7 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.10.1 netmask 255.255.255.0 broadcast 192.168.10.255 ......[root@squid ~]# 2.配置路由轉發功能 vim /etc/sysctl.conf net.ipv4.ip_forward=1 sysctl -p '使其生效'3.配置squid文件 vim /etc/squid.conf59 # Squid normally listens to port 312860 http_port 192.168.10.1:3128 transparent 配置網卡網關地址及端口service squid restart 4.添加防火墻規則 iptables -F //清空規則 iptables -t nat -F iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
-  配置web服務器 yum install httpd -y route add -net 192.168.10.0/24 gw 192.168.100.140 //添加靜態路由 下一跳 systemctl stop firewalld.service setenforce 0
-  配置客戶端,虛擬機處于僅主機模式 
-  驗證服務配置 查看Web服務日志 注意: 在web服務器中,添加到路由表的靜態路由有時間限制 
總結
以上是生活随笔為你收集整理的缓存加速----Squid传统代理透明代理的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 特种浓缩分离:倒极电渗析技术工作原理介绍
- 下一篇: IT外包:中国跃跃欲试,准备一鸣惊人——
