Squid 代理服务器部署与优化指南

冯马佑 📋在职小初生

一、核心网络配置

配置文件位置/etc/squid/squid.conf 文件起始部分

1
2
3
4
5
http_port 3128
https_port 2443 cert=/etc/squid/ssl/cert.pem key=/etc/squid/ssl/key.pem
visible_hostname proxy-server01
via off
forwarded_for delete

作用与原理

  • http_port:监听标准代理端口(明文传输)
  • https_port:启用 HTTPS 代理并指定 TLS 证书路径(加密传输)
  • visible_hostname:定义代理服务器的对外标识(用于日志和错误页面)
  • via & forwarded_for:隐藏客户端真实 IP(安全防护)

二、访问控制列表(ACL)

位置:主配置文件中部,acl 规则区

1
2
3
4
acl corporate_net src 192.168.1.0/24
acl work_hours time MTWHF 09:00-18:00
acl safe_ports port 80 443 21
acl blocked_sites dstdomain "/etc/squid/blocked.domains"

技术细节

  • src:基于源 IP 过滤(CIDR 格式)
  • time:时间范围控制(MTWHF 表示周一到周五)
  • dstdomain:加载外部文件中的域名黑名单
  • 文件示例 (/etc/squid/blocked.domains):
    1
    2
    .youtube.com
    .socialmedia.*

三、认证模块配置

位置:紧接基础网络配置之后

1
2
3
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm "Corporate Proxy Auth"
acl auth_users proxy_auth REQUIRED

操作说明

  1. 安装认证工具:
    1
    2
    3
    4
    # Debian
    sudo apt install apache2-utils
    # RHEL
    sudo yum install httpd-tools
  2. 创建密码文件:
    1
    2
    sudo htpasswd -c /etc/squid/passwd user1
    sudo chmod 600 /etc/squid/passwd

四、访问规则链

位置:ACL 定义之后

1
2
3
4
5
http_access allow corporate_net work_hours auth_users
http_access deny blocked_sites
http_access deny !safe_ports
http_access allow localhost
http_access deny all

优先级逻辑

  1. 允许企业网段在工时通过认证访问
  2. 阻止黑名单域名
  3. 禁止非安全端口访问
  4. 最后拒绝所有其他请求

五、缓存优化配置

位置:配置文件中部

1
2
3
4
5
cache_mem 4096 MB
maximum_object_size_in_memory 256 KB
cache_dir aufs /data/cache 50000 16 256
cache_replacement_policy heap LFUDA
refresh_pattern . 1440 20% 10080

参数解析

  • aufs:使用异步 I/O 存储格式(高并发场景)
  • 50000:缓存目录总大小(单位 MB)
  • 16/256:一级/二级子目录数量(提升文件检索效率)
  • LFUDA:缓存替换算法(综合访问频率和新鲜度)

六、集群负载均衡

位置:配置文件尾部

1
2
3
cache_peer 192.168.2.101 parent 3128 0 proxy-only round-robin
cache_peer 192.168.2.102 parent 3128 0 proxy-only round-robin
cache_peer_access 192.168.2.101 allow all

架构说明

  • parent:定义上游代理节点
  • round-robin:请求轮询分发
  • proxy-only:仅转发请求不缓存(适用于边缘节点)

七、日志与监控

位置:配置文件尾部

1
2
3
4
access_log daemon:/var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
snmp_port 3401
snmp_access allow monitor_ips

监控操作

1
2
3
4
5
6
# 实时流量分析
sudo tail -f /var/log/squid/access.log | awk '{print $3,$7,$9}'

# SNMP 监控设置
sudo squid -k snmp -D
snmpwalk -v 2c -c public localhost:3401 .1.3.6.1.4.1.3495.1

八、安全加固措施

1. 防火墙规则

1
2
# 只允许内网访问代理端口
sudo ufw allow from 192.168.0.0/16 to any port 3128,2443

2. SELinux 策略

1
2
sudo semanage port -a -t http_cache_port_t -p tcp 2443
sudo setsebool -P squid_connect_any 1

3. 证书自动续期

1
2
# 添加 crontab 任务
0 3 1 * * /usr/bin/certbot renew --quiet --deploy-hook "systemctl reload squid"

九、故障排查速查表

现象 诊断命令 解决方案
客户端无法连接 sudo squid -k parse 检查配置文件语法错误
认证失败 tail -n 50 /var/log/squid/cache.log 验证密码文件权限和格式
高内存占用 squidclient mgr:mem 调整 cache_mem 参数
HTTPS 代理证书错误 openssl s_client -connect :2443 检查证书链完整性

十、配置文件结构示意图

graph TD
    A[网络参数] --> B[认证模块]
    B --> C[ACL定义]
    C --> D[访问规则]
    D --> E[缓存策略]
    E --> F[集群配置]
    F --> G[日志管理]

通过以上结构化配置,可实现:

  • 企业级安全:TLS 加密 + IP 白名单 + 时段控制
  • 高性能缓存:智能替换算法 + 内存分级管理
  • 高可用架构:多节点负载均衡 + 自动故障转移
  • 易维护性:标准化配置 + 自动化监控
  • 标题: Squid 代理服务器部署与优化指南
  • 作者: 冯马佑
  • 创建于 : 2025-03-23 17:26:12
  • 更新于 : 2025-03-23 23:09:04
  • 链接: https://blog.fengmayou.top/2025/03/23/Squid-Prox-Serve-Deploymen-Optimizatio-Guid/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论