导读:本期聚焦于小伙伴创作的《如何在Linux上设置代理服务器如Squid实现网络访问控制》,敬请观看详情。把一台Linux机器变成局域网出口网关,最常踩的坑就是直接装完Squid就放行全部流量,结果既没做身份认证也没限带宽。Squid本身通过监听3128端口接收客户端请求,再以后端出口IP访问外网,核心能力其实落在访问控制列表也就是ACL上。本文从apt安装、基础正向代理配置、ACL按IP与域名过滤、以及客户端浏览器填写代理地址四个环节,说明怎样在Ubuntu或CentOS上把Squid跑起来并管住流量。配置里cache_dir与http_access的顺序直接决定命中率和安全边界,改完记得用squid -k reconfigure热加载而非重启进程。

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

如何在Linux上设置代理服务器如Squid实现网络访问控制

一、安装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

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。