CentOS7安裝部署squid服務(透明代理+反向代理)


一、squid服務介紹

Squid是一個高性能的代理緩存服務器,Squid支持FTP、gopher、HTTPS和HTTP協議。和一般的代理緩存軟件不同,Squid用一個單獨的、非模塊化的、I/O驅動的進程來處理所有的客戶端請求。
squid服務有三種常用代理模式:分別為傳統代理、透明代理(正向代理)、反向代理。

特別說明:如果服務器主機時間不同步,可能將會出現一直緩存失敗的情況,即TCP_MISS。時間同步配置如下

echo '*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com>/dev/null 2>&1' >>/var/spool/cron/root
crontab -l
View Code

二、安裝squid服務

1、主機環境

操作系統:CentOS7.5
主機名:squid01
eth0:10.0.0.17

2、安裝squid服務之前系統優化

#增加文件描述符並檢查
echo '* - nofile  65535' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf

#調整端口范圍並檢查
cat /proc/sys/net/ipv4/ip_local_port_range 
echo "net.ipv4.ip_local_port_range = 4000  65000">>/etc/sysctl.conf 
sysctl -p|grep port_range
cat /proc/sys/net/ipv4/ip_local_port_range 
View Code

3、創建squid用戶運行squid服務

useradd -s /sbin/nologin -M squid

4、下載並安裝squid(這里采用編譯安裝squid)

#下載安裝包
cd /usr/local/src/
wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.20.tar.gz

#解壓tar包並進入解壓之后的目錄
tar -xvf squid-3.5.20.tar.gz
cd squid-3.5.20

#編譯參數並make和make install
./configure --prefix=/usr/local/squid3.5.20 \
--enable-async-io=100 \
--with-pthreads \
--enable-storeio="aufs,diskd,ufs" \
--enable-removal-policies="heap,lru" \
--enable-icmp \
--enable-delay-pools \
--enable-useragent-log \
--enable-referer-log \
--enable-kill-parent-hack \
--enable-cachemgr-hostname=localhost \
--enable-arp-acl \
--enable-default-err-language=English \
--disable-poll \
--disable-wccp \
--disable-wccpv2 \
--disable-ident-lookups \
--disable-internal-dns \
--enable-basic-auth-helpers="NCSA" \
--enable-stacktrace \
--with-large-file \
--disable-mempools \
--with-filedescriptors=64000 \
--enable-ssl \
--enable-x-accelerator-vary \
--disable-snmp \
--with-aio \
--enable-linux-netfilter \
--enable-linux-tproxy

make && make install
echo $?
View Code

5、創建squid軟鏈接

ln -s /usr/local/squid3.5.20 /usr/local/squid

6、配置squid環境變量

export PATH="$PATH:/usr/local/squid/sbin/:/usr/local/squid/bin/"
echo "PATH="$PATH:/usr/local/squid/sbin/:/usr/local/squid/bin/"">>/etc/profile
source /etc/profile
echo $PATH
View Code

7、編輯squid配置文件(vim /usr/local/squid/etc/squid.conf)

*設置運行squid服務的用戶和組
#run user
cache_effective_user squid
cache_effective_group squid

*設置可見主機名
#hostname
visible_hostname squid01

*設置管理員聯系郵件
#admin email
cache_mgr wutaokl@163.com

*打開cache_dir注釋
cache_dir ufs /usr/local/squid3.5.20/var/cache/squid 100 16 256
View Code

8、squid服務管理腳本

#!/bin/bash
#squid Manage
case "$1" in
start)
  /usr/local/squid/sbin/squid -s
  ;;
stop)
  /usr/local/squid/sbin/squid -k shutdown
  ;;
restart)
  /usr/local/squid/sbin/squid -k reconfigure
  ;;
parse)
  #檢查語法
  /usr/local/squid/sbin/squid -k parse
  ;;
check)
  /usr/local/squid/sbin/squid -k check
  ;;
*)
  echo "Usage:$0 start|stop|restart|check|parse"
esac
View Code

9、授權目錄

chown -R squid /usr/local/squid/var

10、初始化緩存目錄

squid -z /usr/local/squid/var/cache

11、檢查squid配置文件無誤之后啟動squid服務並檢查服務是否運行(這里使用命令行命令啟動)

squid -k parse
squid -s
lsof -i:3128
View Code

三 、配置傳統代理

1、瀏覽器設置

2、跟蹤access.log日志文件,用瀏覽器訪問網站,訪問日志寫入access.log

tail -f /usr/local/squid/var/logs/access.log

3、停止squid服務,用瀏覽器訪問網站,出現如下頁面

squid -k shutdown

#到此,傳統代理配置完成。

 四、配置透明代理

1、實驗環境

主機01:主機名->squid01 eth0->10.0.0.17 eth1->172.16.2.17 DNS->223.5.5.5

主機02:主機名->squid02 eth0->172.16.2.18  gw->172.16.2.17 DNS->223.5.5.5

2、實驗說明

squid01即時squid代理服務器又是防火牆服務器,squid02表示公司內網工作環境,實驗環境架構圖如下

3、在squid01上配置透明代理,編輯squid.conf文件

http_port 3128 transparent

cache_mem 99 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 8192 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 4096 KB
memory_replacement_policy lru
View Code

4、檢查配置文件並重啟squid服務

squid -k parse
squid -k reconfigure
lsof -i:3128

5、在squid01安裝iptables防火牆

yum install -y iptables

6、把內網訪問的80端口映射到squid01服務器的3128端口上,並讓內容可以上網

iptables -F
iptables -F -t nat
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -o eth0 -s 172.16.2.0/24 -j MASQUERADE
View Code

7、啟動路由轉發功能

echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf
sysctl -p

8、添加內網上網網關

roude -add default gw 172.16.2.17

9、在squid01上跟蹤access.log訪問日志

 tail -f /usr/local/squid/var/logs/access.log

10、在squid02上訪問百度(多curl幾次)

 curl baidu.com

11、在squid01的訪問日志出現TCP_MEM_HIT/200說明透明代理搭建成功,如下所示

 

 五、搭建反向代理

1、實驗環境

主機01:主機名->squid01  eth0->10.0.0.17

主機02:主機名->squid01  eth0->10.0.0.18 (充當web服務器)   

2、在squid01配置反向代理,編輯squid.conf文件

http_port 80 accel vhost vport

cache_peer 10.0.0.18 parent 80 0 no-query no-digest max-conn=32 originserver  #代理的機器

hosts_file /etc/hosts
request_header_max_size 128 KB
ipcache_size 1024
ipcache_low 90
ipcache_high 95
offline_mode on           #離線模式
View Code

3、檢查squid.conf配置文件並重啟squid服務

squid -k parse
squid -k reconfigure
lsof -i:80

4、增加hosts解析

echo "10.0.0.18   squid02">>/etc/hosts

5、在squid02安裝Apache

yum install -y httpd

6、上傳或下載一張圖片到/var/www/html/下

7、啟動httpd服務

systemctl start httpd
lsof -i:80

8、跟蹤squid01的access.log訪問日志

tail -f /usr/local/squid/var/logs/access.log 

9、訪問內網的web站點

10、查看access.log日志,出現TCP_IMS_HIT或TCP_MEM_HIT表示squid搭建反向代理並緩存成功

 六、squid一些配置參數說明

#提供給squid使用的內存
cache_mem 99 MB

#cache目錄使用量大於95%時,開始清理舊的cache
cache_swap_low 90

#cache目錄清理到90%時停止
cache_swap_high 95

#設置squid磁盤緩存最大文件,超過8M的文件不保存到硬盤
maximum_object_size 8 MB

#設置squid磁盤緩存最小文件
minimum_object_size 0 KB

#設置squid內存緩存最大文件,超過4M的文件不保存到內存
maximum_object_size_in_memory 4096 KB

#緩存算法
memory_replacement_policy lru

#反向代理的Web源站的域名
cache_peer 10.0.0.18 parent 80 0 no-query no-digest max-conn=32 originserver

#域名映射文件位置
hosts_file /etc/hosts

#請求頭部的最大大小
request_header_max_size 128 KB

#ip對應cache的大小為1024
ipcache_size 1024

#緩存IP地址的最低基線
ipcache_low 90

#緩存IP地址的最高基線
ipcache_high 95
 
#域名全稱cache的大小為1024(默認1024)
fqdncache_size 1024

#離線模式
offline_mode on           
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM