squid代理(反向、传统、透明)+ACL控制+日志分析

本文详细介绍了Squid代理服务的搭建、配置和优化,包括缓存代理的工作机制、Squid服务的安装与配置、传统代理与透明代理的设置、ACL访问控制以及日志分析。此外,还讲解了Squid反向代理的原理和区别于SNAT和DNAT的特点。通过实例展示了如何在Linux环境下配置Squid,以提高Web访问速度、隐藏客户机IP地址以及实现访问控制策略。
摘要由CSDN通过智能技术生成

一、缓存代理概述

1.1 Web代理的工作机制

  • 缓存网页对象,减少重复请求
  • 代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址
  • 将获得的网页数据(静态Web元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速相应

在这里插入图片描述

1.2 代理的基本类型

  • 传统代理:适用于lnternet,需明确指定服务端
  • 透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理
  • 反向代理:如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的Web服务器请求资源,然后将请求的应答返回给客户端,同时也将应答缓存(静态)在本地,以供下一个请求者使用

1.3 使用代理的好处

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

二、Squid服务搭建

2.1 搭建环境

  • squid:192.168.131.10
  • apache:192.168.131.11
  • 客户端(Win10):192.168.131.5

2.2 安装squid服务

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl disable firewalld.service 
[root@localhost ~]# yum -y install gcc gcc-c++ make
[root@localhost opt]# cd /opt/
[root@localhost opt]# ls
rh  squid-3.5.28.tar.gz
[root@localhost opt]# tar zxvf squid-3.5.28.tar.gz
[root@localhost opt]# cd squid-3.5.28/
[root@localhost squid-3.5.28]# ./configure --prefix=/usr/local/squid \       【指定安装目录路径】
> --sysconfdir=/etc \                                                        【指定配置文件路径】
> --enable-arp-acl \                                                         【MAC地址管控,防止客户端使用IP欺骗】
> --enable-linux-netfilter \                                                 【使用内核过滤】
> --enable-linux-tproxy \                                                    【支持透明模式】
> --enable-async-io=100 \                                                    【异步IO,提升存储性能】
> --enable-err-language="Simplify_Chinese" \                                 【错误信息的显示语言】
> --enable-underscore \                                                      【允许URL中又下划线】
> --enable-poll \                                                            【使用poll模式】
> --enable-gnuregex                                                          【使用GUN正则表达式】

./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
[root@localhost squid-3.5.28]# make -j2 && make install

【创建程序用户squid,保证系统安全性】
[root@localhost squid-3.5.28]# useradd -M -s /sbin/nologin squid
【创建软链接到路径环境变量便于系统识别squid】
[root@localhost squid-3.5.28]# ln -s /usr/local/squid/sbin/ * /usr/local/bin/
【为/usr/local/squid/var/目录递归指定属主属组】
[root@localhost squid-3.5.28]# chown -R squid.squid /usr/local/squid/var/


【该配置文件的运行机制是自上而下。即匹配之后,自此行之下不再进行匹配】
[root@localhost bin]# vim /etc/squid.conf 

【55行以上是访问权限允许的配置,以下是权限拒绝的操作,如果不需要配置权限拒绝的话,可以直接注释配置“允许所有访问”】
 55 # And finally deny all other access to this proxy
 
【因为机制是自上而下,所以需在deny之前。允许放通所有,即允许所有客户机使用代理服务】
 56 http_access allow all
 57 http_access deny all
 61 cache_effective_user squid                     【添加指定程序用户,用来设置初始化,运行时缓存的账号,不添加启动不成功】
 62 cache_effective_group squid                    【添加指定账户基本组】



[root@localhost bin]# squid -k parse               【检测配置文件语法是否正确】
[root@localhost bin]# squid -z                     【初始化缓存目录】
[root@localhost bin]# squid                        【启动服务】
[root@localhost bin]# netstat -napt | grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      57070/(squid-1)   


[root@localhost bin]# cd /etc/init.d/
[root@localhost init.d]# vim squid               【编写squid服务脚本】
#!/bin/bash
#chkconfig: 2345 90 252345是默认自启动级别,如果是-代表任何级别都不自启动】
                                                【90是启动优先级;25是停止优先级;优先级范围是0-100,数字越大,优先级越低】
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"

case "$1" in
   start)
     netstat -natp | 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 -natp | 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


[root@localhost init.d]# chmod +x /etc/init.d/squid     【给予该服务启动脚本可执行权限】
[root@localhost init.d]# chkconfig --add squid          【将该服务加入chkconfig(系统服务管理)管理】
[root@localhost init.d]# chkconfig --level 35 squid on  【可以在字符界面(3)和视图界面(5)中自启动】
[root@localhost init.d]# chkconfig --list squid         【查看能在几个运行级别中自启动】

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。
【2345是脚本中默认的自启动级别】
squid          	0:1:2:3:4:5:6:

2.3 传统代理

【在squid配置文件的63行插入以下3行】
[root@localhost init.d]# vim /etc/squid.conf

【指定缓存功能所使用的内存空间大小,便于保持访问教频繁的Web对象,容量最好为4的倍数,单位为MB。建议设为物理内存的四分之一】
 63 cache_mem 64 MB             

【允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制】
 64 reply_body_max_size 10 MB

【允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户】
 65 maximum_object_size 4096 KB
  • 重启服务并查看
[root@localhost init.d]# service squid restart
正在关闭 squid...
正在启动 squid....
[root@localhost init.d]# netstat -natp | grep squid 
tcp6       0      0 :::3128                 :::*                    LISTEN      97458/(squid-1)  
  • 生产环境中还需要修改防火墙规则
[root@localhost init.d]# iptables -F
[root@localhost init.d]# setenforce 0
【在INPOT链开头插入允许tcp端口3128的数据通过的策略】
[root@localhost init.d]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
[root@localhost init.d]# service squid reload    【重载服务】
[root@localhost init.d]# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:squid

2.4 httpd配置

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl disable firewalld.service 
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# netstat -natp | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      44106/httpd  

2.5 开启代理并观察日志

在这里插入图片描述
在这里插入图片描述

2.6 透明代理服务器构建

  • Squid-Server :ens33:192.168.13110 、 ens36:192.168.100.10
  • Web : 192.168.100.100
  • 客户端 :192.168.131.100

在这里插入图片描述
在这里插入图片描述

  • 配置双网卡
[root@localhost init.d]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
[root@localhost init.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.131.10
NETMASK=255.255.255.0
#GATEWAY=192.168.131.2                     【将网关和DNS注释掉,此时本机相当于网关服务器】
#DNS1=192.168.131.2
[root@localhost init.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens36
NAME=ens36                                 【名称ens36】
#UUID=8b83f99f-7a65-42d7-9510-5b214a8a20de 【因为是直接复制ens33,所以这里的UUID需注释】
DEVICE=ens36                               【设备ens36】
ONBOOT=yes
IPADDR=192.168.100.10                      【ens36IP地址】
NETMASK=255.255.255.0
#GATEWAY=192.168.100.2                     【网关注释】
#DNS1=192.168.100.2                        【DNS注释】

[root@localhost init.d]# systemctl restart network
[root@localhost init.d]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.131.10  netmask 255.255.255.0  broadcast 192.168.131.255
        inet6 fe80::a642:fac7:7adb:8efb  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:49:74:c2  txqueuelen 1000  (Ethernet)
        RX packets 25556  bytes 14832869 (14.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22490  bytes 14555560 (13.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.10  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::ee9:986a:f26c:46e5  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:49:74:cc  txqueuelen 1000  (Ethernet)
        RX packets 369  bytes 43266 (42.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 51  bytes 7436 (7.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


[root@localhost /]# vim /etc/sysctl.conf     【在此配置文件最后一行添加,开启路由转发】
net.ipv4.ip_forward=1
[root@localhost /]# sysctl -p                【加载内核配置文件】
net.ipv4.ip_forward = 1

【添加静态路由。gw:指定下一跳路由器的 IP 地址】
[root@localhost /]# route add -net 192.168.100.0/24 gw 192.168.131.10

【将配置文件的第60行进行修改,添加提供内网服务的ip地址并开启透明模式的支持】
[root@localhost /]# vim /etc/squid.conf
 60 http_port 192.168.131.10:3128 transparent
[root@localhost /]# service squid reload     【重载服务】


[root@localhost /]# iptables -F
[root@localhost /]# iptables -t nat -F
【添加防火墙规则(将100网段:80(HTTP)/443(HTTPS)端口的流量重定向到3128端口)】
[root@localhost /]# iptables -t nat -I PREROUTING -i ens36 -s 192.168.131.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
[root@localhost /]# iptables -t nat -I PREROUTING -i ens36 -s 192.168.131.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
【如果重启的话需要再配置以下规则】
[root@localhost /]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
  • Web服务器
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::d6b9:3f4f:af20:4b7e  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a2:07:46  txqueuelen 1000  (Ethernet)
        RX packets 56  bytes 6858 (6.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 93  bytes 10530 (10.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl disable firewalld.service 
[root@localhost ~]# mount /dev/cdrom /mnt/
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl restart httpd.service 

2.7 Windows关闭代理测试

在这里插入图片描述

三、ACL访问控制

  • 在配置文件squid.conf中,ACL访问控制通过以下两个步骤来实现
    • 1.使用acl配置项定义需要控制的条件
    • 2.通过http_access配置项对已定义的列表做“允许”或“拒绝”访问的控制
  • 每行ACL配置可以定义一条访问控制列表,格式如下
    • 格式:acl 列表名称 列表类型 列表内容
    • 列表名称:名称是自定义,相当于给ACL起个名字(类似于Shell脚本变量名)
    • 列表类型:必须使用squid预定义的值,对应不同类别的控制条件
    • 列表内容:是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格分隔,相当于“或”的关系)

3.1 方式一

  • ACL控制分析
acl localhost src 192.168.131.10/32 			    【基于源地址为】
acl MYLAN src 192.168.131.0/24 			            【基于客户机网段】
acl destionhost dst 192.168.131.20/32				【基于目标地址为】
acl MC20 maxconn 30									【基于最大并发连接】 
acl PORT port 33									【基于目标端口】
acl DMBLOCK dstdomain .qq.com						【基于目标域,匹配域内所有站点】

【url正则表达式的结构,基于指定的协议进行过滤^rtsp(协议)的控制】
acl BURL url_regex -i ^rtsp:// ^emule://			【以 rtsp://、emule:// 开头的 URL,-i表示忽略大小写】

【基于访问文件的末尾(格式)】
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$		【以.mp3、.mp4、.rmvb 结尾的URL路径】

【基于访问时间控制】
acl WORKTIME time MTWHF 0:30-7:30					【时间为周一至周五 0:30~7:30,“MTWHF”为每个星期的英文首字母】
【以上控制是否允许则取决于以下的allow/deny】
[root@localhost /]# vim /etc/squid.conf
  8 acl host     src 192.168.131.100/24    【IP地址为192.168.131.100.10/24的主机】
 32 http_access deny host                     【拒绝目标主机访问】
  • Win10进行访问测试
    在这里插入图片描述

3.2 方式二

  • squid:192.168.131.10
  • Web1:192.168.131.13
  • Web2:192.168.131.14
[root@localhost /]# vim /dest.list       【启用对象列表管理】
192.168.131.13                           【目标IP】


【调用指定文件中的列表内容】
【如果调用的列表是文件形式,则需要先把文件定义给列表】
【acl 将文件定义的列表(名) dst(目标地址) 定义目标地址的文件路径(绝对路径)】
[root@localhost /]# vim /etc/squid.conf   
  8 acl destionhost dst "/dest.list"     
 32 http_access deny destionhost         【拒绝列表】
【如果是拒绝列表,则需要放在http_access allow all前面(上一行)】

[root@localhost /]# service squid restart
  • Web1和Web2
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl disable firewalld.service 
[root@localhost ~]# yum install -y httpd
[root@localhost ~]# systemctl start httpd.service 
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
GATEWAY=192.168.131.10       【将网卡指向squid服务器】

  • 清理缓存并设置代理后进行访问验证
    在这里插入图片描述

四、squid日志分析

  • Sarg(Squid Analysis Report Generator)是一款Squid日志分析工具,采用HTML格式,详细列出每一位用户访问Internet的站点信息、时间占用信息、排名、连接次数、访问量等等

4.1 安装图像处理软件包

[root@localhost opt]# vim /etc/squid.conf              【需把之前配置的deny部分删除】
[root@localhost opt]# yum install -y pcre-devel gd gd-devel
[root@localhost opt]# vim /etc/squid.conf
[root@localhost opt]# mkdir /usr/local/sarg
[root@localhost opt]# cd /opt/
[root@localhost opt]# ls
rh  sarg-2.3.7.tar.gz  squid-3.5.28  squid-3.5.28.tar.gz
[root@localhost opt]# tar zxvf sarg-2.3.7.tar.gz 
[root@localhost sarg-2.3.7]# ./configure --prefix=/usr/local/sarg \
> --sysconfdir=/etc/sarg \                            【配置文件目录,默认是/usr/local/etc】
> --enable-extraprotection                            【额外安全防护】
[root@localhost sarg-2.3.7]# make && make install
[root@localhost sarg-2.3.7]# vim /etc/sarg/sarg.conf
  7 access_log /usr/local/squid/var/logs/access.log   【取消注释;指定访问日志文件】
 25 title "Squid User Access Reports"                 【取消注释;网页标题】
120 output_dir /var/www/html/sarg                     【取消注释后修改;报告输出目录】
178 user_ip no                                        【取消注释;使用用户名显示】
184 topuser_sort_field connect reverse                【取消注释后修改;top排序中,指定连接次数采用降序排列,升序是normal】
190 user_sort_field connect reverse                   【取消注释后修改;对于用户访问记录,连接次数按降序排序】
206 exclude_hosts /usr/local/sarg/noreport            【取消注释后修改;指定不计入排序的站点列表的文件】
257 overwrite_report no                               【取消注释;同名同日期的日志是否覆盖】
289 mail_utility mailq.postfix                        【取消注释后修改;发送邮件报告命令】
434 charset UTF-8                                     【取消注释后修改;指定字符集UTF-8518 weekdays 0-6                                      【取消注释;top排行的星期周期】
525 hours 0-23                                        【取消注释;top排行的时间周期】
633 www_document_root /var/www/html                   【取消注释;指定网页根目录】




4.2 添加不计入站点文件,并运行

【添加不计入站点文件,添加的域名将不被显示在排序中】
[root@localhost sarg-2.3.7]# touch /usr/local/sarg/noreport
[root@localhost sarg-2.3.7]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
[root@localhost sarg-2.3.7]# sarg                     【启动一次记录】
SARG: 纪录在文件: 128, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/sarg/2021May09-2021May09

4.3 验证

[root@localhost sarg-2.3.7]# yum install httpd -y
[root@localhost sarg-2.3.7]# systemctl start httpd
  • 浏览器访问 http://192.168.131.10/sarg ,查看sarg报告网页sarg
    在这里插入图片描述

4.4 添加计划任务,执行每天生成报告

[root@localhost sarg-2.3.7]# vim /usr/local/sarg/report.sh

#/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y)
#Get one week ago today
YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y)         
/usr/local/sarg/bin/sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/sarg -z -d $YESTERDAY-$TODAY &> /dev/null
exit 0
【TODAY=$(date +%d/%m/%Y):变量TODA日期+//年】
【YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y)  :变量YESTERDAY前一天日期+//年】
【-o:输出到报告目录中】
【-l:导入缓存日志文件】
【-z:进程消息】
【-d:日期消息】
【exit 0:退出返回值0[root@localhost sarg-2.3.7]# chmod +x /usr/local/sarg/report.sh
[root@localhost sarg-2.3.7]# crontab -e
no crontab for root - using an empty one

0 30 * * * /usr/local/sarg/report.sh

五、Squid 反向代理

  • Squid 反向代理工作机制
    • 缓存网页对象,减少重复请求
    • 将互联网请求轮训或按权重分配到内网Web服务器
    • 代理用户请求,避免用户直接访问Web服务器,提高安全
  • Squid-Server :192.168.131.10
  • Web1:192.168.131.13
  • Web2:192.168.131.14
  • 客户机(Win10):192.168.131.7
【在第60行下面进行插入】
[root@localhost sarg-2.3.7]# vim /etc/squid.conf
 60 # Squid normally listens to port 3128
 61 http_port 192.168.131.10:80 accel vhost vport
 62 cache_peer 192.168.131.13 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
 63 cache_peer 192.168.131.14 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
 64 cache_peer_domain web1 web2 www.qz.com
【表示对www.qz.com的请求,squid向192.168.131.13192.168.131.1480端口发出请求】
【http_port 80 accel vhost vport:squid从一个缓存变成了一个Web服务器反向代理加速模式,这个时候squid在80端口监听请求,
同时和web server的请求端口(vhost vport)绑定,这个时候请求到了squid,squid是不用转发请求的,
而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据。】
【accel :反向代理加速模式】
【vhost :支持域名或主机名来表示代理节点】
【vport :支持IP和端口来表示代理节点】
【parent :代表为父节点,上下关系,非平级关系】
【80 :代理内部web服务器的80端口】
【0 :没有使用icp,表示就一台squid服务器】
【no-query :不做查询操作,直接获取数据】
【originserver :指定是源服务器】
【round-robin :指定 squid 通过轮询方式将请求分发到其中一台父节点】
【max_conn :指定最大连接数】
【weight : 指定权重】
【name :设置别名】
[root@localhost init.d]# systemctl stop httpd       【因为httpd会占用80端口,所以必须关闭squid服务器中的htppd服务】
[root@localhost init.d]# systemctl restart squid

  • Web1、Web2
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl disable firewalld.service
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# echo "this is Web1" >> /var/www/html/index.html
[root@localhost ~]# echo "this is Web2" >> /var/www/html/index.html 【Web2】
  • 客户机Win10的域名映射配置
  • hosts文件修改后无法保存
    在这里插入图片描述
  • 开启代理服务器(地址:Squid服务器IP地址,端口:80)
  • 浏览器访问 http://www.qz.com

在这里插入图片描述

六、总结

6.1 squid

  • 代理的好处
    • 提高Web访问速度
    • 隐藏客户机的真实IP地址
  • squid代理功能
    • 做前置的Web缓存,加快用户访问Web的速度代理内网用户访问互联网资源设置访问控制策略,控制用户的上网行为。主要支持http、ftp等应用协议
  • 传统代理:适用于lnternet,需明确指定服务端
  • 透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理
  • 反向代理:如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的Web服务器请求资源,然后将请求的应答返回给客户端,同时也将应答缓存(静态)在本地,以供下一个请求者使用

6.2 squid与SNAT和DNAT的区别

  • 1. SNAT和DNAT
    • 网络层次:网络层
      局域网用户访问外网走snat模式,同一个数据包,改变数据包头部的来源地址,再把数据包发到internet。
    • 作用:内网用户上外网(SNAT)和内网服务发布到公网(DNAT)
  • 2. 代理服务器模式
    • 网络层次:应用层
      不改变数据包头信息,把数据包代理给internet的服务器,基于应用层的过滤。
    • 作用:缓存页面,加速访问,ACL资源访问控制
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TaKe___Easy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值