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

相关推荐
林润庚2 小时前
win 安装openclaw (docker镜像模式),解决18789访问失败问题
docker·openclaw·龙虾
Cyber4K2 小时前
【Kubernetes专项】K8s 包工具- Helm 入门到企业实战
云原生·容器·kubernetes
数据知道2 小时前
claw-code 源码详细分析:Remote / SSH / Teleport / Deep Link——运行时分支爆炸怎样用「模拟模式」先收束状态机?
运维·ai·ssh·claude code
LSL666_2 小时前
Linux命令
linux·运维·服务器
Bert.Cai2 小时前
Linux pwd命令详解
linux·运维
坚持就完事了3 小时前
Linux的which命令
linux·运维·服务器
和小潘一起学AI3 小时前
centOS安装neo4j
linux·运维·服务器
HealthScience3 小时前
H20服务器多卡运行有错误gpu_partition ,tmux错误
linux·运维·服务器
RisunJan3 小时前
Linux命令-netstat(查看Linux中网络系统状态信息)
linux·运维·服务器