基于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),确认代理生效。

相关推荐
不会就选b22 分钟前
linux之进程管理(二)--替换
linux·运维·服务器
倔强的石头10628 分钟前
【Linux指南】动静态库系列(二):从源码复用到目标文件复用:为什么需要把 .o 打包成库
linux·运维·服务器
步步精BBJconn37 分钟前
从GPU服务器到数据中心:AI服务器高压连接器的应用与发展趋势
大数据·运维·服务器·人工智能·科技·物联网
java_logo2 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
码农学院3 小时前
基于运维监控体系的网络品牌推广方案:从架构设计到技术实现
运维·网络
大耳朵-小飞象12 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
极客侃科技12 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
生活爱好者!15 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
java_logo16 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程