私有代理服务器工作原理与搭建流程详解
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 为例解释原理,它足够简单且广泛应用。
1.3.3 客户端与服务端交互方式
服务端:监听某个端口,等待客户端连接。收到加密数据后,用预设密码解密,然后转发到真正的目标网站。
客户端:在本地开启一个代理端口(如 1080)。系统或浏览器将流量发给该端口,客户端加密后发送到服务端。
1.4 完整数据流转过程
(1.4 这部分枯燥的一批,不看也没事,其实有事)
假设你想访问 https://www.google.com。
步骤 1:客户端请求产生
浏览器设置代理为
127.0.0.1:1080(Socks5 代理)。浏览器向代理客户端发送请求:“我要连接 www.google.com:443”。
步骤 2:客户端封装数据
代理客户端执行:
读取请求的目标地址和端口。
将目标信息与请求数据(HTTPS 的 TLS 握手数据)一起打包。
使用 Shadowsocks 协议和预设密码(如
aes-256-gcm)加密整个数据包。将加密后的数据发送到 VPS 的指定端口(如
你的VPS_IP:12345)。
步骤 3:服务端接收与解密
VPS 上的代理服务端:
监听
0.0.0.0:12345,收到加密数据。使用相同的密码进行解密,还原出原始请求:“连接 www.google.com:443”。
服务端自己作为新的客户端,向
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-gcm、chacha20-ietf-poly1305)。这类加密比早期流加密多了完整性验证——防止第三方篡改数据。
密钥:由你设置的密码通过密钥派生函数生成。
随机数:每次连接生成,确保相同明文产生不同密文,对抗流量分析。
标签:用于验证数据未被修改。
1.5.2 多路复用
一个代理连接可以承载多个传输流:
浏览器同时加载网页(HTML、CSS、图片、JS)。
代理客户端将这些请求的多路复用(如使用
mux或smux)后,通过一条 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 常见攻击与防护
1.7 部署流程中的原理映射
现在回头看你搭建服务端的操作,每一步实际在做什么:
2 私有代理服务器搭建流程
概述:三步走策略
搭建一个能同时给电脑和手机使用的私有代理,主要分为三大步:
准备:购买一台境外服务器(VPS),作为代理的“据点”。
服务端:在服务器上安装代理服务端软件。
客户端:在电脑和手机上配置客户端软件进行连接。
整个过程技术上并不复杂,即使是新手,按照指南一步步操作也能完成。这里为你梳理了两种主流且好用的服务端方案,你可以根据自己的情况选择。
2.1 第一步:核心材料准备——购买一台境外服务器(VPS)
原理:VPS 是一台 24 小时运行在国外的远程电脑。你的网络请求会先加密发送给它,它解密后再帮你访问目标网站(如 Google),最后将结果加密返回给你。它的境外公网IP是你能访问外网的关键。
2.1.1 如何选择与购买
推荐系统:Ubuntu 20.04 或 Debian 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,或点击随机生成。注意:不要使用80、443等常见端口。密码:点击随机生成一个强密码,并一定要复制保存到本地记事本。
加密方式:保持默认的
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 重要安全提醒
保护好你的节点信息:你的服务器IP、端口和密码是私有的。一旦泄露,别人就能免费使用你的代理,甚至可能用于非法活动。绝对不要将这些信息上传到任何公开平台(如GitHub、贴吧)。
修改默认密码:如果你使用了 X-ui 面板,登录后的第一件事就是立即修改admin的默认密码。在面板的“设置”或“系统信息”中可以找到修改密码的选项。
配置防火墙:大多数VPS服务商都有“防火墙”或“安全组”功能。建议只向你的家庭/公司IP开放代理端口,或者至少确保为代理设置了强密码认证(我们在配置中已经做了)。