基于Docker部署Squid正向代理文档

基于Docker部署Squid正向代理文档

一、文档概述

本文档详细介绍基于Docker部署Squid正向代理的完整流程,适用于内网服务器/设备无法直接访问目标网络(如公网)的场景,通过部署正向代理,实现内网设备间接访问外部网络,同时保留代理透传、隐藏真实IP等特性。部署过程中所有配置代码将原封不动保留,确保部署可直接复用。

二、部署环境要求

  • 服务器已安装Docker及Docker Compose(确保可正常执行docker、docker-compose命令);

  • 服务器内网IP为10.0.0.9(需与配置文件中IP一致,若修改IP需同步调整相关配置);

  • 服务器开放3128端口(用于代理服务监听,若修改端口需同步调整配置);

  • 内网客户端可正常访问部署代理的服务器(10.0.0.9)。

三、服务端部署步骤

3.1 编写docker-compose.yml配置文件

在服务器任意目录(建议新建单独目录,如/squid-proxy)下,创建docker-compose.yml文件,内容如下(原代码原封不动保留):

yaml 复制代码
cat docker-compose.yml

version: '3'

services:
  squid:
    image: sameersbn/squid:3.5.27-2
    container_name: squid
    ports:
      - "3128:3128"
    volumes:
      - ./squid.conf:/etc/squid/squid.conf
      - ./cache:/var/spool/squid
    restart: always
    network_mode: bridge

3.2 编写squid.conf配置文件

在同一目录下,创建squid.conf配置文件,用于配置代理规则,内容如下(原代码原封不动保留):

conf 复制代码
cat squid.conf

http_port 3128

#acl localnet src 10.0.0.0/8
#acl localnet src 172.16.0.0/12
#acl localnet src 192.168.0.0/16
#
#http_access allow localnet
#http_access allow localhost
#http_access deny all
#
http_access allow all # 允许所有
cache deny all   # 纯透传,不缓存
forwarded_for off   #  隐藏真实 IP,更安全

3.3 启动代理服务

进入配置文件所在目录,执行以下命令启动Squid代理容器,启动后将自动后台运行,且服务器重启后会自动重启容器:

bash 复制代码
docker-compose up -d

启动后可通过以下命令查看容器运行状态,确认代理服务正常启动:

bash 复制代码
docker ps | grep squid

若输出包含"squid"且状态为"Up",则表示服务启动成功。

四、客户端使用方法

内网客户端需要使用该正向代理访问外部网络时,需先执行以下命令配置环境变量(原命令原封不动保留,可直接复制执行,支持公网地址访问):

bash 复制代码
# 客户端使用该正向代理前需要执行以下两句(可以使公网地址)
export ALL_PROXY=http://10.0.0.9:3128
export ALL_PROXY=https://10.0.0.9:3128

配置完成后,客户端通过命令行(如curl、wget)或应用程序访问外部网络时,将自动通过10.0.0.9:3128代理进行访问。

说明:该配置为临时生效,关闭终端后失效;若需永久生效,可将上述两句命令添加至客户端的~/.bashrc或~/.zshrc文件中,执行source ~/.bashrc(或source ~/.zshrc)生效。

五、配置说明

  • docker-compose.yml配置说明:

    • image:使用sameersbn/squid:3.5.27-2镜像,版本稳定,适配当前配置;

    • container_name:容器名称设为squid,便于管理和查看;

    • ports:将容器3128端口映射到服务器3128端口,外部通过服务器IP:3128访问代理;

    • volumes:挂载本地配置文件squid.conf到容器对应目录,挂载缓存目录cache,便于修改配置和管理缓存;

    • restart: always:容器异常退出或服务器重启后,自动重启容器;

    • network_mode: bridge:使用桥接网络,确保内网客户端可正常访问。

  • squid.conf配置说明:

    • http_port 3128:代理服务监听3128端口;

    • 注释的acl和http_access规则:默认注释了仅允许内网网段访问的规则,便于灵活调整;

    • http_access allow all:允许所有客户端访问该代理(适用于内网环境,若需限制访问,可启用注释的acl规则并修改此配置);

    • cache deny all:关闭缓存功能,实现纯透传,避免缓存占用服务器空间;

    • forwarded_for off:隐藏客户端真实IP,提升访问安全性,避免真实IP泄露。

六、常见问题及处理

若客户端配置代理后访问网络出现该报错,可能原因及处理方法:

  • 代理服务未正常启动:执行docker ps | grep squid查看容器状态,若未启动,执行docker-compose up -d重启服务;

  • 客户端无法访问服务器3128端口:检查服务器防火墙是否开放3128端口,内网客户端是否能ping通10.0.0.9;

  • 配置文件错误:确认squid.conf中http_port、http_access等配置未修改错误,若修改过,重启容器生效(docker-compose restart)。

6.2 代理无法正常访问外部网络

  • 检查部署代理的服务器本身是否能访问外部网络(直接ping公网地址,如ping www.baidu.com);

  • 确认客户端环境变量配置正确,未输错IP(10.0.0.9)和端口(3128);

  • 检查squid.conf中http_access allow all是否启用,若注释则无法正常访问。

七、注意事项

  • 本代理为正向代理,仅适用于内网客户端通过代理访问外部网络,不可作为反向代理使用;

  • http_access allow all配置允许所有客户端访问,若内网环境需要限制访问范围,可启用注释的acl本地网段规则,替换当前http_access allow all配置;

  • 缓存目录cache会占用服务器磁盘空间,因配置了cache deny all,该目录不会产生缓存文件,可定期清理;

  • 若需修改代理端口,需同步修改docker-compose.yml中的ports映射和squid.conf中的http_port,修改后重启容器生效;

  • 部署完成后,建议测试客户端代理访问(如curl -I https://www.baidu.com),确认代理生效。

相关推荐
倔强的石头10615 小时前
【Linux指南】基础IO系列(八):实战衔接 —— 给微型 Shell 添加完整重定向功能
linux·运维·服务器
观北海15 小时前
AiScan-N:AI全自动化渗透测试工具的深度技术解析
运维·自动化
Ujimatsu16 小时前
虚拟机安装Ubuntu 26.04.x及其常用软件(2026.4)
linux·运维·ubuntu
Dillon Dong17 小时前
【系列主题】Next.js 16 + Turbopack 的暗礁:深入剖析 Tailwind v4 的 CSS 模块解析陷阱
javascript·css·容器·turbopack
jc062017 小时前
6.1云原生之Docker
c++·docker·云原生
Agent产品评测局18 小时前
制造业生产调度自动化落地,完整步骤与避坑指南:2026企业级智能体选型与实战全景
运维·人工智能·ai·chatgpt·自动化
狂奔的sherry18 小时前
一次由 mount 引发的 Linux 文件系统“错觉”
linux·运维·服务器
志栋智能19 小时前
超自动化巡检:让合规与审计变得轻松简单
运维·网络·人工智能·自动化
小黑要努力19 小时前
智能音箱遇到的问题(一)
linux·运维·git
好度19 小时前
自动化教程-封装浏览器驱动
运维·自动化