在Linux系统上部署Squid代理服务器,能够帮助局域网内的多台设备统一通过一台机器访问互联网,同时实现访问策略控制、流量缓存与行为审计。Squid是一款成熟的开源正向代理软件,支持HTTP、HTTPS以及FTP协议,在Ubuntu、CentOS等常见发行版中均可通过包管理器直接安装。

一、安装Squid与基础环境准备
在基于Debian或Ubuntu的系统中,可以使用apt命令快速安装Squid。安装完成后,系统会自动创建squid用户与对应的服务单元,默认配置文件位于/etc/squid/squid.conf。我们需要先确认服务器具备稳定的外网连接,并且防火墙放行了Squid默认监听的3128端口。
如果是CentOS或RHEL系列,则使用yum或dnf进行安装。安装后建议通过systemctl enable squid设置开机自启,并使用systemctl start squid启动服务。可以用ss -tlnp命令检查3128端口是否处于监听状态,确保代理进程正常工作。
# Ubuntu / Debian 安装 sudo apt update sudo apt install squid -y # CentOS / RHEL 安装 sudo yum install squid -y sudo systemctl enable squid sudo systemctl start squid # 查看监听端口 ss -tlnp | grep 3128
二、配置正向代理与监听地址
Squid的默认配置已经提供了一个可用的正向代理框架,但出于安全考虑,默认只允许本机回环地址访问。我们需要修改http_port与http_access指令,将代理暴露给局域网内的特定网段。例如将http_port 3128改为监听所有网卡,或通过acl定义可信子网。
在配置文件中,acl localnet src 192.168.1.0/24这类语句用于声明内部网络范围,随后用http_access allow localnet放开权限。注意http_access规则自上而下匹配,应将拒绝全部流量的http_access deny all放在最后,避免误拦合法请求。修改配置后无需重启,执行squid -k reconfigure即可热加载。
# 在 /etc/squid/squid.conf 中调整 acl localnet src 192.168.1.0/24 http_access allow localnet http_access deny all # 热加载配置 sudo squid -k reconfigure
三、使用ACL实现访问控制在Squid里
ACL(访问控制列表)是Squid最核心的管控手段。除了按源IP限制,还可以基于目标域名、URL关键字、时间段来过滤。比如禁止访问社交网站,可以定义acl block_sites dstdomain .ippipp.com,然后用http_access deny block_sites拒绝命中该列表的请求。
如果希望按时间控制,例如只允许工作时间上网,可使用time ACL配合工作日与时段。Squid的ACL类型非常丰富,包括src、dst、dstdomain、url_regex、time等。合理配置ACL不仅能提升安全性,也能节省出口带宽。下方示例展示了域名黑名单与工作时间限制的写法。
acl block_sites dstdomain .ipipp.com http_access deny block_sites acl work_time time MTWHF 09:00-18:00 http_access allow localnet work_time http_access deny localnet
四、客户端配置与代理验证
Linux或Windows上的浏览器都可以在网络设置中填写Squid服务器的IP与3128端口作为HTTP代理。命令行工具如curl也可以通过-x参数指定代理进行连通性测试。若出现无法访问的情况,应优先查看/var/log/squid/access.log中的拒绝原因码。
对于需要身份认证的场合,Squid支持basic_ncsa_auth等认证方式,可结合htpasswd生成密码文件。但在内网受控环境,通常仅依靠IP白名单即可。无论采用哪种方式,都应定期审查日志,确认没有异常外联,保障代理服务器不被滥用。
# 使用 curl 测试代理 curl -x http://192.168.1.10:3128 http://ipipp.com # 查看访问日志 tail -f /var/log/squid/access.log
五、缓存与性能调优要点
Squid默认开启磁盘缓存,cache_dir指令定义了缓存路径与容量。适当增大缓存上限可以提升重复资源的命中率,但也要避免占满系统磁盘。通过cache_mem设置内存缓存大小,能让热点对象响应更快。
在并发较高的场景,可以调整maximum_object_size与workers参数。Squid的调优本质是在内存、磁盘与网络之间找平衡。建议先在测试环境用压力工具验证,再上线到生产代理网关,以免错误配置引发转发延迟。
cache_dir ufs /var/spool/squid 1000 16 256 cache_mem 256 MB maximum_object_size 64 MB
SquidLinux_proxyACL修改时间:2026-08-01 05:45:25