Debian 或 Ubuntu 自建 RustDesk 服务

本文介绍如何在 VPS 上搭建 RustDesk 服务,本文适用于 Debian 13 以及 Ubuntu 24.04 系统。

注:请先参照 Debian & Ubuntu 服务器的初始化配置 一文对服务器进行各种必要的配置。本文默认已按初始化配置文章对服务器进行了配置。

尤其注意进行 UFW 针对 Docker 的配置,这是前置条件。

VPS 的规格要求:

  1. 512MB 及以上内存
  2. 固定公网 IP

Read More

Debian & Ubuntu 搭建部署 Xray 的 VLESS + XHTTP + TLS + Nginx 并使用 Cloudflare

本文最后更新于 2026 年 4 月 27 日


本文以 Debian 13 为例,介绍如何搭建 Xray-core 的 VLESS + XHTTP 服务端,使用 Nginx 反代,并通过 Cloudflare 橙色云隐藏源站 IP。本文同样适用于 Ubuntu 24.04 及以上系统。

注:请先参照 Debian & Ubuntu 服务器的初始化配置 一文对服务器进行各种必要的配置。本文以 sammy 用户为例,并默认已按初始化配置文章对服务器进行了配置。

本方案采用:

1
2
3
4
客户端 Xray
→ Cloudflare 橙色云
→ Nginx TLS + HTTP/2
→ Xray VLESS + XHTTP

本方案特点:

  1. XHTTP 使用 H2/gRPC-like 流量形态,适合 Cloudflare 橙色云直回源
  2. Nginx 负责 TLS、HTTP/2、伪装站和路径分流
  3. Xray 只监听本地回环地址,不直接暴露公网
  4. VPS 443 端口只允许 Cloudflare IP 访问
  5. 客户端启用 ECH、uTLS Chrome、XHTTP padding obfs
  6. 证书使用 acme.sh + Cloudflare DNS-01 自动续期

与 Cloudflare Tunnel 方案相比,本方案性能更直接,XHTTP 兼容性更好;代价是源站必须开放 443 给 Cloudflare,并且需要管理源站证书。

Read More

Debian & Ubuntu 搭建部署 sing-box 的 Hysteria2 服务

本文最后更新于 2026 年 4 月 26 日


本文以 Debian 13 为例,介绍如何搭建 sing-box 的 Hysteria2 服务端,并说明对应的客户端配置文件的格式。本文同样完全适用于 Ubuntu 24.04 及以上系统。

本方案有以下特点:

  1. 基于 QUIC(UDP)传输,配合 Brutal 拥塞控制可在高丢包环境下维持较高吞吐
  2. 需要域名,需要 TLS 证书(本文使用 ACME DNS-01 自动签发)
  3. 启用 salamander 混淆以规避按标准 QUIC Initial 提取 SNI 的审查
  4. 配合端口跳跃以缓解运营商单端口 UDP 阻断
  5. 无需 Nginx 或其他 Web 服务器,客户端与 VPS 直连

该方案适用于需要 UDP 吞吐、线路存在拥塞或 QoS 的场景。对于 UDP 环境恶劣、更重视长期隐蔽性的场景,建议考虑 AnyTLS + REALITY 方案 等基于 TCP 的方案。

注:请先参照 Debian & Ubuntu 服务器的初始化配置 一文对服务器进行各种必要的配置。本文以 sammy 用户为例,进行 sing-box 的部署,并默认已按初始化配置文章对服务器进行了配置。


背景与原理

Hysteria2 与审查现状

Hysteria2 基于 QUIC 协议。有些研究显示,自 2024 年 4 月起,已开始针对特定域名实施 QUIC SNI 审查:虽然 QUIC Initial 是加密的,但其密钥可由被动观察者派生,因此审查设备可以解密 Initial 包并提取 SNI。命中规则后,会对对应的源 IP、目的 IP、目的 UDP 端口三元组实施约 180 秒的残留丢包。

这说明标准 QUIC Initial 中的 SNI 已不能视为对被动审查者不可见。需要注意的是,公开研究主要证明的是 对 QUIC Initial/SNI 的解析与阻断机制,并不等于所有未混淆 Hysteria2 流量都会被稳定识别和封锁。

因此,本文默认启用 salamander 混淆。salamander 会使外层 UDP payload 不再呈现标准 QUIC/HTTP3 形态,从而避免被按标准 QUIC Initial 提取 SNI。但这不代表流量不可检测;它仍可能表现为随机 UDP,并受到基于流量统计、持续速率或运营商 UDP 策略的影响。

在运营商层面,中国用户长期存在持续 UDP 连接被限速或单端口阻断的反馈。Hysteria 官方文档也提到,中国用户有时会遇到 ISP 阻断或限速持续 UDP 连接,且此类限制往往只作用于当前端口。因此,本文采用高位端口配合端口跳跃,作为对单端口 UDP 限制的缓解手段。

启用 salamander 后,服务器对不知道 obfs 密码的普通探测者不再表现为有效 HTTP/3 服务,因此 masquerade 不应被视为主要伪装手段。两者不是配置项互斥,但在 salamander 模式下,masquerade 的实际作用有限。

拥塞控制选择

Hysteria2 内置两种拥塞控制模式:

BBR:主流拥塞控制算法之一,不需要用户手动声明带宽,行为通常比 Brutal 更接近常规 QUIC/TCP 拥塞响应。FOCI 2025 的实验表明 Brutal 的自定义拥塞控制更容易产生可分类的统计特征;但这并不代表 BBR 完全不可被区分,只能说相对 Brutal 指纹风险更低。配置简单,适合作为首次部署的默认选择。

Brutal:用户声明目标带宽,丢包时不降速而是补偿发送。适用于骨干网拥塞(高 RTT、高丢包)场景,前提是准确声明带宽。声明值高于实际会导致大量无效重传。Brutal 只在实际传输数据时按目标速率发包,空闲时不产生额外流量。需注意 FOCI 2025 论文已在实验室环境中证明 Brutal 的恒速率行为可与标准拥塞控制统计区分,存在指纹风险。

选择建议:首次部署、免费实例、小流量配额、弱性能节点或更重视隐蔽性的场景用 BBR;优化线路或需要吞吐的普通线路,且能准确声明带宽时,可切换为保守 Brutal。

本方案不适用的场景

  1. 运营商实施 UDP 白名单策略(仅放行可识别协议的 UDP、阻断其余所有 UDP)
  2. VPS IP 已被标记为全端口 UDP 封锁
  3. 公司、校园、酒店等 UDP 受限网络环境(应改用 TCP 方案)

Read More

Debian & Ubuntu 搭建部署 sing-box 的 VLESS + HTTPUpgrade + Cloudflare Tunnel + ECH + Caddy 服务

本文最后更新于 2026 年 4 月 22 日


本文以 Debian 13 为例,介绍如何搭建 sing-box 的 VLESS + HTTPUpgrade 服务端,通过 Cloudflare Tunnel 隐藏源站 IP,使用 Caddy 建立伪装站,并在客户端启用 ECH 加密 SNI。本文同样完全适用于 Ubuntu 24.04 及以上系统。

本方案有以下特点:

  1. 除 SSH 管理端口外,VPS 无需开放任何业务入站端口(代理流量通过 cloudflared 主动出站连接进入),真实 IP 完全不出现在 DNS 记录、证书或任何公开信息中
  2. 无需申请 TLS 证书(外层 TLS 由 Cloudflare 边缘节点处理,VPS 内部全程明文 HTTP 回环通信)
  3. 浏览器直接访问域名显示真实的伪装网站,代理路径隐藏在特定 URI 下
  4. 客户端启用 ECH 后,TLS 握手中的真实 SNI 被加密,中间人仅能看到 cloudflare-ech.com 的外层 SNI(需配合加密 DNS 避免域名解析泄漏)

注:请先参照 Debian & Ubuntu 服务器的初始化配置 一文对服务器进行各种必要的配置。本文以 sammy 用户为例,并默认已按初始化配置文章对服务器进行了配置。


背景与原理

整体架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
客户端 sing-box (VLESS + HTTPUpgrade)
│ TLS 1.3 + ECH(外层 SNI: cloudflare-ech.com)

Cloudflare 边缘节点
│ CF 内部协议(Tunnel)

VPS 上 cloudflared 守护进程(主动出站长连接)
│ 明文 HTTP(本机回环)

Caddy(127.0.0.1:8080)
├─ 其他请求 → 伪装静态网站
└─ /你的隐藏路径 + Upgrade 头 → sing-box VLESS inbound


sing-box(127.0.0.1:8443)→ direct outbound → 目标网站

关于 TLS-in-TLS

本方案中,用户访问 HTTPS 网站时产生的内层 TLS 流量被封装在 Cloudflare 的外层 TLS 连接中,TLS-in-TLS 特征不可避免。sing-box 的 multiplex.padding 可在多路复用层添加随机填充以缓解长度特征,但无法完全消除。需要消除 TLS-in-TLS 的场景应选择 AnyTLS + REALITY 或者 VLESS + Vision + REALITY(两者都是直连方案,无法过 CDN)。

本方案不适用的场景

  1. VPS 无法出站连接 Cloudflare 的场景(极少数网络环境)
  2. 需要完全消除 TLS-in-TLS 特征的场景
  3. 追求极致低延迟的场景(CF Tunnel 多一跳,延迟略高于直连)

Read More

Mastodon