Squid 代理服务器 配置文件路径: /etc/squid.conf 端口号:3128

本文介绍了Linux操作系统中Squid开源代理服务软件,阐述其缓存代理功能、工作机制、基本类型、使用原因及好处。详细说明了使用systemctl管理Squid服务的脚本,还讲解了Squid服务器传统代理和透明代理的配置方法,以及代理服务的验证方式。

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

   一. 缓存代理概述

        Squid 是linux 操作系统中最常用的一款开源代理服务软件, 可以很好地实现 HTTP 和FTP  以及DNS查询 SSL 等应用的缓存代理 功能十分强大

1.1 ) 代理的工作机制

        当客户机通过代理来请求 Web 页面时, 指定的代理服务器会先检查自己的缓存, 如果缓存中已经有客户机需要的页面, 则直接将缓存中的页面内容反馈给客户机;

        如果缓存中没有客户机要访问的页面,则由代理服务器向  lnternet  发送访问请求,获得返回的 Web 页面后,将页面数据保存到缓存中并发送给客户机;

如图所示--



1.2) 代理的基本类型

> 传统代理: 也就是普通的代理服务 使用于 lnternet 需明确指定服务端

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


1.3) 使用代理的原因及作用

缓存网页对象,减少重复请求 提高客户机的 Web 访问响应速度


1.4) 使用代理的好处

提高 Web 访问速度

隐藏客户机的真实IP地址


                               使用 systemctl 方式 打开/关闭Squid服务

        为了使 Squid 服务的启动. 停止. 重载. 等操作更加方便 可以编写 Squid 脚本, 并使用 chkconfig 和  systemctl 工具进行管理

1) 使用 Squid 脚本

1

[root@localhost ~]   vim  /etc/init.d/squid

 //  创建脚本服务

添加如下内容:

#!/bin/bash
# chkconfig: 35 90 25
# config file:/etc/squid.conf
# Description: squid - internet object cache.
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
    start)
        netstat -utpln |grep squid &>/dev/null
        if [ $? -eq 0 ];then
            echo "squid is running."
        else
            echo "squid is starting."
            $CMD
        fi
    ;;
    stop)
        $CMD -k kill &>/dev/null
        rm -rf $PID &>/dev/null
        echo "squid is stoped."
    ;;
    status)
        [ -f $PID ] &>/dev/null
        if [ $? -eq 0 ];then
            netstat -anpt |grep squid
        else
            echo "squid is not running" &&/bin/false
        fi
    ;;
    restart)
        $0 stop 
        $0 start
    ;;
    reload)
        $CMD -k reconfigure
    ;;
    check)
        $CMD -k parse
    ;;
    *)
    echo "Usage:$0 {start|stop|restart|reload|check|status}"
    exit 1
    ;;
esac

1[root@localhost ~]#   chmod  +x  /etc/init.d/squid// 为此目录添加执行权限
2[root@localhost ~]#  chkconfig  --add  squid//  添加为系统服务
3[root@localhost ~]#  systemctl  restart  squid

//  重启 Squid  服务

     


                                                           构建代理服务器

1. Squid 服务器的配置 

       配置 Squid 实现传统代理服务时.需要注意添加  http_access  allow  all  访问策略  以便允许任意客户机使用代理服务. 初次之外 为了限制下载的文件大小,还需要设置  reply_body_max_size  项, 其他各种参数可保持默认

1.1)  修改 Squid.conf 配置文件

1[root@localhost ~]#  vim  /etc/squid.conf//  编辑 Squid 主配置文件
2                      http_port  3128
3                      reply_body_max_size  10MB//  允许下载的最大文件大小 (10MB)
4                      http_access  allow  all//  允许任意客户机使用代理服务器  allow:允许    all:所有
5~~~~~   // 省略部分内容

1.2) 重载 Squid 服务配置

          修改 Squid.conf 配置文件后, 需要重新启动服务方可生效. 执行 "systemctl restart squid"  or  "squid -k  reconfigure"  命令 都可以重新加载服务配置


客户机的代理设置:

win10 找到设置--------网络和Internet------代理------打开"使用代理服务器"------输入代理IP地址及服务端口号-----保存


2.代理服务的验证方式

在客户机中通过浏览器访问目标网站 然后观察 Sqid 代理服务器 ,  Web服务器的访问日志  验证代理服务是否发挥作用

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

在Squid代理服务器中 通过跟踪 Squid服务的访问日志文件 应该能够发现客户机访问网站服务器的记录

1[root@localhost ~]#  tail  -f  /usr/local/squid/var/logs/access.log//  Squid 代理访问日志路径

2.2)  查看Web 访问日志的新增路径

       在被访问的 Web服务器中,通过跟踪 httpd 服务的访问日志文件 应该能够发现来自代理服务器的访问记录. 这说明当客户机使用代理后  Web并不知道客户机的真实IP地址 因为实际上是由代理服务器替客户机进行访问的

1[root@localhost ~]#  tail -f  /var/log/httpd/access_log//  httpd 服务访问日志路径

        当客户机再次访问同一Web页面时 Squid访问日志会增加新的记录, 但Web访问日志中的记录不会有变化, 这说明当客户机重复访问同一静态页面时,实际是有代理服务器通过缓存提供的  当客户机访问Web页面时 首先去代理服务器中查找 当代理服务器中没有时 再又代理向 lnternet 查找 ,从而实现隐藏客户机真实IP地址 代理找到后缓存到自己本地 再反馈给客户机 


                                          配置Squid 透明代理

实验环境:两台Centos7  一台win7/10

1.Linux-1

squid上添加两块网卡    Vmnet1:  192.168.10.1(内网)

                                      Vmnet8:   200.1.1.1((外网)

2.Linux-2

外网Web服务器             Vmnet8:   200.1.1.2 (不指网关)

3.Win  客户端

Vmnet1:    192.168.10.2  (指网关)


1.配置 Squid 支持透明代理

Squid 服务器默认配置并不支持透明代理 因此需要调整相关配置, 只要在 http_port 配置行添加 "transparent" (透明) 选项  即可支持透明代理  (把原先的 http_port 3128 配置行删除or覆盖 否则重启错误)

1[root@localhost ~]#     vim /etc/squid.conf//  Squid配置文件
2         61 http_port 192.168.10.1:3128 transparent//  使 Squid 支持透明代理


2.开启路由功能 实现本机中不同网段的地址转发

1[root@localhost ~]# vi /etc/sysctl.conf 
2                               net.ipv4.ip_forward = 1//  开启路由转发功能
3[root@localhost ~]# sysctl -p//  让上边配置立即生效


3. 设置 firewalld 的重定向策略 

设置防火墙规则---重定向策略     
15、开启防火墙,添加防火墙规则

ens33----内网网关
ens36----外网接口
  
[root@localhost ~]# systemctl start firewalld

[root@localhost ~]# iptables -t nat -I PREROUTING -i ens33 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128

[root@localhost ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT


测试:
1.内网客户机 windows 192.168.10.2

内网网关指向 Squid 服务器
浏览器访问 http://200.1.1.2 网站

2.squid 服务器查看日志验证:
[root@www ~]# tail -f  /usr/local/squid/var/logs/access.log 

3.外网web服务器查看网站验证
              tail -f /var/log/httpd/access_log 
              
当查看squid访问日志的时候,是192.168.10.2在访问
当查看web访问日志的时候,是200.1.1.1在访问web服务器

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值