缓存加速之squid代理服务器实验——传统模式+透明模式

一、squid的基础配置

[root@localhost ~]# hostnamectl set-hostname squid	##改个名
[root@localhost ~]# su
[root@squid ~]# mkdir /abc			//创建目录,拉取安装包
[root@squid ~]# cd /abc
[root@squid abc]# rz -E
rz waiting to receive.

编译安装

[root@squid abc]# tar zxvf squid-3.4.6.tar.gz -C /opt		
[root@squid abc]# cd /opt
[root@squid opt]# ls
rh  squid-3.4.6
[root@squid opt]# cd squid-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-gnuregex

#########################解释##############################
./configure --prefix=/usr/local/squid \ ###安装路径
–sysconfdir=/etc \ ###配置文件目录
–enable-arp-acl \ ###基于acl访问列表管理,对mac地址进行管控 先定义规则,执行操作的时候可以在接口调用
–enable-linux-netfilter \ ###内核过滤
–enable-linux-tproxy \ ###支持透明代理模式
–enable-async-io=100 \ ###IO优化
–enable-err-language=“Simplify_Chinese” \ ###报错提示为简体中文
–enable-underscore \ ###支持下划线
–enable-poll \ ###功能的提升 字符设备驱动函数,类似select
–enable-gnuregex ###正则表达式
############################################################

[root@squid squid-3.4.6]# 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/
对配置文件进行基础配置
vim /etc/squid.conf     自上而下的读取,一旦匹配到了就不往下读了

http_access allow all     ###允许所有网段访问
#http_access deny all

http_port 3128
cache_effective_user squid       ###缓存管理的用户
cache_effective_group squid	###缓存管理的组

coredump_dir /usr/local/squid/var/cache/squid    ######内核管理的容灾备份目录

[root@squid squid-3.4.6]# squid -k parse        ###检查语法
[root@squid squid-3.4.6]# squid -z	          ###初始化缓存
[root@squid squid-3.4.6]# squid                      ###启动
[root@squid squid-3.4.6]# netstat -antp | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      36749/(squid-1)     

cd /etc/init.d
vim squid								##通过写入脚本,让squid被service工具管理,方便操作
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"   ##PID文件进程号
CONF="/etc/squid.conf"   ##主配置文件
CMD="/usr/local/squid/sbin/squid"   ##启动命令

case "$1" in
start)
                netstat -ntap | grep squid &> /dev/null
                if [ $? -eq 0 ]
                then 
                 echo "squid is running"
                 else
                 echo "正在启动 squid...." 
                 $CMD
                fi
                ;;
stop)
                $CMD -k kill &> /dev/null   ##关闭squid
                rm -rf $PID &> /dev/null    ##删除PID文件
                ;;
status)
                [ -f $PID ] &> /dev/null
                 if [ $? -eq 0 ]
                                then
                                 netstat -ntap | 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|reload|status|check|restart}"
                ;;
esac


[root@squid init.d]# chmod +x squid 
[root@squid init.d]# chkconfig --add squid
[root@squid init.d]# chkconfig --level 35 squid on

[root@squid init.d]# service squid stop
[root@squid init.d]# netstat -anpt | grep 3128
[root@squid init.d]# service squid start
正在启动 squid....
[root@squid init.d]# netstat -anpt | grep 3128
[root@squid init.d]# netstat -anpt | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      36906/(squid-1)     

二、代理服务器

在这里插入图片描述

2.1服务器端

对配置文件进行修改

vim /etc/squid.conf   
http_port 3128
cache_mem 64 MB		 #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量
			         最好为4的倍数,单位为MB
reply_body_max_size 10 MB     
#允许用户下载的单个最大文件大小,以字节为单位。默认设置0表示不进行限制
maximum_object_size 4096 KB      
#允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转向用户端浏览器
service squid check    检查语法
[root@squid init.d]# iptables -F                       ##防火墙规则清空
[root@squid init.d]# iptables -t nat -F
[root@squid init.d]# setenforce 0
[root@squid init.d]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT    ##允许访问3128
(如果没清规则,必须加)

[root@squid init.d]# service squid reload
[root@squid init.d]# netstat -anpt | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      36906/(squid-1)  

2.2web端

[root@localhost ~]# hostnamectl set-hostname web
[root@localhost ~]# su
[root@web ~]# iptables -F
[root@web ~]# setenforce 0
[root@web ~]# yum -y install httpd

[root@web ~]# systemctl start httpd
[root@web ~]# netstat -anpt | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      2595/httpd          

2.3测试

cat /etc/httpd/logs/access_log
真机访问一下先,然后清除网页缓存,设置网页代理服务器,然后访问,查看httpd日志
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、透明代理

在这里插入图片描述

3.1加网卡

在squid上添加一块网卡ens37

[root@squid ~]# cd /etc/sysconfig/network-scripts/
[root@squid network-scripts]# cp -p ifcfg-ens33 ifcfg-ens37
[root@squid network-scripts]# vim ifcfg-ens37
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
IPADDR="192.168.10.1"
PREFIX="24"
IPV6_PRIVACY="no"
[root@squid network-scripts]# systemctl restart network

3.2做路由转发

[root@squid network-scripts]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@squid network-scripts]# sysctl -p
net.ipv4.ip_forward = 1

在真机上做pingweb服务器测试
发现去了回不来,要配回程路由

[root@web ~]# route add -net 192.168.10.0/24 gw 20.0.0.21

3.3squid配置

squid 服务器修改配置文件

[root@squid network-scripts]# vim /etc/squid.conf
http_port 192.168.10.1:3128 transparent         ##开启透明模式
[root@squid network-scripts]# service squid reload

清空防火墙规则重新设置规则

[root@squid network-scripts]# iptables -F
[root@squid network-scripts]# iptables -t nat -F
[root@squid network-scripts]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
[root@squid network-scripts]# iptables -t nat -I PREROUTING -i ens37 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
[root@squid network-scripts]# iptables -t nat -I PREROUTING -i ens37 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
[root@squid network-scripts]# netstat -antp |grep 3128
tcp        0      0 192.168.10.1:3128       0.0.0.0:*               LISTEN      36906/(squid-1)     

3.4测试

记住把原来的网页代理关掉,清楚缓存
可以从日志看到访问来源是 squid代理服务器而不是客户机
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值