VPS 自建代理完全指南:VLESS Reality + Hysteria2 双协议部署

本文记录从零开始在 Vultr VPS 上搭建代理的完整过程,包括协议选择、多机房测速对比、速度优化,以及最终采用 Hysteria2 提速的实践经验。

目录


前置条件

  • 一台海外 VPS(本文使用 Vultr,推荐 Ubuntu 22.04)
  • SSH 登录权限(root)
  • 本地安装 Clash 客户端(如 Mihomo v1.19.20+)

一、VLESS + Reality 部署

1. SSH 登录 VPS

ssh root@<VPS_IP>

2. 执行一键安装脚本

bash <(curl -sL https://raw.githubusercontent.com/mack-a/v2ray-agent/master/install.sh)

3. 选择安装选项

进入菜单后,输入 3(一键无域名 Reality),按提示完成安装。

该方案的优势:

  • 无需域名
  • 无需申请 TLS 证书
  • 伪装为正常 HTTPS 流量,抗检测能力强

4. 记录输出信息

安装完成后,脚本会输出一条 VLESS URI:

vless://<UUID>@<IP>:<PORT>?encryption=none&security=reality&type=tcp&sni=www.cloudflare.com&fp=chrome&pbk=<PUBLIC_KEY>&sid=<SHORT_ID>&flow=xtls-rprx-vision#<NAME>

需要从中提取的关键字段:

字段说明
UUID用户唯一标识
IPVPS 的 IP 地址
PORT代理端口
pbkREALITY 公钥(public-key)
sidshort-id
sni伪装域名(servername)

5. BBR 加速检查

回到安装脚本主菜单,选择 18. 安装BBR、DD脚本

  • 如果显示"BBR启动成功",说明已自动启用,输入 99 退出
  • 如果未启用,选择 11(使用 BBR+FQ 加速)

注意:BBR 是 Linux 内核层面的 TCP 拥塞控制算法,能提升 TCP 传输效率,但无法解决线路质量差的根本问题。


二、Clash 客户端配置

VLESS Reality 节点配置

proxies:
  - name: vps-reality
    type: vless
    server: <VPS_IP>
    port: <PORT>
    uuid: <UUID>
    network: tcp
    tls: true
    udp: true
    flow: xtls-rprx-vision
    servername: www.cloudflare.com
    client-fingerprint: chrome
    reality-opts:
      public-key: <PUBLIC_KEY>
      short-id: <SHORT_ID>

验证连通性

# 测试是否能访问 Google(端口替换为你的 Clash 混合代理端口)
curl -x http://127.0.0.1:7897 https://www.google.com -I

# 查看出口 IP 和地理位置
curl -x http://127.0.0.1:7897 https://ipinfo.io

# 测试下载速度(1MB 文件)
curl -x http://127.0.0.1:7897 -o /dev/null -s -w "下载速度: %{speed_download} bytes/s\n总时间: %{time_total}s\n" "https://speed.cloudflare.com/__down?bytes=1000000"

三、速度测试与机房选择

实测数据对比

我在 Vultr 上依次测试了三个机房,结果如下:

机房首字节延迟下载速度稳定性
日本东京1.1s~105 KB/s (0.8 Mbps)一般
日本大阪1.6s~60 KB/s (0.5 Mbps)
美国洛杉矶1.0s88-135 KB/s (0.7-1.1 Mbps)较好

机房选择建议

根据公开评测数据和实际测试:

按运营商推荐:

运营商首选机房次选避免
电信洛杉矶、硅谷西雅图日本、新加坡(NTT线路晚高峰拥堵)
联通东京、首尔洛杉矶-
移动东京、新加坡洛杉矶-

关键结论:

  • Vultr 所有机房均为普通 163 骨干网线路,不提供 CN2,无法通过加钱升级线路
  • 同厂商不同 IP 的路由差异很大,可以利用 Vultr 按小时计费的特性多换几台试试
  • 洛杉矶对三大运营商最均衡稳定,晚高峰抗拥堵能力最强
  • 日本机房物理距离虽近,但晚高峰(20:00-23:00)丢包率可达 10-20%

使用 Vultr 官方测速地址

# 各机房 ping 测试
ping -c 5 lax-ca-us-ping.vultr.com    # 洛杉矶
ping -c 5 sel-kor-ping.vultr.com      # 首尔
ping -c 5 hnd-jp-ping.vultr.com       # 东京
ping -c 5 sea-wa-us-ping.vultr.com    # 西雅图
ping -c 5 sjc-ca-us-ping.vultr.com    # 硅谷

注意:如果 Clash 开启了 TUN 模式,ping 和 curl 的流量都会被劫持走代理,测出来的是代理出口到目标机房的延迟,而非你本机直连的真实延迟。测试前需关闭 TUN 或切换到 DIRECT 模式。


四、Hysteria2 部署(提速方案)

当 VLESS Reality 速度不理想时,可以在同一台 VPS 上加装 Hysteria2。它基于 QUIC/UDP 协议,抗丢包能力显著优于 TCP。

为什么 Hysteria2 更快?

对比项VLESS Reality (TCP)Hysteria2 (QUIC/UDP)
传输协议TCPUDP (QUIC)
丢包处理丢包后需要重传整个窗口仅重传丢失的包
连接建立TCP三次握手 + TLS握手0-RTT / 1-RTT
拥塞控制传统算法,保守Brutal 模式,激进填充带宽

1. 安装 Hysteria2

bash <(curl -fsSL https://get.hy2.sh/)

2. 生成自签证书

openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) \
  -keyout /etc/hysteria/server.key \
  -out /etc/hysteria/server.crt \
  -subj "/CN=bing.com" -days 3650

3. 编写配置文件

cat > /etc/hysteria/config.yaml << 'EOF'
listen: :8443

tls:
  cert: /etc/hysteria/server.crt
  key: /etc/hysteria/server.key

auth:
  type: password
  password: REPLACE_ME

masquerade:
  type: proxy
  proxy:
    url: https://bing.com
    rewriteHost: true
EOF

生成随机密码并写入:

PASSWORD=$(openssl rand -base64 16) && sed -i "s/REPLACE_ME/$PASSWORD/" /etc/hysteria/config.yaml && echo "密码: $PASSWORD"

4. 设置权限并启动

# 修复证书权限
chmod 644 /etc/hysteria/server.crt /etc/hysteria/server.key

# 开放 UDP 端口
ufw allow 8443/udp 2>/dev/null
iptables -A INPUT -p udp --dport 8443 -j ACCEPT

# 启动并设为开机自启
systemctl start hysteria-server.service
systemctl enable hysteria-server.service
systemctl status hysteria-server.service

5. Clash 客户端添加 Hysteria2 节点

proxies:
  - name: vps-hysteria2
    type: hysteria2
    server: <VPS_IP>
    port: 8443
    password: <你的密码>
    sni: bing.com
    skip-cert-verify: true

实测提速效果

在同一台洛杉矶 VPS 上对比:

指标VLESS RealityHysteria2
Clash 延迟260ms → 940ms(波动大)235ms(稳定)
下载速度88-135 KB/s82-99 KB/s
稳定性波动较大非常稳定

延迟从近 1 秒降到 235ms,提升约 4 倍,且三次测速波动极小。


五、完整 Clash 配置参考

双协议并存的完整配置:

mixed-port: 7890
allow-lan: true
mode: rule
log-level: info

tun:
  enable: true
  stack: system
  auto-route: true
  auto-detect-interface: true

dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "*.local"
    - localhost.ptlogin2.qq.com
    - dns.msftncsi.com
    - www.msftncsi.com
    - www.msftconnecttest.com
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query
    - 119.29.29.29
    - 223.5.5.5
  fallback:
    - https://dns.cloudflare.com/dns-query
    - https://dns.google/dns-query
    - 1.1.1.1
    - 8.8.8.8
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
      - 240.0.0.0/4

proxies:
  - name: vps-reality
    type: vless
    server: <VPS_IP>
    port: <PORT>
    uuid: <UUID>
    network: tcp
    tls: true
    udp: true
    flow: xtls-rprx-vision
    servername: www.cloudflare.com
    client-fingerprint: chrome
    reality-opts:
      public-key: <PUBLIC_KEY>
      short-id: <SHORT_ID>

  - name: vps-hysteria2
    type: hysteria2
    server: <VPS_IP>
    port: 8443
    password: <PASSWORD>
    sni: bing.com
    skip-cert-verify: true

proxy-groups:
  - name: 代理
    type: select
    proxies:
      - vps-hysteria2
      - vps-reality
      - DIRECT

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400
  proxy:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
    path: ./ruleset/proxy.yaml
    interval: 86400
  direct:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
    path: ./ruleset/direct.yaml
    interval: 86400
  gfw:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt"
    path: ./ruleset/gfw.yaml
    interval: 86400
  greatfire:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/greatfire.txt"
    path: ./ruleset/greatfire.yaml
    interval: 86400
  cncidr:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
    path: ./ruleset/cncidr.yaml
    interval: 86400
  lancidr:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt"
    path: ./ruleset/lancidr.yaml
    interval: 86400
  telegramcidr:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt"
    path: ./ruleset/telegramcidr.yaml
    interval: 86400

rules:
  # AI 服务
  - DOMAIN-SUFFIX,anthropic.com,代理
  - DOMAIN-SUFFIX,claude.ai,代理
  - DOMAIN-SUFFIX,openai.com,代理
  - DOMAIN-SUFFIX,chatgpt.com,代理
  - DOMAIN-SUFFIX,oaistatic.com,代理
  - DOMAIN-SUFFIX,oaiusercontent.com,代理
  - DOMAIN-SUFFIX,sora.com,代理

  # 广告拦截
  - RULE-SET,reject,REJECT

  # Telegram
  - RULE-SET,telegramcidr,代理

  # 国内直连
  - RULE-SET,direct,DIRECT

  # 需要代理的域名
  - RULE-SET,proxy,代理
  - RULE-SET,gfw,代理
  - RULE-SET,greatfire,代理

  # 局域网 & 国内 IP
  - RULE-SET,lancidr,DIRECT
  - RULE-SET,cncidr,DIRECT
  - GEOIP,CN,DIRECT

  # 兜底
  - MATCH,代理

六、IP 纯净度检测

搭建完成后建议检测 IP 质量,确保不在黑名单中:

网站地址特点
Scamalyticsscamalytics.com欺诈评分,区分数据中心/住宅 IP
IPQSipqualityscore.com业界标杆,0-100 分欺诈风险评分
Ping0ping0.cc中文界面,免注册,国内常用
Whoerwhoer.net匿名度检测,DNS 泄露检测
IPPureippurity.com专注 IP 纯净度,中文友好

七、常用运维命令

VLESS Reality (Xray)

vasma                           # 重新进入管理菜单
systemctl status xray           # 查看运行状态
systemctl restart xray          # 重启服务
journalctl -u xray -f           # 查看实时日志

Hysteria2

systemctl status hysteria-server    # 查看运行状态
systemctl restart hysteria-server   # 重启服务
systemctl stop hysteria-server      # 停止服务
journalctl -u hysteria-server -f    # 查看实时日志
cat /etc/hysteria/config.yaml       # 查看配置

八、经验总结

  1. Vultr 不提供 CN2 线路,所有机房都是普通 163 骨干网,无法通过加钱升级线路质量
  2. 同厂商不同机房差异巨大,利用按小时计费的特性多换几台测试
  3. 洛杉矶是 Vultr 对中国用户最稳定的机房,虽然延迟比日本高,但带宽充裕、晚高峰表现好
  4. Hysteria2 是免费提速的最佳方案,基于 UDP/QUIC 协议抗丢包,延迟可降低数倍
  5. VLESS Reality 和 Hysteria2 可以共存,建议优先使用 Hysteria2,VLESS 作为备用
  6. 如果追求极致速度,考虑换用 CN2 GIA 线路的厂商(如搬瓦工,年付 $49.99 起)
  7. TUN 模式会劫持所有系统流量,测速时需注意是否经过代理,避免测出虚假结果
  8. 安装 Hysteria2 注意两个坑:证书文件权限需设为 644,防火墙需开放 UDP 端口