/ AIBLOG

技术笔记

从空白 VPS 到双协议节点:AI 自动部署 3x-ui 的实际结果

一台刚开通的 VPS,最终可以被整理成一套可管理、可验证、可恢复的代理节点服务。真正有价值的并不是“安装成功”这四个字,而是把面板、节点、安全策略、端口跳跃和验收过程连成一个闭环。

这次实操从一台干净的 Debian 12 服务器开始。AI 通过现有 SSH 密钥登录,在不覆盖其他业务的前提下完成环境检查、安装 3x-ui、创建两类节点、配置防火墙和 Fail2ban、开启 BBR,并用真实客户端流量完成端到端验证。

本文介绍部署后的效果、各组件的作用和实操中暴露的问题。具体的 Agent 执行步骤放在配套 B 文中。请遵守所在地法律和云服务商的使用政策。

开始前,先由人工完成这些准备

在让 Agent 连接服务器之前,服务器所有者需要先完成以下事项。任何一项尚未确认,都不应开始安装或修改防火墙:

  • 确认自己对 VPS、域名和云账号拥有合法管理权限,并确认所在地法律、组织政策及云服务商条款允许本次部署。
  • 准备可用的 SSH 密钥登录方式,核对首次连接显示的主机指纹;不要在聊天中发送 root 密码或 SSH 私钥。
  • 记录服务器公网 IP、当前 SSH 端口,并确认可以使用云厂商控制台、串口或救援模式恢复误配的网络和防火墙规则。
  • 如果要启用 Hysteria2 或公网 HTTPS 面板,提前准备域名,将 A/AAAA 记录直接解析到 VPS,并设置为 DNS Only;等待解析生效后再申请证书。
  • 确认有权限修改云厂商安全组。端口方案确定后,人工放行当前 SSH TCP 端口、TCP 443、UDP 443、选定的 UDP 跳跃范围;只有选择公网 HTTPS 面板时,才额外开放面板的高位 TCP 端口。
  • 准备支持对应协议的本地客户端,以便部署后进行真实连接测试;只查看服务状态不能代替端到端验收。

面板是否使用 SSH 隧道、是否启用 Hysteria2、UDP 跳跃范围以及是否启用内核 BBR,也应在执行前由服务器所有者明确选择。默认更推荐让面板只监听 127.0.0.1,通过 SSH 隧道访问。

在本地终端建立 SSH 隧道:

1ssh -N -p "${SSH_PORT}" \
2 -L "127.0.0.1:${LOCAL_PANEL_PORT}:127.0.0.1:${XUI_PANEL_PORT}" \
3 "${SSH_TARGET}"

其中,SSH_TARGETroot@服务器IP 或 SSH 主机别名,SSH_PORT 是服务器当前的 SSH 端口,XUI_PANEL_PORT 是 3x-ui 在服务器上的实际面板端口。LOCAL_PANEL_PORT 是本机使用的空闲端口,可以与 XUI_PANEL_PORT 相同。隧道保持运行期间,在浏览器中访问:

1http://127.0.0.1:${LOCAL_PANEL_PORT}/<WebBasePath>/

应使用安装时生成的真实 WebBasePath,不要把面板端口开放到公网。

部署完成后,AI 应在私密交付回复中把上述变量替换为实际值,明确展示一条可以直接复制执行的 SSH 隧道命令,以及完整的本地面板访问地址。用户名、密码和 API Token 仍只保存在权限为 0600 的服务器交付文件中,不在回复里展示。

输出结果:最终得到什么

部署完成后,得到的不只是可运行的服务,还包括可以安全取回的配置、脱敏验收记录和明确的回滚入口。服务器同时提供管理面板和两种传输特性不同的节点:

组成

实际效果

主要作用

3x-ui 管理面板

随机用户名、强密码、随机访问路径;默认仅监听回环并通过 SSH 隧道访问,明确选择公网模式时才使用 HTTPS

统一管理入站、客户端、流量、到期时间和分享链接

VLESS + TCP + REALITY + Vision

监听 TCP 443,可由兼容 Xray 的客户端导入

适合作为通用主节点,不需要为 REALITY 节点本身配置 TLS 证书

Hysteria2 + UDP 端口跳跃

监听 UDP 443,跳跃范围为一段高位 UDP 端口

为 UDP/QUIC 网络提供另一条连接路径,并降低长期固定使用单一 UDP 端口的影响

端口转发服务

将跳跃端口范围重定向到 Hysteria2 的实际监听端口

让客户端选择范围内任一端口时,数据都能到达同一个入站

UFW 与 Fail2ban

只开放 SSH、节点端口和经确认的面板端口

缩小公网暴露面,并对重复失败登录进行限制

TCP BBR + fq

内核拥塞算法和队列规则持久化

改善部分 TCP 网络环境下的拥塞恢复;它不等同于 Hysteria2 自身的 QUIC 拥塞控制

私密交付文件

在服务器上以 root 所有、0600 权限保存面板凭据、节点参数和导入链接

避免秘密进入聊天、公开日志或文章,同时让所有者可通过现有 SSH 通道安全取回

脱敏验收与回滚记录

记录版本、监听端口、服务状态、真实客户端测试、备份位置和精确回滚步骤

让“已完成”有证据可核对,失败时也能恢复到变更前状态

本次验收不是只看面板里的“运行中”。客户端通过 Hysteria2 节点访问公网后,出口地址确实变成服务器地址;服务器上的 UDP 转发规则计数同步增加。这说明节点、TLS、认证、端口跳跃和出站链路都真正经过了数据流量。

面板账号、API Token、节点 UUID、REALITY 私钥和 Hysteria2 认证值不会出现在公开结果中。最终私密交付只展示可直接复制的 SSH 隧道命令、完整的本地面板访问地址、服务器交付文件路径和安全取回方式;秘密本身仍留在服务器的受限文件中。

3x-ui 在这套方案里的作用

3x-ui 是 Xray-core 的管理层。它负责保存入站和客户端配置、生成分享链接、查看流量和日志,并在配置发生变化后重载 Xray。它并不会代替防火墙、DNS、TLS 证书或系统内核调优,这些仍然属于服务器运维范围。

把 3x-ui 放进自动化流程的好处,是 AI 可以把原本分散的操作串起来:

  1. 先识别系统、监听端口、已有服务和防火墙状态。
  2. 安装官方稳定版,并保存随机生成的管理信息。
  3. 根据当前版本的接口结构创建入站,避免照搬旧版字段。
  4. 核对人工准备好的 DNS 和云安全组,再配置 HTTPS、UFW、Fail2ban 和持久化端口转发。
  5. 用真实客户端配置测试,而不是把“进程存在”当成“节点可用”。

因此,AI 的作用更接近一个执行严格运行手册的运维 Agent:先侦察、再变更、持续验证,并在失败时保留回滚路径。

两种节点为什么可以共用 443

VLESS REALITY 使用 TCP 443,Hysteria2 使用 UDP 443。TCP 和 UDP 是不同的传输协议,因此在系统中可以同时监听相同的数字端口,不会互相抢占。

VLESS REALITY 适合作为主力通用节点。REALITY 使用目标站点的 TLS 特征完成握手,节点本身无需像普通 TLS 服务那样持有域名证书。客户端必须正确携带 UUID、公钥、Short ID、SNI、指纹和 xtls-rprx-vision 流控参数。

Hysteria2 基于 UDP/QUIC。本次配置使用有效证书、h3 ALPN 和独立认证信息。端口跳跃并不是让 Xray 同时监听上百个端口:服务端仍只监听一个 UDP 端口,再由 iptables 把一段端口范围转发到实际监听端口。漏掉这一步,面板里即使写了跳跃范围,客户端也可能始终超时。

实操中最值得记录的四个问题

1. DNS 代理状态不正确

VLESS + TCP + REALITY 不能直接当作普通网站流量交给 Cloudflare HTTP 代理。用于直接连接服务器的 A/AAAA 记录应指向 VPS,并设置为 DNS Only。DNS 尚未传播时,分享地址可以临时使用服务器 IP,但 SNI 等安全参数不能随意省略。

2. 面板“更安全”和“需要公网访问”是两种方案

最小暴露方案是让面板只监听 127.0.0.1,通过 SSH 隧道访问。如果确实需要浏览器从公网直接打开,就应显式切换为公网 HTTPS:申请有效证书、开放单独的 TLS 面板端口,并保留随机 WebBasePath、强密码和 2FA。不能为了方便直接暴露明文 HTTP 面板。

3. REALITY 参数正确,客户端仍可能认证失败

服务端日志曾显示连接已经到达 TCP 443,但 REALITY 认证失败。问题不是防火墙,而是客户端兼容性和导入参数。调整最低客户端版本、换用已验证的目标站点,并重新导入完整链接后,才能继续判断。

另一个容易误判的问题是:节点已经导入客户端,却没有被选为当前出站。此时服务器完全看不到新连接。排查时要同时检查客户端核心版本、当前选中节点、临时测速配置和服务端日志。

4. “BBR 已启用”需要区分两层

Hysteria2 的 QUIC 拥塞控制可以设置为 BBR,但这不代表 Linux 内核 TCP BBR 已开启。后者需要确认 tcp_bbr 模块、net.ipv4.tcp_congestion_control=bbrnet.core.default_qdisc=fq。两者作用于不同的传输路径,验证时不能混为一谈。

什么才算部署完成

一份可靠的验收记录至少应同时满足以下条件:

  • x-ui 与 Fail2ban 服务处于运行状态,并已设置开机启动。
  • 面板只按选定模式监听:回环加 SSH 隧道,或公网 HTTPS,二选一。
  • TCP 443 和 UDP 443 分别由预期的入站监听。
  • 防火墙只开放明确需要的端口;云厂商安全组与系统防火墙一致。
  • VLESS 客户端可以完成 REALITY 握手并访问公网。
  • Hysteria2 客户端可以通过跳跃端口范围访问公网。
  • 端口跳跃的 NAT 规则出现命中计数,重启后仍能自动恢复。
  • 内核 BBR、fq 和模块加载配置与预期一致。
  • 备份、回滚命令和敏感信息保存位置已经记录,但秘密本身没有出现在公开日志或文章中。

这套方案适合谁

它适合希望用一个面板管理少量自用节点,同时又需要完整验收和可恢复配置的人。对已有网站、复杂反向代理、多用户商业服务或严格合规环境,应先做端口规划、访问控制和容量评估,而不是直接套用默认参数。

AI 可以显著减少重复操作,但不能替代授权、风险判断和最终验收。尤其是修改 SSH、防火墙、证书与 NAT 规则之前,仍应由服务器所有者确认目标和回滚方式。

参考资料