Spark
Themed by Diary.
VPS自建 VLESS-Reality 与 Hysteria 2 双协议节点指南
使用 Docker 在境外 VPS 自适应部署 VLESS-Reality (TCP) 和 Hysteria 2 (UDP) 双协议节点,以及开启 BBR 拥塞控制和 Clash 客户端配置指南。

在网络环境日益复杂的今天,单一代理协议往往难以兼顾“隐蔽防封锁”和“弱网爆速”的需求。本文将指导你如何在一台境外 VPS 上,通过 Docker 容器化技术同时部署 VLESS-Reality (TCP)Hysteria 2 (UDP) 双协议节点,并开启 BBR 拥塞控制进行网络加速。

为什么选择双协议?

  • VLESS + Reality (TCP):伪装成对真实大型网站(如苹果、谷歌官网)的 HTTPS 访问,完美通过深度包检测(DPI),抗封锁能力极强。
  • Hysteria 2 (UDP):基于 QUIC 协议,内置 Brutal 拥塞控制算法。在丢包严重(如晚高峰或移动宽带)的弱网环境下,能强行冲高速度,堪称弱网提速神器。

准备工作

  1. 准备一台运行 Linux(推荐 Ubuntu 22.04+)的境外 VPS。
  2. 确保 VPS 在服务商后台的安全组中放行了以下端口:
    • TCP 443 (用于 VLESS-Reality)
    • UDP 4443 (用于 Hysteria 2)

第一步:开启 BBR 拥塞控制

BBR 是谷歌开发的 TCP 拥塞控制算法。开启后可显著提升 VLESS 这种基于 TCP 协议节点的传输速率。

登录 VPS 后,执行以下命令:

# 移除已有的相关配置并写入新配置
sed -i '/net.core.default_qdisc/d' /etc/sysctl.conf
sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.conf
echo 'net.core.default_qdisc=fq' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' >> /etc/sysctl.conf

# 使配置生效
sysctl -p

运行后若看到 net.ipv4.tcp_congestion_control = bbr,说明 BBR 已成功启用。


第二步:用 Docker 部署 VLESS-Reality

使用 Xray 官方 Docker 镜像进行部署。

  1. 编写配置文件:创建 /etc/xray/config.json
    {
        "log": {
            "loglevel": "warning"
        },
        "inbounds": [
            {
                "port": 443,
                "protocol": "vless",
                "settings": {
                    "clients": [
                        {
                            "id": "<VLESS_UUID>",
                            "flow": "xtls-rprx-vision"
                        }
                    ],
                    "decryption": "none"
                },
                "streamSettings": {
                    "network": "tcp",
                    "security": "reality",
                    "realitySettings": {
                        "show": false,
                        "dest": "images.apple.com:443",
                        "xver": 0,
                        "serverNames": [
                            "images.apple.com"
                        ],
                        "privateKey": "<Reality_PrivateKey>",
                        "shortIds": [
                            "f8f18902"
                        ]
                    }
                }
            }
        ],
        "outbounds": [
            {
                "protocol": "freedom",
                "tag": "direct"
            }
        ]
    }
    
  2. 启动 Xray 容器
    docker run -d \
      --name xray \
      --restart always \
      --network host \
      -v /etc/xray/config.json:/etc/xray/config.json \
      teddysun/xray:latest
    

第三步:用 Docker 部署 Hysteria 2

由于我们没有准备独立的域名证书,这里将使用 openssl 生成自签名证书,并在客户端开启跳过证书验证。

  1. 生成自签名证书
    mkdir -p /etc/hysteria/certs
    openssl req -x509 -newkey rsa:2048 \
      -keyout /etc/hysteria/certs/private.key \
      -out /etc/hysteria/certs/cert.crt \
      -sha256 -days 3650 -nodes \
      -subj "/CN=images.apple.com"
    
  2. 编写配置文件:创建 /etc/hysteria.yaml
    listen: :4443
    tls:
      cert: /etc/hysteria/certs/cert.crt
      key: /etc/hysteria/certs/private.key
    auth:
      type: password
      password: <Hy2_Password>
    masquerade:
      type: proxy
      proxy:
        url: https://images.apple.com/
        rewriteHost: true
    
  3. 启动 Hysteria 2 容器
    docker run -d \
      --name hysteria \
      --restart always \
      --network host \
      -v /etc/hysteria.yaml:/etc/hysteria.yaml \
      -v /etc/hysteria/certs:/etc/hysteria/certs \
      tobyxdd/hysteria:latest \
      server -c /etc/hysteria.yaml
    

第四步:Clash 客户端配置

在支持 Mihomo / Clash Meta 内核的客户端中,可在 proxies 下添加以下节点:

proxies:
  # VLESS-Reality 节点 (TCP)
  - { name: "🇺🇸美国自建-VLESS-Reality", type: vless, server: <YourIP>, port: 443, uuid: <VLESS_UUID>, udp: true, flow: xtls-rprx-vision, tls: true, skip-cert-verify: false, client-fingerprint: chrome, servername: images.apple.com, reality-opts: { public-key: "<Reality_PublicKey>", short-id: "f8f18902" } }
  
  # Hysteria 2 节点 (UDP)
  - { name: "🇺🇸美国自建-Hysteria2", type: hysteria2, server: <YourIP>, port: 4443, password: <Hy2_Password>, sni: images.apple.com, skip-cert-verify: true }

运维常用命令

在服务器上,你可以使用以下 Docker 指令管理这两个容器:

# 查看运行中的节点容器
docker ps

# 查看连接日志
docker logs -f xray
docker logs -f hysteria

# 重启或卸载服务
docker restart xray hysteria
docker rm -f xray hysteria

Last modified on 2026-05-31