当前位置:首页 > CN2资讯 > 正文内容

Squid正向代理与反向代理详解squid 反向代理

11小时前CN2资讯

                         Squid正向代理和反向代理

  1.简单介绍一下squid

     什么是squid?squid是一种用来缓存Internet数据的软件。接受来自人们需要下载的目标(object)的请求并适当的处理这些请求。

也就是说,如果一个人想下载一web界面,他请求squid为他取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,

squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时, squid可以简单的从磁盘中读到它,那样数据

会立即传输到客户机上。

  2.squid的代理的作用

    当用户访问web网站时,会先访问代理服务器,squid代理服务器将数据缓存在自身内存中,并向用户反馈数据。

● 大大减少web服务器的压力

● 通过缓存的方式为用户访问web服务加速

● 对用户访问进行一些控制过滤

    3.squid代理模式介绍

正向代理

1)标准模式

   标准的代理缓冲服务被用于缓存静态的网页到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,

浏览器将直接从本地代理服务器那里获取请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。

但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指名代理服务器的IP地址和端口号。客户端上网时,每次都把请求发

送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。

2)透明模式

   透明代理缓冲服务器和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。

透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,

如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。对于linux操作系统来说,透明代理使用Iptables

或者Ipchains实现。因此不需要对浏览器作任何设置。

反向代理

   反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态

页面的请求,防止原始服务器过载。它位于WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通

信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,

取回数据,本地缓存后再发给用户。这种方式通过降低了WEB服务器的请求数从而降低了WEB服务器的负载。

      

    4、实验环境介绍

               操作系统            ip地址        服务职能

   centos7

ens33: 192.168.60.135/24

ens36: 12.0.0.1/24

squid缓存服务器  centos7ens33: 192.168.60.136/24httpd,提供网站服务  centos7ens33: 192.168.60.143/24httpd,提供网站服务  win7ipv4: 12.0.0.12client客户机测试

 

   5、实验所用squid源码包

     链接:https://pan.baidu.com/s/1Tj3DXqBGMQKOr-qeL-OC6g 

      密码:ml3m

一、首先搭建httpd服务

1)关闭防火墙和增强安全组件,yum安装httpd服务

systemctl stop firewalld.service

setenforce 0

yum install httpd -y

2)到站点下写入测试内容

cd /var/www/html              #httpd网站站点

echo "this is test01" >index.html

echo "this is test02" > index.html

systemctl start httpd.service      #启动服务

3)本地自测,httpd服务已被提供出来

二、搭建squid缓存服务器

yum install gcc gcc-c++ make -y     #安装编译环境

tar zxf squid-3.5.23.tar.gz -C /opt/   #解压到opt目录下

cd /opt/squid-3.5.23/ 

    ./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 \      #指定使用epoll()函数,提升性能

    --enable-gnuregex     #使用GNU正则表达式

make && make install     #进行安装

ln -s /usr/local/squid/sbin/* /usr/local/sbin     #将squid/sbin/下命令建立软链接,方便使用

useradd  -M -s /sbin/nologin squid     #创建squid管理用户,不建立家目录

chown  -R squid.squid /usr/local/squid/var/    #将文件缓存的目录属主属组变成squid

修改配置文件

vim /etc/squid.conf

# And finally deny all other access to this proxy   在该行下添加

http_access allow all

# Squid normally listens to port 3128   在该行下添加

http_port 3128

cache_effective_user squid       #管理用户为squid

cache_effective_group squid   #管理组为squid

修改完成后检查语法

squid -k parse     #不能有error报错

squid -z               #初始化缓存空间

添加启动脚本

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 runing"

         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|status|reload|check|restart}"

        ;;

esac

chmod +x /etc/init.d/squid       #添加执行权限

chkconfig --add squid               #添加启动项

chkconfig --level 35 squid on    #3,5级别启动

启动服务,这样squid缓存服务就是搭建完成了

三、正向代理(配置标准模式和透明模式详解)

   标准模式

    使用标准模式的特点在于客户机的相关程序必须指定代理服务器的地址、端口等信息,

下面我们通过一个简单的应用实例来学习标准代理模式的配置和使用。

●  在Linux主机B上,构建squid为客户机访问各种网站提供代理地址,但禁止通过代理下载超过10M的文件。

●  在客户机C上,指定主机B作为web访问代理,以隐藏自己的真实IP地址

标准模式示例图如下

    

1、squid服务器配置

vim /etc/squid.conf

# Squid normally listens to port 3128    #此行下添加

http_port 3128   

cache_mem 64 MB              #指定缓存功能所使用的内存空间大小           

reply_body_max_size 10 MB       #允许下载的最大文件大小

maximum_object_size 4096 KB   #允许保存到缓存空间最大文件大小

service squid restart

2、清空防火墙规则并重新添加策略

iptables -F

iptables -t nat -F

iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

3、客户机代理设置

打开IE浏览器>工具>internet选项>连接>局域网设置

4、访问网站服务、查看httpd日志

    从这里可以看出,访问web服务器的请求实际上交给了squid缓存服务器去请求,然后再反馈给客户端,

当下次客户端再去访问该页面时,squid缓存服务器则会再次将数据给客户端,不会反复请求web服务器。

   透明模式

      透明代理模式的功能和服务与传统代理是一致的,但是其“透明”的实现依赖于默认路由和防火

墙的重定向策略,因此更适合用于为局域网主机服务,而不适合为Internet中的客户机提供服务。

下面也通过一个简单的应用案例来学习透明代理的配置和使用。

●  在Linux网关上,构建squid为客户机访问Internet提供代理服务

●  在所有的局域网客户机上,只需要设置ip地址默认网关,而不需要手动指定代理服务器的地址端口等。

透明模式示例图如下

1、添加网卡,修改配置文件

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-ens36      #复制ens33文件

vim ifcfg-ens36

service network restart     #重启网卡服务

2、配置squid支持透明代理

vim /etc/squid.conf

# Squid normally listens to port 3128      #此行下添加

http_port 12.0.0.1:3128 transparent      #http_port 内网网关:3128 transparent

cache_mem 64 MB

reply_body_max_size 10 MB

maximum_object_size 4096 KB

cache_effective_user squid

cache_effective_group squid

3、重启服务,设置iptables的重定向策略

service squid restart 

iptables -t nat -I PREROUTING -i ens36 -s 12.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to 3128

iptables -t nat -I PREROUTING -i ens36 -s 12.0.0.0/24 -p tcp --dport 443 -j REDIRECT --to 3128

iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

4、访问web网页,在httpd日志中查看访问IP

注意:透明模式不需要指定squid缓存服务器

    通过查看httpd的日志可以看出,透明模式通过iptables的重定向访问网页,客户机不需要做任何设定,

根本感觉不到有squid代理服务器的存在。

四、squid反向代理

    如下图所示,通过squid反向代理可以加速网站的访问速度,可将不同的URL请求分发

到后台不同的web服务器上,同时互联网用户只能看到反向代理的地址,加强了网站的访问安全。

Squid反向代理原理

    (1)squid反向代理服务器位于本地web服务器和internet之间,客户端请求访问web服务时,

DNS将访问的域名解析为squid反向代理服务器的IP地址,客户端将访问Squid代理服务器。

    (2)如果Squid反向代理服务器中缓存了改请求的资源,则将该请求的资源返回给客户端,否则反向

代理服务器将向后台的web服务器请求资源,然后将应答资源返回给客户端,同时也将该资源缓存在本地。

Squid反向代理配置

    1、修改配置文件,安装Apache服务

vim  /etc/squid.conf

# Squid normally listens to port 3128      #此模块下

http_port 12.0.0.1:80 accel vhost vport    #本机外网IP

cache_peer 192.168.60.136 parent 80 0 no-query originserver round-robin weight=1 name=web1 #添加网站

cache_peer 192.168.60.143 parent 80 0 no-query originserver round-robin weight=1 name=web2 #添加网站

cache_peer_domain web1 web2 www.test.com   #匹配网址用域名访问

cache_mem 64 MB

reply_body_max_size 10 MB

maximum_object_size 4096 KB

cache_effective_user squid

cache_effective_group squid

修改完后重启服务,并且安装apche

service squid restart

yum install httpd -y  

   2、客户端添加地址解析

windows添加地址解析的路径:C:\Windows\System32\drivers\etc\hosts

使用记事本打开

    3、客户端访问,验证

   反向代理设置成功。

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24150.html

    分享给朋友:

    “Squid正向代理与反向代理详解squid 反向代理” 的相关文章

    比搬瓦工便宜的CN2是什么东西啊!原来这才是性价比之王

    最近,互联网上掀起一股讨论热潮,大家都想知道“比搬瓦工便宜的CN2是什么东西啊!”究竟是什么来头?其实,CN2作为一个新兴的工具或服务,正在以其超高的性价比迅速占领市场。对于经常使用搬瓦工的用户来说,CN2的出现无疑是一个重磅惊喜。搬瓦工是什么?它是一款功能强大的工具,广泛应用于XX领域(如文件传输...

    搬瓦工VPS与IPv6: 优化你的网络体验

    搬瓦工(BandwagonHost)作为一家由加拿大IT7 Networks公司推出的品牌,专注于提供性价比较高的VPS主机服务。我一直对VPS的体验充满好奇,尤其是搬瓦工的背景与发展历程。最初,搬瓦工主要销售超低价的OpenVZ方案,吸引了不少预算有限的用户。随着技术的发展和市场需求的变化,搬瓦工...

    easyvm:轻松创建和管理虚拟机的虚拟化解决方案

    什么是 easyvm easyvm 是一种轻量级的虚拟化解决方案,旨在帮助用户快速、简单地创建和管理虚拟机。面对日益增长的技术需求和IT成本压力,easyvm 提供了一个灵活且易于使用的平台,适合不同技术水平的用户。它不仅支持多种操作系统的虚拟化,还能够满足不同开发、测试以及生产环境的需求。每个人都...

    AS4134:全球互联网中的自主系统与数据传输的未来

    什么是AS4134? AS4134是一个全球互联网中的自治系统编号,这个编号用于标识网络中的各种自治系统。让我简单说一下,自治系统可以被理解为单一的网络或网络集合,在运行自己的路由协议时相对独立。AS4134作为其中的一部分,协助数据在互联网中高效而安全地传输。当你在网上冲浪时,实际上是在通过多个这...

    Just Host VPS:全面分析与优缺点评估

    Just Host VPS 概述 在今天的数字化时代,随着网络技术的不断发展,越来越多的人开始关注虚拟专用服务器(VPS)。那么,什么是 VPS 呢?简单来说,VPS 是将一台物理服务器划分成多个虚拟服务器的技术。这意味着用户可以获得独立的操作环境和资源,而不必与其他用户共享,这样的隔离性提高了性能...

    如何选择合适的云服务器厂商:费用结构与性能比较

    在当今科技飞速发展的时代,云服务器已经成为了网络基础设施的重要组成部分。简单来说,云服务器就是通过互联网提供的虚拟服务器,用户可以根据需求灵活调整性能、存储和带宽。在我开始接触云计算的过程中,第一次了解到云服务器时,感觉就像打开了一个全新的世界。它不再是以往传统服务器的束缚,而是真正实现了资源的共享...