目录
[1. 背景](#1. 背景)
[2. 解决方案](#2. 解决方案)
[(三)Squid 基础介绍](#(三)Squid 基础介绍)
[Squid 代理类型](#Squid 代理类型)
[Squid 核心文件与端口](#Squid 核心文件与端口)
[(二)安装 Squid](#(二)安装 Squid)
[(三)Squid 服务管理(RHEL 7/8)](#(三)Squid 服务管理(RHEL 7/8))
[(五)Squid 主配置文件详解(/etc/squid/squid.conf)](#(五)Squid 主配置文件详解(/etc/squid/squid.conf))
[1. 核心配置项](#1. 核心配置项)
[cache_dir 详细说明](#cache_dir 详细说明)
[(六)访问控制列表 ACL(重点)](#(六)访问控制列表 ACL(重点))
[1. ACL 作用](#1. ACL 作用)
[2. ACL 语法](#2. ACL 语法)
[3. 常用 ACL 类型](#3. 常用 ACL 类型)
[4. 访问规则(http_access)](#4. 访问规则(http_access))
[5. 学院场景配置示例](#5. 学院场景配置示例)
[1. Linux(Firefox)](#1. Linux(Firefox))
[2. Windows(IE/Edge)](#2. Windows(IE/Edge))
[1. 透明代理特点](#1. 透明代理特点)
[2. 实现条件](#2. 实现条件)
[3. 实施步骤](#3. 实施步骤)
[(2)Squid 服务器配置](#(2)Squid 服务器配置)
[1. 正向代理 vs 反向代理](#1. 正向代理 vs 反向代理)
[2. Squid 高级用法](#2. Squid 高级用法)
[3. 透明代理与普通代理对比](#3. 透明代理与普通代理对比)
[4. 常见问题排查](#4. 常见问题排查)
[5. 同类代理软件](#5. 同类代理软件)
一、项目整体框架
本项目围绕学院内网上网慢、安全风险高 的问题,使用 Squid 搭建代理服务器,实现加速访问、隐藏内网 IP、访问控制、安全防护目标。
项目流程:项目引入 → 需求分析 → 知识准备 → 项目实施 → 反思与进阶 → 小结
二、项目引入
1. 背景
学院网络服务增多 → 客户端数量上升 → 内网访问速度变慢 、网络攻击风险增加。
2. 解决方案
部署代理服务器,实现:
- 提升网络访问速度
- 隐藏内网真实 IP 地址
- 降低网络攻击风险
- 保障内网安全
三、需求分析
- 理解代理服务工作原理
- 掌握代理服务器类型与区别
- 熟练使用 Squid 部署各类代理
- 按学院实际需求完成可用、安全的代理服务部署
四、知识准备
(一)代理服务器概述
全称 :Proxy Server核心作用 :代理网络用户获取网络资源,让多台无公网 IP 的客户端高速、安全访问互联网。
主要功能
- 突破访问限制教育网 / 内网可通过代理访问外部受限站点。
- 提升访问速度 代理拥有硬盘缓冲区(Cache),相同资源直接从缓存返回,无需重复请求外网。
- 隐藏真实 IP外网只看到代理服务器 IP,保护内网主机安全。
- 访问控制与安全过滤禁止访问危险 / 违规网站,管控流量。
(二)代理服务器工作原理
- 客户端浏览器配置代理 → 请求发给代理服务器
- 代理检查本地缓存(Cache)
- 有缓存 → 直接返回给客户端
- 无缓存 → 代理向外网服务器请求资源
- 外网服务器返回数据 → 代理保存到缓存并转发给客户端
- 处理完成后进程释放资源
用户无感,以为直接访问目标服务器。大量请求命中缓存 → 整体速度显著提升。
(三)Squid 基础介绍
- 定义:高性能代理缓存服务器,支持 HTTP/HTTPS/FTP/gopher/SSL/WAIS
- 不支持:POP3、NNTP、RealAudio 等
- 架构:单进程、非模块化、I/O 驱动处理所有客户端请求
- 跨平台:Linux、FreeBSD、Solaris、AIX 等
- 核心优势 :强大的 ACL(访问控制列表) 与 ARL(访问权限列表),实现精细访问管控
Squid 代理类型
- 正向代理
- 普通代理:客户端必须手动配置代理地址与端口
- 透明代理:客户端无需配置,流量自动被代理接管
- 反向代理 用于外网访问内网服务器,实现负载均衡、缓存加速、安全防护
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
五、项目实施(完整步骤)
(一)环境准备
- 配置 Squid 服务器 IP:172.16.43.254
- 关闭防火墙 / 设为 permissive 模式
- 配置 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. 实现条件
- Squid 开启透明模式
- 防火墙做端口转发
- 开启内核 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。
七、项目小结
- 代理服务器用于加速、安全、隐藏 IP、访问控制
- Squid 是 Linux 下主流代理软件,支持正向 / 反向 / 透明代理
- 核心配置文件:/etc/squid/squid.conf
- 必须掌握:安装 → 初始化 → ACL 配置 → 客户端配置 → 透明代理
- 排错命令:
squid -k parse - 日志查看:/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:3128、systemctl status squid
5. 同类代理软件
- Nginx:反向代理、负载均衡
- HAProxy:四层 / 七层负载均衡
- Varnish:专注 Web 缓存
- Tinyproxy:轻量级简易代理