私有代理服务器工作原理与搭建流程详解

Author Avatar
邬程峰
发表:2026-04-27 21:32:38
修改:2026-04-27 21:32:38

1 私有代理服务器工作原理

1.1 核心概念

代理服务器是一个中间实体,位于客户端(你的电脑/手机)与目标服务器(如 Google、YouTube)之间。它的基本作用是转发网络请求

为什么需要代理?

  • 绕过网络限制:某些网络(如公司、学校、国家防火墙)会过滤特定IP或域名(大部分人的需求)。

  • 隐藏真实IP:目标服务器看到的是代理服务器的IP,而不是你的IP(安全需求)。

  • 访问内网资源:将内网服务安全暴露到公网(反向代理场景),在分布式系统中,如 Spring Cloud Gateway、 niginx 都是典型的反向代理中间件。

本方案聚焦于正向代理,即代理帮助你访问外部网络资源。

1.2 整体架构

  • 客户端:你的设备上运行的代理客户端软件(如 Shadowrocket、v2rayN)。

  • 代理服务端:运行在境外 VPS 上的服务程序(如 Xray、Sing-box)。

  • 传输协议:客户端与服务端之间使用的通信规范(如 Shadowsocks、VMess)。

1.3 关键角色详解

1.3.1 VPS(虚拟专用服务器)

  • 物理位置:位于国外数据中心(如日本、美国)。

  • 操作系统:Linux(Ubuntu/Debian),负责运行代理软件。

  • 公网IP:目标服务器看到的来源IP就是这个地址。

  • 防火墙:需开放代理服务使用的端口(如 12345)。

1.3.2 代理协议

常见协议及其特点:

协议

特点

适用场景

Shadowsocks

轻量、简单、加密仅传输数据

日常网页浏览、视频

VMess

更复杂的混淆、动态端口

对抗深度包检测(DPI)

Trojan

伪装成HTTPS流量

高墙环境下更稳定

WireGuard

底层VPN,高效安全

需要全局VPN或企业网络

本文以 Shadowsocks 为例解释原理,它足够简单且广泛应用。

1.3.3 客户端与服务端交互方式

  • 服务端:监听某个端口,等待客户端连接。收到加密数据后,用预设密码解密,然后转发到真正的目标网站。

  • 客户端:在本地开启一个代理端口(如 1080)。系统或浏览器将流量发给该端口,客户端加密后发送到服务端。

1.4 完整数据流转过程

(1.4 这部分枯燥的一批,不看也没事,其实有事)

假设你想访问 https://www.google.com

步骤 1:客户端请求产生

  • 浏览器设置代理为 127.0.0.1:1080(Socks5 代理)。

  • 浏览器向代理客户端发送请求:“我要连接 www.google.com:443”。

步骤 2:客户端封装数据

代理客户端执行:

  1. 读取请求的目标地址和端口。

  2. 将目标信息与请求数据(HTTPS 的 TLS 握手数据)一起打包。

  3. 使用 Shadowsocks 协议和预设密码(如 aes-256-gcm)加密整个数据包。

  4. 将加密后的数据发送到 VPS 的指定端口(如 你的VPS_IP:12345)。

步骤 3:服务端接收与解密

VPS 上的代理服务端:

  1. 监听 0.0.0.0:12345,收到加密数据。

  2. 使用相同的密码进行解密,还原出原始请求:“连接 www.google.com:443”。

  3. 服务端自己作为新的客户端,向 www.google.com:443 发起一个干净的 TCP 连接。

步骤 4:服务端转发请求

  • 将解密后的数据(TLS Client Hello)通过新建的连接发送给 Google 服务器。

  • Google 服务器认为请求来自 VPS 的公网 IP,直接返回响应数据(TLS 证书、网页内容等)。

步骤 5:响应原路返回

  • 服务端收到 Google 的响应数据。

  • 用相同的密码加密响应数据。

  • 发送回你的电脑上的代理客户端。

  • 客户端解密后,将明文数据返回给浏览器(浏览器认为就是 Google 直接回复的)。

整个过程中,你的真实IP和原始请求内容都被加密隐藏,只有你和你的VPS知道通信内容。

1.5 关键技术细节

1.5.1 加密机制

Shadowsocks 使用 AEAD 加密(如 aes-256-gcmchacha20-ietf-poly1305)。这类加密比早期流加密多了完整性验证——防止第三方篡改数据。

  • 密钥:由你设置的密码通过密钥派生函数生成。

  • 随机数:每次连接生成,确保相同明文产生不同密文,对抗流量分析。

  • 标签:用于验证数据未被修改。

1.5.2 多路复用

一个代理连接可以承载多个传输流:

  • 浏览器同时加载网页(HTML、CSS、图片、JS)。

  • 代理客户端将这些请求的多路复用(如使用 muxsmux)后,通过一条 TCP 连接发往服务端。

  • 服务端解复用,分别请求各个资源,再打包返回。

好处:减少TCP握手延迟和防火墙对高频连接的限制。

1.5.3 流量混淆(可选)

某些网络(如中国移动宽带)会对特征明显的 Shadowsocks 流量进行限速或阻断。此时可使用 TLS 混淆WebSocket 隧道

  • WebSocket 伪装:代理服务端伪装成一个 HTTPS 网站(如 https://example.com/api)。

  • 客户端发送的加密数据被包装成 WebSocket 帧,看起来就像正常的网页 API 请求。

典型实现:VMess + WebSocket + TLS(即 V2Ray 的常用配置)。

1.6 身份与安全模型

1.6.1 信任假设

  • 你信任你的VPS提供商:VPS可以看到你的所有明文数据(因为它解密后再转发)。选择可靠提供商,或者使用端到端加密(如HTTPS)来减少风险。

  • 你信任代理协议的安全性:Shadowsocks 的 AEAD 加密在正确使用时是安全的,但无法防御主动探测(如2020年某ISP的大规模端口扫描事件)。

1.6.2 常见攻击与防护

攻击类型

原理

防护措施

重放攻击

攻击者记录你发送的加密包,稍后重发

AEAD加密中的序号+时间戳防重放

被动流量分析

观察包大小、时间间隔推断你在看什么

增加填充(padding),使用随机延迟

主动探测

伪造服务器响应,测试端口是否代理

配置防火墙限制IP、使用TLS握手验证

DPI(深度包检测)

识别代理协议特征签名

使用WebSocket+TLS完全伪装成HTTPS

1.7 部署流程中的原理映射

现在回头看你搭建服务端的操作,每一步实际在做什么:

操作

原理

购买VPS

获得一个国外入口点 + 公网IP

安装 X-ui / Xray / Sing-box

部署一个支持多种代理协议的守护进程

配置入站(Inbound)

指定监听端口(如12345)和协议(如Shadowsocks)

生成密码/端口

建立客户端与服务端之间的共享密钥和通信通道

配置客户端

告诉客户端:“你的VPS在IP:端口,用密码加密,使用协议X

开启客户端

启动本地代理端口,拦截并加密应用流量

2 私有代理服务器搭建流程

概述:三步走策略

搭建一个能同时给电脑和手机使用的私有代理,主要分为三大步:

  1. 准备:购买一台境外服务器(VPS),作为代理的“据点”。

  2. 服务端:在服务器上安装代理服务端软件。

  3. 客户端:在电脑和手机上配置客户端软件进行连接。

整个过程技术上并不复杂,即使是新手,按照指南一步步操作也能完成。这里为你梳理了两种主流且好用的服务端方案,你可以根据自己的情况选择。

2.1 第一步:核心材料准备——购买一台境外服务器(VPS)

原理:VPS 是一台 24 小时运行在国外的远程电脑。你的网络请求会先加密发送给它,它解密后再帮你访问目标网站(如 Google),最后将结果加密返回给你。它的境外公网IP是你能访问外网的关键。

2.1.1 如何选择与购买

  • 推荐系统Ubuntu 20.04Debian 11。这两种系统兼容性最好,社区最活跃,后续操作遇到问题也最容易找到解决方案。

  • 服务商(从哪里买):国内比较权威的是云服务厂商是阿里云和腾讯云,这两家都有着强大的公信力背书,但是相对的它们收到了更多的监管,价格上并不美丽。笔者选择的是一家小型厂商,价格非常美丽,但是安全性和售后收益无法得到保障,笔者主要目的是学习。

  • 机房位置(选哪里):优先选择离你物理距离近的地区,延迟更低。推荐顺序:日本 ≈ 新加坡 > 美国西海岸(如洛杉矶、圣何塞),如果是为了科学上网,千万千万不要购买部署在国内的VPS

  • 配置与预算(花多少钱):如果单单作为VPS服务器,对配置要求极低,入门配置(1核CPU,1GB内存)就足够了。

2.1.2 购买后的关键信息

购买成功后,服务商会提供以下核心信息,请务必保存好:

  • 服务器IP地址:类似 123.45.67.89 的字符串。

  • root密码:服务器的最高权限密码。

  • SSH端口:通常是 22

2.2 第二步:服务端部署

现在你需要登录到这台远程服务器,并安装代理软件。我们将使用SSH工具进行操作,笔者使用了 MobaXterm ,原因是开源且免费。

然后输入登陆密码

2.2.1 使用 X-ui 面板

原理:X-ui 是一个带网页图形界面的管理工具,它帮你把复杂的配置命令转换成了鼠标点击操作,像配置路由器一样简单。

一键安装 X-ui 面板 连接成功后,复制粘贴并运行下面这行命令:

bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)
​
。。。
出于安全考虑,安装/更新完成后需要强制修改端口与账户密码
确认是否继续?[y/n]:y
请设置您的账户名:admin
您的账户名将设定为:admin
请设置您的账户密码:
您的账户密码将设定为:
请设置面板访问端口:54321
您的面板访问端口将设定为:54321
确认设定,设定中
set username and password success
账户密码设定完成
set port 54321 success面板端口设定完成
Created symlink from /etc/systemd/system/multi-user.target.wants/x-ui.service to /etc/systemd/system/x-ui.service.
x-ui v0.3.2 安装完成,面板已启动,
​
x-ui 管理脚本使用方法:
----------------------------------------------
x-ui              - 显示管理菜单 (功能更多)
x-ui start        - 启动 x-ui 面板
x-ui stop         - 停止 x-ui 面板
x-ui restart      - 重启 x-ui 面板
x-ui status       - 查看 x-ui 状态
x-ui enable       - 设置 x-ui 开机自启
x-ui disable      - 取消 x-ui 开机自启
x-ui log          - 查看 x-ui 日志
x-ui v2-ui        - 迁移本机器的 v2-ui 账号数据至 x-ui
x-ui update       - 更新 x-ui 面板
x-ui install      - 安装 x-ui 面板
x-ui uninstall    - 卸载 x-ui 面板
----------------------------------------------
[root@ser340593029893 ~]# x-ui enable
[INF] x-ui 设置开机自启成功

安装脚本会自动运行。过程中如果提示设置端口用户名密码。脚本会自动安装所有需要的组件。最后输入x-ui enable保证开机自启

3. 登录并配置节点

  • 访问面板:在电脑浏览器打开 http://你的服务器IP:54321 (默认端口是54321,你也可以在上一步自己设置)。

  • 登录:使用 用户名 和 密码 登录。

  • 添加入站节点(配置代理规则)

    • 在左侧菜单点击“入站列表”,然后点击“添加入站”。

    • 备注:给你的节点起个名字,如 MyNode

    • 协议:推荐选择 Shadowsocks,它对新手最友好,几乎所有客户端都支持。

    • 端口:可以填 12345,或点击随机生成。注意:不要使用80443等常见端口

    • 密码:点击随机生成一个强密码,并一定要复制保存到本地记事本

    • 加密方式:保持默认的 aes-256-gcm 即可。

    • 点击“查看”,你会看到详细的配置信息。

2.3 第三步:用户端配置(连接你的设备)

服务端搭好后,就可以在设备上连接使用了。这一步电脑和手机是分开配置的,但核心信息(IP、端口、密码、加密方式)都是一样的。

2.3.1 在苹果手机 (iPhone) 上使用

1. 安装客户端App

  • Shadowsocks 协议推荐:安装 Shadowrocket(收费,俗称“小火箭”,功能强大)或 Sing-box(免费,界面简洁)。

  • 需要使用美区账号在 App Store 中搜索,可以自己创建一个,也可以找一些梯子的部署网站会给美区账号。

2. 添加节点

  • 手动填写:在客户端点击右上角的“+”,选择协议类型(如 Shadowsocks),然后手动填入从服务器获取的四项信息:

    • 地址:你的服务器IP

    • 端口:你设置的端口(如 12345

    • 密码:你设置或生成的密码

    • 算法/加密方式aes-256-gcm 或你选择的其它方式

3. 开启连接:添加成功后,点击节点后的开关,或点击主界面的连接按钮。首次使用会提示“添加VPN配置”,点击“允许”并验证密码即可。开启后,手机状态栏会出现VPN图标。

2.3.2 在电脑 (Windows / Mac) 上使用

1. 下载并安装客户端

  • Shadowsocks方案:下载官方 Shadowsocks 客户端。Windows版是 .exe 文件,macOS版是 .dmg 文件。

2. 添加并连接

  • 从剪贴板导入(最快):在 X-ui 面板的节点列表,点击 “客户端配置” 或复制链接。然后在电脑客户端中,右键点击系统托盘/菜单栏图标,选择“从剪贴板导入”。

  • 手动配置:若无法自动导入,则打开客户端界面,找到“服务器设置”,点击“添加”,和手机端一样手动填入 IP、端口、密码和加密方式

  • 开启系统代理:添加成功后,在客户端主界面或右键菜单中,点击 “开启系统代理”“设置为系统代理”。开启后,你的浏览器和大部分程序就可以访问外网了。

2.4 重要安全提醒

  1. 保护好你的节点信息:你的服务器IP、端口和密码是私有的。一旦泄露,别人就能免费使用你的代理,甚至可能用于非法活动。绝对不要将这些信息上传到任何公开平台(如GitHub、贴吧)。

  2. 修改默认密码:如果你使用了 X-ui 面板,登录后的第一件事就是立即修改admin的默认密码。在面板的“设置”或“系统信息”中可以找到修改密码的选项。

  3. 配置防火墙:大多数VPS服务商都有“防火墙”或“安全组”功能。建议只向你的家庭/公司IP开放代理端口,或者至少确保为代理设置了强密码认证(我们在配置中已经做了)。

评论