目录
目录X
联系信息 首页 /正文内容

Squid 部署

AI摘要(BLUF)
一、安装与基础服务管理1. 安装 Squid根据系统类型执行安装命令:RHEL / CentOS / Rocky / Anolis / openEuler:sudodnfinstall-ysquid#或旧版本使用yuminstall-ysquidDebian / Ubuntu:sudoaptupdate&&sudoaptinstall-ysquid2. 启动并设置开机自启sudosystemctlenable--nowsquid验证状态:执行 systemctl status squid,显示 active (running) 即表示正常运行。3. 防火墙放行(默认端口 312……

一、安装与基础服务管理


1. 安装 Squid


根据系统类型执行安装命令:


  • RHEL / CentOS / Rocky / Anolis / openEuler:


sudo dnf install -y squid
# 或旧版本使用 yum install -y squid


  • Debian / Ubuntu:


sudo apt update && sudo apt install -y squid


2. 启动并设置开机自启


sudo systemctl enable --now squid


  • 验证状态:执行 systemctl status squid,显示 active (running) 即表示正常运行。


3. 防火墙放行(默认端口 3128)


  • firewalld:


sudo firewall-cmd --permanent --add-port=3128/tcp
sudo firewall-cmd --reload


  • ufw:


sudo ufw allow 3128/tcp




二、配置黑白名单


Squid 的主配置文件路径为 /etc/squid/squid.conf。 配置核心原则:规则自上而下匹配,一旦命中立即执行,后面的规则不再生效。


场景 1:控制「谁能用代理」(客户端来源 IP 限制)


适合用于内网代理或仅对固定公网 IP 开放。1. 编辑配置文件:


sudo vim /etc/squid/squid.conf


2. 找到默认的 http_access 区域,添加自定义 ACL:


# -----------------------------
# 客户端 IP 控制
# -----------------------------
# 定义允许使用代理的 IP 或网段(白名单)
acl allowed_clients src 192.168.1.0/24
acl allowed_clients src 10.0.0.50
# 定义明确禁止的恶意 IP(黑名单)
acl blocked_clients src 192.168.1.200
# 规则应用(注意顺序:先拒绝黑名单,再允许白名单,最后拒绝全部)
http_access deny blocked_clients
http_access allow allowed_clients
http_access deny all




场景 2:控制「能访问哪些网站」(目标域名限制)


适合内网机器出网管控,防止访问非工作/不安全站点。支持直接在配置中列出,也支持读取外部名单文件。1. 创建外部黑白名单文件:


# 创建黑名单文件(禁止访问的域名)
sudo tee /etc/squid/blacklist.txt << 'EOF'
.badsite.com
.gambling.org
EOF
# 创建白名单文件(只允许访问的域名,前缀加 . 可匹配所有二级子域名)
sudo tee /etc/squid/whitelist.txt << 'EOF'
.github.com
.microsoft.com
api.example.com
EOF


2. 在 /etc/squid/squid.conf 中引入文件并配置规则:


  • 模式 A:黑名单模式(除了黑名单里的网站,其他都能访问)


acl bad_sites dstdomain "/etc/squid/blacklist.txt"
# 拒绝访问黑名单目标
http_access deny bad_sites
# 允许合法客户端访问其他任意网站
http_access allow allowed_clients
http_access deny all


  • 模式 B:白名单模式(极严格:只允许访问白名单内的网站)


acl good_sites dstdomain "/etc/squid/whitelist.txt"
# 允许访问白名单目标(且客户端在允许列表内)
http_access allow allowed_clients good_sites
# 其余全部拒绝
http_access deny all




三、校验与生效


每次修改完配置文件后,请执行以下命令:1. 检查语法:


sudo squid -k parse


  • 验证结果:若没有报错输出,说明配置语法合法。2. 热重载配置:


sudo squid -k reconfigure
# 或
sudo systemctl reload squid




四、客户端测试与日志排查


1. 客户端测试连通性


在测试机(例如 Linux 或 macOS 终端)上使用 curl 指定代理验证:


# 测试白名单域名(预期返回 HTTP 200/301 等正常响应)
curl -x http://<Squid服务器IP>:3128 -I https://github.com
# 测试被阻断的请求(预期返回 403 Forbidden)
curl -x http://<Squid服务器IP>:3128 -I http://badsite.com


2. 服务端排查日志


若遇到连接拒绝或超时,实时查看访问日志定位命中的规则:


sudo tail -f /var/log/squid/access.log


  • 日志中若显示 TCP_DENIED/403,说明被 ACL 规则拦截;显示 TCP_TUNNEL/200TCP_MISS/200 表示代理成功放行。


【打印正文】 发布时间:2026-09-10 09:19:11 浏览次数: 作者: 来源:本站原创