Squid代理服务(传统代理、透明代理)

一、缓存代理概述

1.1Web代理的工作机制

缓存网页对象,减少重复请求
在这里插入图片描述

注意:Squid代理服务器和源站服务器之间跑的就是BGP。

1.2代理的基本类型

●传统代理:需明确指定服务端
●透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理
(区别在于需不需要客户端自己在浏览器上指定服务端)

1.3使用代理的优势

●提高Web访问速度
●隐藏客户机的真实IP地址

二、如何搭建传统代理

在这里插入图片描述
1.安装依赖包

[root@localhost ~]# yum install gcc gcc-c++ -y

2.编译安装Squid服务

[root@localhost ~]# tar zxvf squid-3.4.6.tar.gz
[root@localhost ~]# cd squid-3.4.6/
[root@localhost squid-3.4.6]# ./configure \
--prefix=/usr/local/squid \
--sysconfdir=/etc \       #指定配置文件位置
--enable-arp-acl \        #支持acl访问控制列表
--enable-linux-netfilter \  #打开网络筛选
--enable-linux-tproxy \    #支持透明代理
--enable-async-io=100 \  #io优化
--enable-err-language="Simplify_Chinese" \  #报错显示简体中文
--enable-underscore \   #支持下划线
--enable-poll \               #默认使用poll模式,开启epoll模式时提升性能
--enable-gnuregex       #支持正则表达式
[root@localhost squid-3.4.6]# make && make install       
[root@localhost squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
[root@localhost squid-3.4.6]# useradd -M -s /sbin/nologin squid   #创建程序型用户
[root@localhost squid-3.4.6]# chown -R squid.squid /usr/local/squid/var/

3.修改配置文件,优化启动项

[root@localhost ~]# vim /etc/squid.conf
http_access allow all    #56行添加此项,表示允许所有IP访问
#http_access deny all   #注释原有的

http_port 3128
cache_effective_user squid     #添加指定用户squid
cache_effective_group squid   #添加指定组squid
[root@localhost ~]# squid -k parse    #检查配置文件语法
[root@localhost ~]# squid -z            #初始化缓存目录
[root@localhost ~]# squid               #启动服务
[root@localhost ~]# netstat -ntap |grep 3128   #检测是否启动成功

4.添加服务到service管理

[root@localhost ~]# 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 -ntap | 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 -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@localhost ~]# chmod +x /etc/init.d/squid
[root@localhost ~]# chkconfig --add squid
[root@localhost ~]# chkconfig --level 35 squid on

5.配置传统代理服务

[root@localhost ~]# vim /etc/squid.conf
http_port 3128
cache_effective_user squid
cache_effective_group squid
cache_mem 64 MB      #缓存空间大小定义为64 MB
reply_body_max_size 10 MB  #允许下载的最大文件大小,默认0表示不进行限制
maximum_object_size 4096 KB  #允许保存到缓存空间的最大对象的大小,以KB为单位,超过限制不会缓存,直接转到web端
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -F -t nat
[root@localhost ~]# setenforce 0
[root@localhost ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
[root@localhost ~]# service squid reload

6.在web服务器上安装httpd服务

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd.service

#在客户端上访问网站,查看是否正常访问
在这里插入图片描述

#查看日志文件内容,这时来访IP还是客户端自己的IP

[root@localhost ~]# cat /var/log/httpd/access_log

在这里插入图片描述

7.设置squid代理,查看日志文件中来访IP变化
注意:先清除客户端的浏览器缓存
(1)设置代理:打开谷歌浏览器–设置–高级–系统–打开您计算机的代理设置
在这里插入图片描述

(2)手动设置代理–开启使用代理服务器–设置代理地址和端口–保存
(3)再次访问apache服务器,查看日志文件的变化;这时显示的来访IP变成了squid代理服务器地址
在这里插入图片描述

三、如何搭建透明代理

在这里插入图片描述
在搭建的传统代理基础上做如下修改:
(1)所有网卡都换成仅主机模式;
(2)squid服务器添加一块网卡:192.168.10.1(仅主机模式);开启路由转发功能
开启透明代理;配置防火墙规则;
(3)web服务器不变;
(4)客户端IP地址修改为192.168.10.88,且浏览器关闭手动代理设置

squid服务器配置:
1.给添加的ifcfg-ens36配置IP地址和子网掩码

[root@squid init.d]# cd /etc/sysconfig/network-scripts/
[root@squid network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
	...省略内容
NAME=ens36	  #改为36
         #删除原本ens33的UUID
DEVICE=ens36  #改为36
ONBOOT=yes
IPADDR=192.168.10.1	#添加IP地址
NETMASK=255.255.255.0	#添加子网掩码
[root@squid network-scripts]# systemctl restart network	#重启网卡服务
[root@squid network-scripts]# ifconfig	#查看网卡是否修改成功

2.开启路由转发功能

[root@localhost network-scripts]# vim /etc/sysctl.conf
在最后加入:
net.ipv4.ip_forward = 1
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 1

3.开启透明代理

[root@squid network-scripts]# vim /etc/squid.conf
http_port 192.168.10.1:3128 transparent	#仅修改此行,开启透明代理
cache_effective_user squid
cache_effective_group squid

4.设置防火墙规则

[root@squid network-scripts]# iptables -F	
[root@squid network-scripts]# iptables -t nat -F	
[root@squid network-scripts]# iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128  #定义规则:进入ens36网卡,tcp协议80端口重定向到3128端口
[root@squid network-scripts]# iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 #定义规则:进入ens36网卡,tcp协议443端口重定向到3128端口
[root@squid network-scripts]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT	#新增规则,允许3128端口通过

5.再次使用客户端访问网站地址14.0.0.20,查看网站日志文件,是通过代理访问的,实验成功
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值