1. 程式人生 > >在CentOS7上部署squid快取伺服器及代理功能

在CentOS7上部署squid快取伺服器及代理功能

快取代理概述:

作為應用層的代理服務軟體,squid主要提供快取加速和應用層過濾控制的功能。

代理的基本型別:

  • 傳統代理:也就是普通的代理服務,首先必須在客戶機的瀏覽器、聊天工具、下載軟體等程式中手動設定代理伺服器的地址和埠,然後才能使用代理服務來訪問網路。對於網頁瀏覽器,訪問網站時的域名解析請求也會發送給指定的代理伺服器。
  • 透明代理:提供與傳統代理相同的功能和服務,其區別在於客戶端不需要指定代理伺服器的地址和埠,而是通過預設路由、防火牆策略將Web訪問重定向,實際上仍然交給代理伺服器來處理。重定向的過程對客戶機來說是“透明”的,使用者甚至不知道自己在使用代理服務,所以稱為“透明代理”。

實驗環境表:

安裝及執行控制

1.編譯安裝Squid

配置Squid的編譯選項時,將安裝目錄設定為/usr/local/squid,其他具體選項根據實際需要來確定,配置前可參考./configure --help給出的說明。

tar zxvf squid-3.4.6.tar.gz -C /opt/
cd /opt/squid-3.4.6
./configure --prefix=/usr/local/squid \       #安裝目錄
--sysconfdir=/etc \                           #單獨將配置檔案修改到其他目錄
--enable-arp-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.squid的配置檔案

squid服務的配置檔案位於/etc/squid.conf,充分了解配置行的作用將有助於管理員根據實際情況靈活地配置代理服務。

vim /etc/squid.conf
http_port 3128                    #用來指定代理服務監聽的地址和埠(預設埠號為3128)
cache_effective_user squid        #新增   指定程式使用者
cache_effective_group squid       #新增   指定賬號基本組

3.squid執行控制

(1)檢查配置檔案的語法是否正確

squid -k parse   

(2)啟動、停止squid

第一次啟動squid服務時,會自動初始化快取目錄。在沒有可用的squid伺服器指令碼的情況下,也可以直接呼叫squid程式來啟動服務,這時需要先進行初始化。

squid -z   //初始化快取目錄
squid    //啟動服務

(3)使用squid服務指令碼

為了使squid服務的啟動、停止、過載等操作更加方便,可以編寫squid服務指令碼,並使用chkconfig和service工具來進行管理。

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

傳統代理

1.squid伺服器的配置

配置squid實現傳統代理服務時,需要注意新增http_access allowall訪問策略,以便允許任意客戶機使用代理服務。

1)修改squid.conf配置檔案

[[email protected] init.d]# vim /etc/squid.conf
http_access allow all
http_access deny all
http_port 3128
cache_mem 64 MB                   #指定快取功能所使用的記憶體空間大小,便於保持訪問較頻繁的WEB物件,容量最好為4的倍數,單位為MB,建議設為實體記憶體的1/4
reply_body_max_size 10 MB         #允許使用者下載的最大檔案大小,以位元組為單位。預設設定0表示不進行限制
maximum_object_size 4096 KB       #允許儲存到快取空間的最大物件大小,以KB為單位,超過大小限制的檔案將不被快取,而是直接轉發給使用者

2)在防火牆上新增允許策略:

[[email protected] init.d]# iptables -F
[[email protected] init.d]# setenforce 0
[[email protected] init.d]# iptables -I INPUT -p tcp --dport 3218 -j ACCEPT

[[email protected] init.d]# service squid reload    #重新載入

2.客戶機的代理配置

在Windows系統中開啟瀏覽器 Internet選項---》連線----》區域網設定----ip:squid伺服器地址 埠:3128 位址列輸入web伺服器地址。

3.代理伺服器的驗證

在客戶機中通過瀏覽器訪問目標Web伺服器網站http://192.168.126.178/,然後觀察squid代理伺服器,Web伺服器的訪問日誌,以驗證代理服務是否發揮作用。

1)檢視squid訪問日誌的新增記錄

在squid代理伺服器中,通過跟蹤squid服務的訪問日誌檔案,應該能夠發現客戶機192.168.126.177訪問網站伺服器192.168.126.178的記錄。

[[email protected] init.d]# tail /usr/local/squid/var/logs/access.log 
1532758490.972      5 192.168.126.177 TCP_MISS/404 512 GET http://192.168.126.178/noindex/css/fonts/Light/OpenSans-Light.eot? - HIER_DIRECT/192.168.126.178 text/html
1532758490.974      5 192.168.126.177 TCP_MISS/404 524 GET http://192.168.126.178/noindex/css/fonts/LightItalic/OpenSans-LightItalic.eot? - HIER_DIRECT/192.168.126.178 text/html

2)檢視Web訪問日誌的新增記錄

在被訪問的Web伺服器中,通過跟蹤httpd伺服器的訪問日誌檔案,應該能夠發現來在代理伺服器192.168.126.138的訪問記錄。說明當前客戶機使用代理後,Web伺服器並不知道客戶機的真實地址,實際上是由代理伺服器在替它訪問。

[[email protected] ~]# cd /etc/httpd/logs/
[[email protected] logs]# ls
access_log  error_log
[[email protected] logs]# cat access_log 
192.168.126.138 - - [28/Jul/2018:14:14:50 +0800] "GET / HTTP/1.1" 403 4897 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"      //

透明代理

1.配置Squid支援透明代理

1)在squid代理伺服器上新增雙網絡卡,分別是內網地址192.168.100.1和外網地址12.0.0.1。Web伺服器地址改為12.0.0.12外網地址,客戶端地址改為192.168.100.100內網地址。

[[email protected] network-scripts]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500     #內網地址
        inet 192.168.100.1  netmask 255.255.255.0  broadcast 192.168.100.255
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500     #外網地址
        inet 12.0.0.1  netmask 255.255.255.0  broadcast 12.0.0.255

2)修改squid的配置檔案,在http_port配置上加上transparent(透明)選項,就可以支援透明代理了。

[[email protected] network-scripts]# vim /etc/squid.conf
http_port 192.168.100.1:3128 transparent   #只在其中一個IP地址上提供服務
[[email protected] network-scripts]# service squid reload  

2.設定iptables的重定向策略

防火牆做重定向操作,將訪問本機80、443埠的請求重定向到3128埠

[[email protected] network-scripts]# iptables -F
[[email protected] network-scripts]# iptables -F -t nat   #清除防火牆規則
[[email protected] network-scripts]# iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
[[email protected] network-scripts]# iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
[[email protected] network-scripts]# iptables -I INPUT -p tcp --dport 3218 -j ACCEPT

3.驗證透明代理

在客戶機192.168.100.100中通過瀏覽器訪問目標網站http://12.0.0.12/,然後觀察squid代理伺服器、Web伺服器的訪問日誌,以驗證透明代理是否發揮作用。

squid代理伺服器的訪問日誌:
[[email protected] network-scripts]# tail /usr/local/squid/var/logs/access.log 
1532761302.140      3 192.168.100.100 TCP_MISS/404 512 GET http://12.0.0.12/noindex/css/fonts/Light/OpenSans-Light.eot? - ORIGINAL_DST/12.0.0.12 text/html
1532761302.143      2 192.168.100.100 TCP_MISS/404 524 GET http://12.0.0.12/noindex/css/fonts/LightItalic/OpenSans-LightItalic.eot? - ORIGINAL_DST/12.0.0.12 text/html
1532761302.146      2 192.168.100.100 TCP_MISS/404 516 GET http://12.0.0.12/noindex/css/fonts/Regular/OpenSans-Regular.eot? - ORIGINAL_DST/12.0.0.12 text/html

Web伺服器的訪問日誌:
[[email protected] ~]# cd /var/log/httpd/
[[email protected] httpd]# vim access_log 

12.0.0.1 - - [28/Jul/2018:15:06:43 +0800] "GET /noindex/css/fonts/ExtraBold/OpenSans-ExtraBold.eot? HTTP/1.1" 404 248 "http://12.0.0.12/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
12.0.0.1 - - [28/Jul/2018:15:06:43 +0800] "GET /noindex/css/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot? HTTP/1.1" 404 260 "http://12.0.0.12/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"

代理成功

相關推薦

CentOS7部署squid快取伺服器代理功能

快取代理概述: 作為應用層的代理服務軟體,squid主要提供快取加速和應用層過濾控制的功能。 代理的基本型別: 傳統代理:也就是普通的代理服務,首先必須在客戶機的瀏覽器、聊天工具、下載軟體等程式中手動設定代理伺服器的地址和埠,然後才能使用代理服務來訪問網路。對於網頁瀏覽

CentOS7部署squid緩存服務器代理功能

緩存代理 poll() 程序 -o 安裝 clr 註意 其中 httpd服務器 緩存代理概述: 作為應用層的代理服務軟件,squid主要提供緩存加速和應用層過濾控制的功能。 代理的基本類型: 傳統代理:也就是普通的代理服務,首先必須在客戶機的瀏覽器、聊天工具、下載軟件等程

CentOS7 部署HaproxyNginx 搭建Web群集

images 防火 .com 系統 then tar dont -i con HAProxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理,可以運行於大部分主流的Linux操作系統上。本次實驗使用三臺服務器搭建W

centos7部署vnc伺服器並實現遠端桌面

centos7上部署vnc伺服器並實現遠端桌面 centos7上進行一下操作 [root@localhost ~]# yum

CentOS7部署 Kubernetes集群

pos cati dock set 使用 mct iptables api manage yum -y install etcd docker flannel kubenetes 一般會遇到沒有k8s源的問題,先 yum update -y 看是否有效,如果還是沒用就創

使用VMware12在CentOS7部署docker實例

連接 docke 安裝docker nginx 14. inter src S3 5.6 今天下午算是自己搞了一下午才搞出來,對於認為linux是自己死穴的我,現在能搞出來,心裏滋味不是一丟丟,哈哈~~~ 算了,廢話不多說,直接上圖!步驟如下: 1、在安裝好VMware12

CentOS7部署LVS負載均衡群集之LVS-NAT(地址轉換模式)

local 添加 fig iptable block rip 除了 處理 路由轉發 CentOS7中的LVS負載均衡群集之LVS-NAT(地址轉換模式) 簡介 在當今各種互聯網應用中,隨著站點對硬件性能、響應速度、服務穩定性、數據可靠性等的要求越來越高,單臺服務器將難以承擔

Centos7部署Tomcat及其負載均衡

安裝nginx dad 指向 make 分享圖片 term java環境 http服務 並且 案例概述:通常情況下,一個Tomcat站點由於可能出現單點故障及無法應付過多客戶復雜多樣的請求等問題,不能單獨應用於生產環境下,所以我們需要一套更可靠的解決方案來完善Web站點架構

CentOS7部署Haproxy+Nginx實現Web群集

添加 aca web 一個 centos7 進行 刷新 技術 編譯 Haproxy是一個使用C語言編寫的自由及開放代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理,可以運行於大部分主流的Linux操作系統上。本次實驗用到三臺服務器,一臺服務器安裝h

CentOS7部署MongoDB復制集和復制集的管理維護

重新 冗余 ast erro gre 能夠 mmap base enable MongoDB復制集的概述 復制集是額外的數據副本,是跨多個服務器同步數據的過程,復制集提供了冗余並增加了數據可用性,通過復制集可以對硬件故障和中斷的服務進行恢復。 復制集工作原理 MongoD

CentOS7部署MongoDB分片群集

hugepage user db2 import i++ mar mmap tran ces 概述 MongoDB分片是使用多個服務器存儲數據的方法,以支持巨大的數據存儲和對數據進行操作。分片技術可以滿足MongoDB數據量大量增長的需求,當一臺MongoDB服務器不足以存

CentOS7部署Memcached主主復制+Keepalived高可用架構

track bin dba 1.8 修改 oot 腳本 ever defs 原理: Memcached主主復制是指在任意一臺Memcached服務器修改數據都會被同步到另外一臺,但是Memcached API客戶端是無法判斷連接到哪一臺Memcached服務器的,所以需要設

centos7部署社交網站之MYSQL主從服務

config 本地 ORC file pre ble ncurses libaio tor 部署MYSQL主從服務器,根據php程序員的要求創建數據庫與表。 實驗要求 主:192.168.43.229 從:192.168.43.198 主Master 開啟時間同步 #

CentOS7部署Memcached高性能內存緩存對象

成功 php.ini 編譯 存在 stat 分布式 cti 結果 web 概述 Memcached是一套 開源的高性能分布式內存對象緩存系統,它將所有的數據 都存儲在內存中,因為在內存中會統一維護一張巨大的Hash表,所以支持任意存儲類型的數據。 Memcached是典型的

CentOS7部署百萬PV網站架構

相同 var b2b term 功能 虛擬 repl shell lse 網站架構概述 網站架構是根據客戶需求分析的結果,準確定位網站目標群體,設定網站的整體架構,規劃、設計網站欄目及其內容,制定網站開發流程的順序,最大限度地進行高效資源分配與管理的設計。 百萬PV網站架構

CentOS7部署Rabbitmq集群配置

rest 兩個 hce 打開 blog ec2 步驟 jpg pub 概述 RabbitMQ是目前流行的開源消息隊列系統。MQ(消息隊列)是一種應用程序對應用程序的通信方法。 RabbitMQ的結構圖如圖所示: 實現步驟 在一個集群裏,有三臺服務器,其中一臺使用磁盤模式,

CentOS7部署KVM虛擬化平臺

centos7 高效 art 就是 proc toc centos F12 ofo 什麽是虛擬化 虛擬化就是把硬件資源從物理方式轉變為邏輯方式,打破原有物理結構,使用戶可以靈活管理這些資源,並且允許1臺物理機上同時運行多個操作系統,以實現資源利用率最大化和靈活管理的一項技

CentOS7部署KVM虛擬化平臺

work emctl sta 40G 磁盤 enabled internal force images 虛擬化概述 虛擬化就是把硬件資源從物理方式轉變為邏輯方式,打破原有物理結構,使用戶可以靈活管理這些資源,並且允許1臺物理機上同時運行多個操作系統,以實現資源利用最大化和靈

CentOS7部署Apache Mesos

jdk 設計 建議 The container mark 一致性 md5 接收 概述 Apache Mesos是一款基於多資源(內存、磁盤、CPU、端口等)調度的開源集群管理套件,能使容錯和分布式系統更加容易。 工作原理 Apache Mesos采用了Master/Slav

CentOS7實現Squid緩存服務器的兩種模式

修改內容 ef6 同名 entos ns3 類型 緩存加速 c-c routing 一、緩存代理概述Squid服務作為應用層的代理服務軟件,Squid主要提供緩存加速和應用層過濾控制的功能。 二、代理的基本類型根據實現的方式不同,代理服務可以分為傳統代理和同名代理兩種行間的