Squid代理服务器应用

本文详细介绍了Squid代理服务器的各种应用场景,包括正向代理、透明代理和反向代理的构建过程,以及Squid的安装、配置和ACL访问控制。通过实例演示了如何设置和管理Squid,确保网络访问的安全性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

一、Squid的脚本概念

1、Squid的作用

2、Web代理的工作机制

3、代理服务器的概念

4、代理服务器的作用

5、代理的基本类型

6、使用正向代理(传统代理、透明代理)的好处

7、反向代理的工作机制

二、Squid的安装及配置

1、各服务器的环境部署

2、安装Squid服务

2.1  编译安装Squid

2.2  修改Squid的配置文件

2.3  Squid的运行控制

2.4  创建Squid服务脚本

三、构建传统代理服务器

1、服务器配置

2、修改Squid配置文件

3、常用的配置选项

4、生产环境中还需要修改防火墙规则

5、客户机的代理配置

6、查看Squid访问日志的新增记录

7、查看Web访问日志的新增记录

四、构建透明代理服务器

1、服务器配置

2、Squid服务器部署

2.1  修改Squid配置文件

2.2  开启路由转发,实现本机中不同网段的地址转发

2.3  修改防火墙规则

3、客户端访问测试

3.1  查看Squid访问日志的新增记录

3.2  查看Web访问日志的新增记录

五、构建反向代理服务器

1、服务器配置

2、配置Squid服务器

2.1  修改squid配置文件

2.2  腾出80端口,清空无效的路由规则

3、Web服务器页面准备

4、客户端访问测试

4.1  添加主机映射

4.2  访问www.test.com测试

4.3  查看squid访问记录

4.4  查看Web服务器访问记录

4.5  客户端抓包

六、ACL访问控制

1、ACL访问控制方式

2、ACL规则优先级

3、ACL的定义步骤

4、常用的ACL列表类型

5、ACL的特点

6、对象列表管理

6.1   创建列表管理

6.2  客户端访问测试

七、Squid日志分析--sarg软件的安装及应用

1、安装图像处理软件包

2、源码编译安装sarg

3、 修改配置文件/etc/sarg/sarg.conf

4、创建不计入站点文件,添加的域名将不被显示在排序中

5、 创建软链接到PATH路径

6、安装apache并生成sarg

7、浏览器访问查看

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

8.1  编写执行脚本

8.2  添加计划任务

总结


 

 

前言

搭建代理服务器可以提高上网打开网页的速度,可以对非法网站进行屏蔽,限制文件下载,以及查看员工访问internet的情况,包括上网的地址,用户,时间等,是企业网络管理的常用手段。

一、Squid的脚本概念

1、Squid的作用

Squid主要提供缓存加速、应用层过滤控制的功能。

2、Web代理的工作机制

缓存网页对象,减少重复请求

代理客户机向网站请求数据,从而可以隐藏用户的真实IP地址。

将获得的网页数据(静态Web元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。

3、代理服务器的概念

代理服务器是一个位于客户端和原始(资源)服务器之间的服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定原始服务器,然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。

4、代理服务器的作用

● 资源获取:代替客户端实现从原始服务器的资源获取。
● 加速访问:代理服务器可能离原始服务器更近,从而起到一定的加速作用。
● 缓存作用:代理服务器保存从原始服务器所获取的资源,从而实现客户端快速的获取。
● 隐藏真实地址:代理服务器代替客户端去获取原始服务器资源,从而隐藏客户端真实信息。

5、代理的基本类型

传统代理:适用于Internet,需在客户机指定代理服务器的地址和端口。

透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理。

 

反向代理:如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的Web服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。

6、使用正向代理(传统代理、透明代理)的好处

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

7、反向代理的工作机制

● 缓存网页对象,减少重复请求
● 将互联网请求轮询或按权重分配到内网Web服务器
● 代理用户请求,避免用户直接访问Web服务器,提高安全性

二、Squid的安装及配置

1、各服务器的环境部署

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2、安装Squid服务

2.1  编译安装Squid

[root@squid_server ~]# yum install -y gcc gcc++ make
[root@squid_server ~]# cd /opt
[root@squid_server opt]# rz -E
#传入Squid安装包
rz waiting to receive.
[root@squid_server opt]# tar zxvf squid-3.5.28.tar.gz -C /opt
[root@squid_server opt]# cd squid-3.5.28/
[root@squid_server 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中有下划线
> --disable-poll \                           #关闭默认使用poll模式
> --enable-epoll \                           #开启epoll模式提升性能
> --enable-gnuregex                          #使用GNU正则表达式
[root@squid_server squid-3.5.28]# make -j 2 && make install 
[root@squid_server squid-3.5.28]# ln -s /usr/local/squid/sbin/* /usr/local/sbin
[root@squid_server squid-3.5.28]# useradd -M -s /sbin/nologin squid
[root@squid_server squid-3.5.28]# chown -R squid:squid /usr/local/squid/var
#此目录用于存放缓存文件,不修改权限或属主属组,squid将无法存储缓存

2.2  修改Squid的配置文件

[root@squid_server squid-3.5.28]# vim /etc/squid.conf

# And finally deny all other access to this proxy
##56行插入
http_access allow all         ##放在http_access deny all之前,允许任意客户机使用代理服务,控制规则自上而下匹配
http_access deny all

# Squid normally listens to port 3128
http_port 3128                ##用来指定代理服务监听的地址和端口(默认的端口号为3128)
##61行插入
cache_effective_user squid    ##添加,指定程序用户,用来设置初始化、运行时缓存的账户,否则启动不成功
cache_effective_group squid   ##添加,指定账号基本组

##68行,缓存文件目录,默认为/usr/local/squid/var/cache/squid,这里不做修改
coredump_dir /usr/local/squid/var/cache/squid

2.3  Squid的运行控制

[root@squid_server squid-3.5.28]# squid -k parse   检查配置文件语法是否正确
[root@squid_server squid-3.5.28]# squid -z   #-z选项用来初始化缓存目录
[root@squid_server squid-3.5.28]# squid      #启动squid服务
[root@squid_server squid-3.5.28]# netstat -natp | grep 'squid' 查看Squid服务端口号
tcp6       0      0 :::3128                 :::*                    LISTEN      9142/(squid-1)    
[root@squid_server squid-3.5.28]# squid -k rotate -f /etc/squid.conf
定期清理swap.state内无效数据

2.4  创建Squid服务脚本

[root@squid_server squid-3.5.28]# vim /etc/init.d/squid

#!/bin/bas
##解释器
#chkconfig: 2345 90 25
##2345为默认自启动级别,如是-代表任何级别都不自启动;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@squid_server squid-3.5.28]# chmod +x /etc/init.d/squid 
##添加可执行权限
[root@squid_server squid-3.5.28]# chkconfig --add squid
##添加到系统管理程序
[root@squid_server squid-3.5.28]# chkconfig --level 35 squid on
##设置squid启动级别,脚本中已定义

三、构建传统代理服务器

1、服务器配置

服务器 主机名 IP地址 主要软件
Squid服务器 squid_server 192.168.122.10 squid
Web服务器 web_server 192.168.122.11 apache
Win10客户端 192.168.122.222 edge浏览器

2、修改Squid配置文件

[root@squid_server squid-3.5.28]# vim /etc/squid.conf

# And finally deny all other access to this proxy
http_access allow all
http_access deny all

# Squid normally listens to port 3128
http_port 3128
cache_effective_user squid
cache_effective_group squid
##63行插入
cache_mem 64 MB
##指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB
##允许用户下载的最大文件大小,默认以字节为单位,当下载超过指定大小的Web对象时,浏览器的报错页面中会出现“请求或访问太大”的提示默认设置0表示不进行限制
maximum_object_size 4096 KB
##允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

3、常用的配置选项

http_port 3128                              #监听端口 (还可以只监听一个IP http_port 192.168.0.1:3128)
cache_mem 64MB                              #缓存占内存大小
maximum_object_size 4096KB                  #最大缓存块
reply_body_max_size  1024000 allow all      #限定下载文件大小
access_log /var/log/squid/access.log        #访问日志存放的地方
visible_hostname    proxy.test.xom          #可见的主机名
cache_dir ufs /var/spool/squid  100 16 256 
\#ufs:缓存数据的存储格式
\#/var/spool/squid    缓存目录
\#100:缓存目录占磁盘空间大小(M)
\#16:缓存空间一级子目录个数
\#256:缓存空间二级子目录个数
cache_mgr [email protected]                #定义管理员邮箱
http_access deny all                        #访问控制

[root@squid_server squid-3.5.28]# systemctl restart squid

4、生产环境中还需要修改防火墙规则

[root@squid_server squid-3.5.28]# iptables -F
#清空原防火墙规则
[root@squid_server squid-3.5.28]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
#不指定表将默认配置filter表,设置INPUT链规则,指定协议为tcp,指定端口3128,目标动作为ACCEPT接受

5、客户机的代理配置

win10:

  1. 打开浏览器
  2. 设置
  3. 系统
  4. 打开计算机的代理设置

 

  5.手动设置代理

  6.输入地址:Squid服务器的IP地址,端口:3128

7.访问测试

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值