1. 程式人生 > 其它 >Squid三種工作模式搭建及配置檔案解析

Squid三種工作模式搭建及配置檔案解析

技術標籤:squidlinux

目錄

一、Squid軟體及配置檔案簡介

1、Squid軟體

軟體包:squid-3.xxxx (經過C語言重構)
系統服務:squid
主程式:/usr/sbin/squid
主配置檔案:/etc/squid/squid.conf(原始碼包和rpm包安裝後併發量差異不大)
預設訪問日誌:/var/log/squid/access.log
預設工作方式:傳統代理

[[email protected] ~]# rpm -ql squid
/etc/squid/squid.conf           #配置檔案
/etc/rc.d/init.d/squid          #啟動指令碼
/usr/sbin/squid                 #二進位制命令
/usr/share/doc/squid-3.1.10 #手冊 /var/log/squid #日誌目錄 /var/spool/squid #快取目錄

2、Squid配置檔案詳解

http_port 3128 
#預設監聽埠:TCP 3128,可修改
access_log /var/log/squid/access.log squid
#訪問日誌及當前訪問日誌的屬者
cache_mem 64 MB
#squid程序能使用的記憶體為64MB,注意不是快取大小
cache_dir ufs /var/spool/squid 100 16 256
#快取目錄使用ufs檔案系統,存放位置在/var/spool/squid,當前目錄預設能使用100MB的空間,第一級目錄允許的檔案個數是16個,第二級目錄允許的檔案個數是256個。squid中有2張表來幫助我們加快查詢快取,一個叫hash tables(類似於目錄),digest tables(類似於章節介紹)
visible_hostname proxy.benet.com #當前可用的主機名 dns_testnames www.google.com www.163.com #客戶機要連線squid後上網,squid通過訪問這兩個網站探測自己的網路可用性 maximum_object_size 4096 KB #最大快取的靜態資源物件的大小,超過這個大小也提供資料,只是不快取 reply_body_max_size 10 MB #單個訪問請求檔案超過10MB就不給客戶機做反向代理,如工作時間禁止看視屏 http_access allow localnet #允許本地網段使用 http_access deny all  #拒絕所有

二、Squid三種工作方式搭建

傳統模式搭建流程:

在這裡插入圖片描述

1、按照網路拓撲圖搭建網路環境;

vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth1

echo “GATEWAY=192.168.45.12” >> /etc/sysconfig/network-scripts/ifcfg-eth0
#客戶機和web伺服器新增閘道器
service network restart
route -n

2、web伺服器端安裝Apache;

yum -y install httpd
service httpd start && chkconfig httpd on && echo “ceshi” >> /var/www/html/index.html && curl localhost
#啟動Apache並測試

3、Squid開啟路由轉發;

vim /etc/sysctl.conf
sysctl -p

4、構建Squid伺服器;

yum -y install squid
vim /etc/squid/squid.conf
cache_dir ufs /var/spool/squid 100 16 256
#取消註釋
http_port 3128
#檢查埠
visible_hostname www.vera.com
#末行新增主機名,不讓它有啟動提示,可以不加

service squid start

5、客戶端squid代理,測試;

圖形介面測試:
init 5
瀏覽器——編輯——首選項——高階——連結——設定——手動代理——閘道器內網IP——3128

客戶端字元介面測試:
yum -y install elinks
#安裝字元介面瀏覽器
vim /etc/profile
HTTP_PROXY=HTTP://192.168.45.12:3128
#指向squid代理與客戶機在同一lan的ip
export HTTP_PROXY
#末行新增
source /etc/profile
#重新整理配置檔案
echo $HTTP_PROXY
#檢視環境變數
elinks 192.168.88.13
#web伺服器ip,建議多訪問幾次,讓squid產生快取

透明代理:

在這裡插入圖片描述

1、按照網路拓撲圖搭建網路環境;

vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth1

echo “GATEWAY=192.168.45.12” >> /etc/sysconfig/network-scripts/ifcfg-eth0
#客戶機新增閘道器
service network restart
route -n

2、伺服器端安裝Apache;

yum -y install httpd
service httpd start && chkconfig httpd on && echo “ceshi” >> /var/www/html/index.html && curl localhost
#啟動Apache並測試

3、Squid開啟路由轉發;

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -p

4、構建Squid伺服器;

yum -y install squid
vim /etc/squid/squid.conf
http_port 192.168.45.12:3128 transparent
#原來的http_port 3128改為這個,表明為透明模式,指定代理主機ip和埠號
cache_dir ufs /var/spool/squid 100 16 256
#取消註釋
visible_hostname www.vera.com
#任意位置新增主機名,不讓它 有啟動提示,可以不加

service squid start
service iptables start
iptables -F && iptables -L
#檢視防火牆規則,清空已有的防火牆規則
iptables -t nat -A PREROUTING -i eth0 -s 192.168.45.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128
#資料來源是192.168.45.0/24,目標為80埠的,全部重定向(轉發到)為3128埠squid
iptables -t nat -L
#檢視關於nat的防火牆規則
service iptables save
#儲存防火牆規則
chkconfig iptables on

5、客戶端測試,

curl 192.168.88.12
#訪問web伺服器,建議多訪問幾次,讓squid產生快取
service httpd stop
#停止web服務
curl 192.168.88.12
#此時squid找不到web伺服器,返回自己快取的資訊

6、下載限速。

service httpd start
dd if=/dev/zero of=1.txt bs=1M count=15
#在伺服器端網頁下寫入1.txt檔案
wget 192.168.88.13/1.txt
#此時squid沒有做下載限制,會發現客戶端可以直接下載
vim /etc/squid/squid.conf
reply_body_max_size 10 MB
#限制下載大小為10M,任意位置新增此選項,預設單位為位元組,使用MB要加空格

/etc/init.d/squid reload

反向代理:

在這裡插入圖片描述

1、按照網路拓撲圖搭建網路環境;

vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth1
echo “GATEWAY=192.168.88.11” >> /etc/sysconfig/network-scripts/ifcfg-eth0
echo “GATEWAY=192.168.45.13” >> /etc/sysconfig/network-scripts/ifcfg-eth0
#客戶機和伺服器端新增閘道器到squid的兩張網絡卡
service network restart
route -n

2、web伺服器端安裝Apache;

yum -y install httpd
service httpd start && chkconfig httpd on && echo “pag1” >> /var/www/html/index.html && curl localhost
service httpd start && chkconfig httpd on && echo “pag2” >> /var/www/html/index.html && curl localhost
#啟動Apache並測試

3、Squid開啟路由轉發;

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -p

4、代理伺服器安裝Squid,修改配置檔案;

yum -y install squid
vim /etc/squid/squid.conf

http_port 192.168.88.11:80 vhost
#在原來的http_port 3128上修改,填寫反向代理伺服器對客戶開放的訪問ip
visible_hostname www.vera.com
#任意位置新增後取消重啟報警
cache_dir ufs /var/spool/squid 100 16 256
#取消註釋
cache_peer 192.168.45.11 parent 80 0 originserver round-robin
#末行新增後端主機,parent前面的ip代表上游web伺服器,80代表當前web伺服器的埠,0代表若周圍若有其他squid伺服器的話就寫上它的埠,它會自己去尋找,originserver表示子節點,round-robin代表輪詢演算法,注意只支援RR輪詢演算法
cache_peer 192.168.45.12 parent 80 0 originserver round-robin

service squid start

5、測試

curl 192.168.88.11/index.html