缓存加速----Squid传统代理透明代理
文章目錄
- 前言
- 一:Squid代理服務(wù)概述
- 1.1:概述
- 1.2:工作機(jī)制
- 1.3:Squid基本類型
- 二:環(huán)境
- 三:傳統(tǒng)代理試驗(yàn)過程
- 四:透明代理實(shí)驗(yàn)過程
前言
一:Squid代理服務(wù)概述
1.1:概述
- Squid是一個(gè)高性能的代理緩存服務(wù)器,Squid支持FTP、gopher、HTTPS和HTTP協(xié)議。和一般的代理緩存軟件不同,Squid用一個(gè)單獨(dú)的、非模塊化的、I/O驅(qū)動(dòng)的進(jìn)程來處理所有的客戶端請(qǐng)求。
1.2:工作機(jī)制
-
緩存網(wǎng)頁對(duì)象,減少重復(fù)請(qǐng)求
-
它是這樣實(shí)現(xiàn)其功能的,接受來自人們需要下載的目標(biāo)(object)的請(qǐng)求并適當(dāng)?shù)靥幚磉@些請(qǐng)求
-
也就是說,如果一個(gè)人想下載一web頁面,他請(qǐng)求Squid為他取得這個(gè)頁面。Squid隨之連接到遠(yuǎn)程服務(wù)器(比如:http://squid.nlanr.net/)并向這個(gè)頁面發(fā)出請(qǐng)求
-
然后,Squid顯式地聚集數(shù)據(jù)到客戶端機(jī)器,而且同時(shí)復(fù)制一份。當(dāng)下一次有人需要同一頁面時(shí),Squid可以簡(jiǎn)單地從磁盤中讀到它,那樣數(shù)據(jù)迅即就會(huì)傳輸?shù)娇蛻魴C(jī)上。
1.3:Squid基本類型
- 傳統(tǒng)代理
- 普通的代理服務(wù),適用于Internet,需明確指定服務(wù)端
- 透明代理
- 客戶機(jī)不需要指定代理服務(wù)器的地址和端口,是通過默認(rèn)路由,防火墻將web重定向給代理
- 使用代理可以提高web的訪問速度,同時(shí)可以隱藏客戶機(jī)的真實(shí)IP地址,從而起到一定的保護(hù)作用
- 另一方面,squid也可以針對(duì)要訪問的目標(biāo)、客戶機(jī)的地址、訪問的時(shí)間段進(jìn)行過濾控制。
二:環(huán)境
- VMware軟件
- 一臺(tái)centos7虛擬機(jī)作為squid服務(wù)器,IP地址為:192.168.100.140
- 一臺(tái)centos7虛擬機(jī)作為web服務(wù)器,IP地址為:192.168.100.150
- 一臺(tái)win10虛擬機(jī)作為client測(cè)試機(jī),IP地址為:192.168.100.10
三:傳統(tǒng)代理試驗(yàn)過程
-
Squid服務(wù)器配置
1.解壓squid軟件包 monut.cifs //192.168.1.150/qq-Download /mnt cd /mnt tar xzvf squid-3.4.6.tar.gz -C /opt 2.安裝相關(guān)軟件包 yum install gcc gcc-c++ make -y 3.配置服務(wù)模塊,編譯安裝 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.創(chuàng)建軟鏈接,優(yōu)化服務(wù)控制方式 ln -s /usr/local/squid/sbin/squid /usr/local/sbin/ 5.創(chuàng)建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 //指定緩存功能所使用的內(nèi)存空間大小62 reply_body_max_size 10 MB //允許用戶下載的最大文件大小63 maximum_object_size 4096 KB //允許保存到緩存空間的最大對(duì)象大小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.編輯防火墻規(guī)則 iptables -F //清除所有規(guī)則 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT //允許目標(biāo)端口3128做轉(zhuǎn)發(fā)9.檢查語法并且開啟服務(wù) squid -k parse //檢查配置文件語法 squid -z //初始化緩存目錄 squid //啟動(dòng)服務(wù) [root@squid ~]# netstat -natp | grep squid tcp6 0 0 :::3128 :::* LISTEN 36414/(squid-1) [root@squid ~]# 10.編輯腳本,優(yōu)化服務(wù)控制方式(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 "正在啟動(dòng) squid...."echo "成功啟動(dòng)"$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 "正在關(guān)閉 squid..."echo "關(guān)閉成功"$0 start &> /dev/nullecho "正在啟動(dòng) squid..."echo "啟動(dòng)成功";; reload)$CMD -k reconfigure;; check)$CMD -k parse;;*)echo "用法:$0{start|stop|status|reload|check|restart}";; esacchmod +x /etc/init.d/squid //添加服務(wù)執(zhí)行權(quán)限 chkconfig --add squid //添加到service的服務(wù)列表 chkconfig --level 35 squid on //開機(jī)自啟 [root@localhost ~]# service squid restart 正在關(guān)閉 squid... 關(guān)閉成功 正在啟動(dòng) squid... 啟動(dòng)成功 [root@localhost ~]# -
Web服務(wù)器配置
[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 -
客戶機(jī)Win10的配置
配置地址192.168.100.10 網(wǎng)關(guān)192.168.100.2
-
瀏覽器訪問Web服務(wù)器測(cè)試
這里看不出來,到底是代理訪問的Apache還是客戶端訪問的,我們要看Apache的日志
[root@apache ~]# cat /var/log/httpd/access_log日志顯示是代理來訪問的Web服務(wù)器
那么問題來了,客戶機(jī)要選擇代理,若是客戶不會(huì)操作的,由此,產(chǎn)生Squid透明模式,下文介紹如何搭建
四:透明代理實(shí)驗(yàn)過程
-
網(wǎng)絡(luò)拓?fù)鋱D
-
實(shí)驗(yàn)環(huán)境
類別IP地址系統(tǒng)軟件包 squid服務(wù)器 ens33:192.168.100.140/24;ens36:192.168.10.1/24 centos7 squid-3.4.6.tar.gz web服務(wù)器 192.168.100.150 centos7 客戶機(jī) 192.168.10.10 win10 -
配置squid服務(wù)器
1.配置網(wǎng)卡 ens33為NAT模式 ens36為僅主機(jī)模式 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" '這個(gè)地址是客戶機(jī)的網(wǎng)關(guān)' 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.配置路由轉(zhuǎn)發(fā)功能 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 配置網(wǎng)卡網(wǎng)關(guān)地址及端口service squid restart 4.添加防火墻規(guī)則 iptables -F //清空規(guī)則 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服務(wù)器
yum install httpd -y route add -net 192.168.10.0/24 gw 192.168.100.140 //添加靜態(tài)路由 下一跳 systemctl stop firewalld.service setenforce 0 -
配置客戶端,虛擬機(jī)處于僅主機(jī)模式
-
驗(yàn)證服務(wù)配置
查看Web服務(wù)日志
注意: 在web服務(wù)器中,添加到路由表的靜態(tài)路由有時(shí)間限制
總結(jié)
以上是生活随笔為你收集整理的缓存加速----Squid传统代理透明代理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特种浓缩分离:倒极电渗析技术工作原理介绍
- 下一篇: IT外包:中国跃跃欲试,准备一鸣惊人——