使用声明
本文仅用于网络技术学习与个人自用测试,禁止用于违法活动、非法传播或商业用途。请遵守所在地法律法规及相关服务商的使用规定。
这次我把自用代理搭在了 VPS 上,再接入购买的静态出口。电脑、手机连接自己的节点后,需要代理的请求就从这个出口访问网站。
下面按实际搭建顺序来做。教程以 3x-ui v3.11.0、Xray 26.10.29、Mihomo 1.19.32 为配置参考,服务器采用全新的 Ubuntu 24.04。图中均为原理与字段示意,不是面板截图。
1. 为什么要自己搭
我主要想解决两件事:
- 自己管理节点和订阅:配置放在哪里、什么时候更新,由自己控制。
- 固定最终出口:前面的连接线路可以调整,目标网站看到的出口尽量保持不变。
因此,这次把 VPS 当作入口,把静态代理当作最终出口。这里说的“梯子”,具体是 VLESS + REALITY 代理服务。
2. 先看懂这条链路
实线是访问链路,虚线是配置下载。订阅链接不负责转发上网流量。
几个名词各管一件事:
- VPS:运行服务的远程电脑,通常带机房公网 IP。
- Xray:实际接收、转发连接的程序。
- 3x-ui:管理 Xray、用户和订阅的网页面板。
- 节点:服务器地址、端口、协议和认证参数的组合。
- 订阅:让客户端下载、更新节点配置的链接。
- 静态出口:网站最终看到的对外地址,本次通过
SOCKS5接入。
静态、独享、家宽是三个属性。
地址固定,不代表独享,也不代表真实家庭宽带。本文“家宽”沿用购买时的商品描述;这次验证的是代理链路和出口地址,没有独立验证背后的物理接入线路。
3. 准备材料与成本
我这次的支出如下,人民币折算按购买时约定的金额计算:
| 项目 | 费用 |
|---|---|
| 静态家宽 IP | ¥30 / 月 |
| VPS | $20 / 年,约 ¥133 |
| 一年合计 | 约 ¥493 |
| 平均每月 | 约 ¥41 |
准备好:
- 一台 VPS:公网 IPv4、Ubuntu 24.04、SSH 登录权限。
- 静态代理信息:SOCKS5 服务器地址、端口、用户名、密码。
- SSH 工具:macOS 的终端或 Windows 的 PowerShell 即可。
- 客户端:Clash Verge Rev,本文使用 Mihomo 内核。
本教程使用 IP 证书,不要求另买域名。选服务器时,先确认本地能连接它的 SSH 和代理端口,且 VPS 能连接购买的静态代理。
后面区分两个地址,别填反:
VPS_IP = 自己 VPS 的公网 IPv4
SOCKS_HOST = 商家提供的静态代理服务器地址
VPS_IP 是客户端连接的入口;SOCKS_HOST 用在服务器的出站配置里,实际出口地址以商家分配和实测为准。
4. 开始搭建:按这八步操作
4.1 登录 VPS,放行端口
在自己的电脑上打开终端。把 VPS_IP 替换为真实地址:
ssh root@VPS_IP
如果 SSH 不是默认的 22 端口,使用 ssh -p 实际端口 root@VPS_IP。非 root 用户登录后,先执行 sudo -i。
下面的命令都在 VPS 上执行:
apt update
apt install -y curl ca-certificates socat openssl ufw
先到服务商控制台的防火墙或安全组放行以下 TCP 端口,再配置系统防火墙:
| 端口 | 用途 |
|---|---|
实际 SSH 端口,默认 22 |
远程登录 |
80 |
申请、续期 IP 证书 |
443 |
REALITY 节点 |
2053 |
3x-ui 管理页面 |
2096 |
HTTPS 订阅 |
以下假设 SSH 使用 22。若不是,先改第一条命令中的端口:
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 2053/tcp
ufw allow 2096/tcp
ufw enable
ufw status
云平台防火墙和
ufw是两层配置,两边都要允许连接。启用ufw前必须先放行自己的 SSH 端口。
4.2 安装 3x-ui
为方便对照,下面固定安装本次使用的 v3.11.0,而不是跟随最新版:
curl -fL \
https://raw.githubusercontent.com/MHSanaei/3x-ui/v3.11.0/install.sh \
-o /root/3x-ui-install.sh
bash /root/3x-ui-install.sh v3.11.0
跟随安装提示设置管理员用户名、密码和面板访问路径。面板端口使用 2053;如果安装器自动生成了信息,先保存输出,随后运行 x-ui,按菜单名称进入 修改端口 / Modify Port 调整。
保留这四项:
管理员用户名
管理员密码
面板端口:2053
面板访问路径:安装器生成的路径
安装后检查:
systemctl is-active x-ui
看到 active,继续下一步。后面随时可以运行 x-ui 回到管理菜单。
4.3 配置 HTTPS,不用购买域名
如果安装器已经申请了 IP 证书并配置好面板 HTTPS,直接核对下方证书路径、续期任务和访问地址,不必重复申请。
运行:
x-ui
在 v3.11.0 的菜单中依次选择:
20. SSL Certificate Management
└─ 6. Get SSL for IP Address
按下面填写:
-
公网 IPv4:核对自动识别的地址,必须是自己的
VPS_IP。 -
IPv6:本文不使用,直接回车跳过。
-
HTTP-01 监听端口:使用默认的
80。确认没有其他服务占用它。 -
是否把证书用于面板:输入
y,等待面板重启。
脚本会申请短期 IP 证书,并安装到:
证书:/root/cert/ip/fullchain.pem
私钥:/root/cert/ip/privkey.pem
这是 3x-ui 该版本管理脚本提供的 IP 证书流程。证书约 6 天有效,需要保留自动续期任务和公网 80 端口的可达性。检查当前 root 用户的定时任务:
crontab -l
应能找到 acme.sh 的续期检查任务;如果没有,先修复证书安装,不要把这张短期证书当成长期可用。
然后在自己的电脑浏览器打开安装输出的完整地址:
https://VPS_IP:2053/自己的面板路径/
保留路径两侧的 /。能通过正常证书校验并打开登录页,再登录面板。
四个端口各有用途。面板和订阅使用 IP 证书,REALITY 入站使用自己的密钥参数。
4.4 创建 VLESS + REALITY 入站
打开面板的 入站 / Inbounds → 添加 / Add,按表填写:
| 字段 | 填写内容 |
|---|---|
| 备注 | 自用静态出口 |
| 协议 | VLESS |
| 监听地址 | 留空,使用默认监听 |
| 端口 | 443 |
| 传输 | TCP / RAW |
| 安全 | REALITY |
目标地址 Dest / Target |
www.microsoft.com:443 |
服务器名称 SNI / Server Names |
www.microsoft.com |
| 公钥、私钥 | 点击面板的生成按钮 |
Short IDs |
点击生成按钮 |
指纹 Fingerprint |
chrome |
| 最小、最大客户端版本 | 留空,避免额外限制第三方客户端 |
这里采用官方 REALITY 文档中的目标示例。先在 VPS 上检查它是否能完成 TLS 1.3、HTTP/2 协商:
openssl s_client -connect www.microsoft.com:443 \
-servername www.microsoft.com -tls1_3 -alpn h2 </dev/null
输出应包含 TLS 1.3 和 ALPN protocol: h2。若失败,换用自己从 VPS 和客户端都能正常访问、满足要求的目标站点,并同时修改 Target 与 SNI。
保存入站,记下其实际 Tag。如果表单支持自定义 Tag,可以设为 vless-static-443;否则使用面板生成的值,后面的路由要与它一致。
手动核对时看这张图。HTTPS 证书私钥和 REALITY 私钥不是同一份东西。
4.5 添加一个自用用户
进入 用户 / Clients → 添加 / Add:
-
用户标识
Email:填写owner,这里只作内部标识。 -
UUID:点击生成,保持独立。 -
Flow:选择xtls-rprx-vision。 -
关联入站:选择刚建的 443 入站。若页面从入站内部添加用户,确认关联已经选中。
-
总流量、到期时间:自用且不设限制时,按界面保持不限额、无到期;关闭自动续期和定期重置。
保存后,确认用户已启用、关联了入站,并且有一个 Sub ID。它稍后用于生成个人订阅。
如果要了解额度和到期字段,参见该版本用户说明。
4.6 绑定静态 SOCKS5 出口
进入 Xray 设置 / Xray 配置,先备份现有配置。这里改的是出站和路由,不是刚才的 REALITY 入站。
在 outbounds 数组中新增下面这个对象,把占位内容替换成商家提供的信息:
{
"tag": "static-exit",
"protocol": "socks",
"settings": {
"servers": [
{
"address": "SOCKS_HOST",
"port": 443,
"users": [
{
"user": "SOCKS_USERNAME",
"pass": "SOCKS_PASSWORD"
}
]
}
]
}
}
address:商家的代理服务器地址,不是自己的 VPS。port:这里的443是示例,改成商家实际端口。user、pass:静态代理的认证信息。
接着,在 routing.rules 数组中增加:
{
"type": "field",
"inboundTag": ["vless-static-443"],
"outboundTag": "static-exit"
}
把 vless-static-443 换成 4.4 中记录的实际入站 Tag。这条规则放在现有 api → api 规则之后、其他可能匹配该入站的通用规则之前。
两处是“追加”,不是整份替换。
保留原有的 API 出站、直连、阻断及管理路由。数组中相邻的对象用逗号分隔,最后一个对象后不加逗号。
static-exit的拼写必须前后一致。
保存并应用配置、重启 Xray。确认面板显示核心运行正常;这时指定入站的流量才会进入静态代理。相关字段可以对照 Xray SOCKS 出站和 3x-ui 出站与路由说明。
4.7 开启 HTTPS 订阅与最小分流
打开面板的 订阅设置,按表配置:
| 字段 | 填写内容 |
|---|---|
| 启用订阅 | 开启 |
| 监听端口 | 2096 |
| TLS 证书路径 | /root/cert/ip/fullchain.pem |
| TLS 私钥路径 | /root/cert/ip/privkey.pem |
| Clash / Mihomo 输出 | 开启 |
保存、重启面板。面板能用 HTTPS,不代表订阅也自动启用了 HTTPS,订阅自己的证书字段同样要填写。
在 Clash / Mihomo 的自定义路由区域开启路由配置,填入下面的 YAML。对应的设置字段是 subClashEnableRouting 与 subClashRules:
proxy-groups:
- name: PROXY
type: select
include-all: true
rules:
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- MATCH,PROXY
这份规则只做一件事:本机、内网直连,其余进入 PROXY 组。它是可以独立使用的最小示例,不依赖之前的机场订阅,也不等于完整的国内外分流。
保存后,回到 owner 用户的订阅入口,选择 Mihomo 格式并复制完整 HTTPS 地址。在这个版本中,明确的格式入口形如:
https://VPS_IP:2096/mihomo/自己的SubID
用实际生成的链接为准。正常下载的内容应包含 proxies、proxy-groups、rules,而不只是几行 vless://。格式与路径见该版本订阅说明。
4.8 导入 Clash Verge Rev,确认出口
回到自己的电脑:
-
打开 Clash Verge Rev 的 订阅 → 新建,类型选远程订阅,粘贴刚复制的 HTTPS 链接,保存并更新。
-
激活新订阅。若以前用过全局扩展脚本,检查它有没有改写新配置;初次测试先不要套用旧机场专用的包装逻辑。
-
进入 代理 页面,使用 规则模式,在
PROXY组中选择自己的节点。 -
开启 系统代理。这一步先验证走代理的请求,暂时不用叠加 TUN。
本次版本组合的 REALITY 节点需要包含:
client-fingerprint: chrome
reality-opts:
public-key: 服务端生成的REALITY公钥
short-id: 服务端生成的ShortID
support-x25519mlkem768: true
3x-ui v3.11.0 的原生 Mihomo 订阅会生成相应兼容项。如果使用旧文件或其他转换工具,核对是否遗漏;修正配置来源后重新更新订阅,避免只改临时文件。
最后在电脑终端执行。把 7897 改成 Clash 设置中显示的实际混合端口:
curl --noproxy "" --proxy socks5h://127.0.0.1:7897 \
--max-time 20 https://api.ipify.org
echo
curl --noproxy "" --proxy socks5h://127.0.0.1:7897 \
--max-time 20 https://checkip.amazonaws.com
两个结果都应是商家分配给你的同一个静态出口 IP,而不是 VPS 的机房 IP。再刷新一次订阅、重复检查,确认配置更新后仍可用。
到这里,自用节点、订阅和静态出口就串起来了。手机安装支持相同协议的客户端,导入这份个人订阅即可;本文的检查覆盖这两次 HTTPS 代理请求,不代表已测试所有应用和 UDP。