目录

一、项目整体框架

二、项目引入

1. 背景

2. 解决方案

三、需求分析

四、知识准备

(一)代理服务器概述

主要功能

(二)代理服务器工作原理

(三)Squid 基础介绍

Squid 代理类型

Squid 核心文件与端口

五、项目实施(完整步骤)

(一)环境准备

(二)安装 Squid

(三)Squid 服务管理(RHEL 7/8)

(四)第一次启动必须初始化缓存

(五)Squid 主配置文件详解(/etc/squid/squid.conf)

1. 核心配置项

cache_dir 详细说明

(六)访问控制列表 ACL(重点)

1. ACL 作用

2. ACL 语法

3. 常用 ACL 类型

4. 访问规则(http_access)

5. 学院场景配置示例

(七)配置检查与重载

(八)客户端配置

1. Linux(Firefox)

2. Windows(IE/Edge)

六、反思与进阶:部署透明代理

1. 透明代理特点

2. 实现条件

3. 实施步骤

(1)客户端配置

(2)Squid 服务器配置

(3)防火墙配置(firewalld)

(4)测试

七、项目小结

八、扩展知识(补充学习)

1. 正向代理 vs 反向代理

2. Squid 高级用法

3. 透明代理与普通代理对比

4. 常见问题排查

5. 同类代理软件




一、项目整体框架

本项目围绕学院内网上网慢、安全风险高的问题,使用 Squid 搭建代理服务器,实现加速访问、隐藏内网 IP、访问控制、安全防护目标。

项目流程:项目引入 → 需求分析 → 知识准备 → 项目实施 → 反思与进阶 → 小结




二、项目引入

1. 背景

学院网络服务增多 → 客户端数量上升 → 内网访问速度变慢网络攻击风险增加

2. 解决方案

部署代理服务器,实现:

  • 提升网络访问速度
  • 隐藏内网真实 IP 地址
  • 降低网络攻击风险
  • 保障内网安全



三、需求分析

  1. 理解代理服务工作原理
  2. 掌握代理服务器类型与区别
  3. 熟练使用 Squid 部署各类代理
  4. 按学院实际需求完成可用、安全的代理服务部署



四、知识准备

(一)代理服务器概述

全称:Proxy Server核心作用:代理网络用户获取网络资源,让多台无公网 IP 的客户端高速、安全访问互联网。

主要功能
  1. 突破访问限制教育网 / 内网可通过代理访问外部受限站点。
  2. 提升访问速度代理拥有硬盘缓冲区(Cache),相同资源直接从缓存返回,无需重复请求外网。
  3. 隐藏真实 IP外网只看到代理服务器 IP,保护内网主机安全。
  4. 访问控制与安全过滤禁止访问危险 / 违规网站,管控流量。

(二)代理服务器工作原理

  1. 客户端浏览器配置代理 → 请求发给代理服务器
  2. 代理检查本地缓存(Cache)
    • 有缓存 → 直接返回给客户端
    • 无缓存 → 代理向外网服务器请求资源
  3. 外网服务器返回数据 → 代理保存到缓存并转发给客户端
  4. 处理完成后进程释放资源

用户无感,以为直接访问目标服务器。大量请求命中缓存 → 整体速度显著提升。

(三)Squid 基础介绍

  1. 定义:高性能代理缓存服务器,支持 HTTP/HTTPS/FTP/gopher/SSL/WAIS
  2. 不支持:POP3、NNTP、RealAudio 等
  3. 架构:单进程、非模块化、I/O 驱动处理所有客户端请求
  4. 跨平台:Linux、FreeBSD、Solaris、AIX 等
  5. 核心优势:强大的 ACL(访问控制列表)ARL(访问权限列表),实现精细访问管控
Squid 代理类型
  1. 正向代理
    • 普通代理:客户端必须手动配置代理地址与端口
    • 透明代理:客户端无需配置,流量自动被代理接管
  2. 反向代理用于外网访问内网服务器,实现负载均衡、缓存加速、安全防护
Squid 核心文件与端口
  • 服务名:squid
  • 主程序:/usr/sbin/squid
  • 配置目录:/etc/squid
  • 主配置文件:/etc/squid/squid.conf
  • 默认监听端口:3128/TCP
  • 访问日志:/var/log/squid/access.log
  • 缓存日志:/var/log/squid/cache.log
  • 存储日志:/var/log/squid/store.log



五、项目实施(完整步骤)

(一)环境准备

  1. 配置 Squid 服务器 IP:172.16.43.254
  2. 关闭防火墙 / 设为 permissive 模式
  3. 配置 YUM 源(确保可安装软件包)

(二)安装 Squid

# 检查是否安装
rpm -q squid

# YUM 安装
yum install -y squid

# 验证安装
rpm -qa | grep squid

(三)Squid 服务管理(RHEL 7/8)

# 启动
systemctl start squid

# 停止
systemctl stop squid

# 重启
systemctl restart squid

# 查看状态
systemctl status squid

# 开机自启
systemctl enable squid

(四)第一次启动必须初始化缓存

squid -z

作用:创建硬盘缓存目录结构,修改 cache_dir 后必须重新执行。

(五)Squid 主配置文件详解(/etc/squid/squid.conf)

1. 核心配置项
配置项 作用 示例
http_port 监听端口 http_port 3128
cache_mem 内存缓存(建议物理内存 1/3) cache_mem 128 MB
cache_dir 硬盘缓存配置 cache_dir ufs /var/spool/squid 4096 16 256
visible_hostname 代理主机名 visible_hostname 172.16.43.254
cache_mgr 管理员邮箱 cache_mgr admin@zhiyuan.com
cache_access_log 访问日志路径 cache_access_log /var/log/squid/access.log
cache_log 缓存日志 cache_log /var/log/squid/cache.log
cache_store_log 存储日志 cache_store_log /var/log/squid/store.log
cache_dir 详细说明
cache_dir 存储类型 缓存目录 大小(MB) 一级目录数 二级目录数
cache_dir ufs /var/spool/squid 4096 16 256
  • ufs:标准缓存存储类型
  • 4096:缓存最大 4GB
  • 16:一级子目录数量
  • 256:每个一级目录下二级子目录数量

(六)访问控制列表 ACL(重点)

1. ACL 作用

Squid 默认拒绝所有请求,必须通过 ACL 定义规则并放行。可控制:IP、域名、端口、URL、时间、连接数等。

2. ACL 语法
acl 列表名 类型 [-i忽略大小写] 值1 值2...
3. 常用 ACL 类型
类型 说明
src 源 IP(客户端 IP)
dst 目标 IP
dstdomain 目标域名
srcdomain 源域名
port 端口
url_regex URL 正则匹配
urlpath_regex URL 路径正则
time 访问时间
maxconn 最大并发连接
4. 访问规则(http_access)
http_access allow/deny 列表名
  • 规则按顺序匹配,匹配到即停止
  • 无匹配时,取最后一条规则的反向
  • 建议最后一条写 http_access deny all 保证安全
5. 学院场景配置示例

需求:

  • 禁止 172.16.43.252 使用代理
  • 禁止访问淘宝
  • 允许其他所有主机上网

配置:

acl badip src 172.16.43.252
acl baddomain dstdomain -i www.taobao.com

http_access deny badip
http_access deny baddomain
http_access allow all

(七)配置检查与重载

# 检查配置语法(关键排错)
squid -k parse

# 重新加载配置
squid -k reconfigure

(八)客户端配置

1. Linux(Firefox)

编辑 → 首选项 → 常规 → 网络代理 → 设置

  • 手动代理配置
  • HTTP 代理:172.16.43.254 端口:3128
  • 勾选「为所有协议使用相同代理」
2. Windows(IE/Edge)

Internet 选项 → 连接 → 局域网设置

  • 勾选「为 LAN 使用代理服务器」
  • 地址:172.16.43.254 端口:3128



六、反思与进阶:部署透明代理

1. 透明代理特点

  • 客户端无需手动配置代理
  • 流量通过网关 / 防火墙自动重定向到 Squid
  • 用户完全无感知

2. 实现条件

  1. Squid 开启透明模式
  2. 防火墙做端口转发
  3. 开启内核 IP 转发

3. 实施步骤

(1)客户端配置
  • IP:10.0.0.3
  • 网关:Squid 内网 IP 10.0.0.2
(2)Squid 服务器配置

配置双网卡(内外网)

开启内核转发

vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p

修改 Squid 配置支持透明

http_port 10.0.0.2:3128 transparent

初始化、检查、启动

squid -k parse
squid -z
systemctl start squid
systemctl enable squid
(3)防火墙配置(firewalld)
# 启动防火墙
systemctl start firewalld

# 网卡划分区域
firewall-cmd --change-interface=ens33 --zone=external --permanent
firewall-cmd --change-interface=ens38 --zone=internal --permanent

# 端口转发:80 → 3128;443 → 3128
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=3128 --permanent
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=3128 --permanent

# 重载
firewall-cmd --reload
(4)测试

客户端直接访问网页,无需配置代理即可上网。

traceroute www.baidu.com

可看到流量先经过代理网关 10.0.0.2。




七、项目小结

  1. 代理服务器用于加速、安全、隐藏 IP、访问控制
  2. Squid 是 Linux 下主流代理软件,支持正向 / 反向 / 透明代理
  3. 核心配置文件:/etc/squid/squid.conf
  4. 必须掌握:安装 → 初始化 → ACL 配置 → 客户端配置 → 透明代理
  5. 排错命令:squid -k parse
  6. 日志查看:/var/log/squid/access.log



八、扩展知识(补充学习)

1. 正向代理 vs 反向代理

  • 正向代理:代理客户端,访问外网,隐藏客户端
  • 反向代理:代理服务器,外网访问内网,隐藏服务器,负载均衡

2. Squid 高级用法

  • 基于时间段控制上网
  • 限制下载速度 / 流量
  • 禁止下载特定后缀(exe/zip/mp4)
  • 多端口代理、多网段管控
  • 结合 LDAP / 用户密码认证

3. 透明代理与普通代理对比

类型 客户端配置 适用场景
普通代理 必须手动设置 实验室、机房可控环境
透明代理 无需设置 校园网、企业全网覆盖

4. 常见问题排查

  • 无法上网:检查 http_access 规则、防火墙、IP 转发
  • 速度慢:调大 cache_mem、cache_dir,清理缓存
  • 配置报错:squid -k parse 检查语法
  • 端口未监听:lsof -i:3128systemctl status squid

5. 同类代理软件

  • Nginx:反向代理、负载均衡
  • HAProxy:四层 / 七层负载均衡
  • Varnish:专注 Web 缓存
  • Tinyproxy:轻量级简易代理
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐