Hysteria2协议完全指南:原理、部署与使用教程 摘要 本文全面介绍Hysteria2协议,从协议设计理念、技术原理到实际部署进行详细讲解。内容涵盖Hysteria2协议的发展历程、基于QUIC的工作原理与拥塞控制机制、服务端部署(包括一键安装和手动配置)、各平台客户端配置使用、Salamander混淆技术、ACL访问控制,以及安全性注意事项和常见问题排查。旨在帮助读者深入理解Hysteria2协议并掌握其实际应用。
一、Hysteria2协议介绍 1.1 什么是Hysteria2协议 Hysteria2是一款基于QUIC协议的高性能代理协议,由Toby(Github ID: HyNetwork)开发。Hysteria2的设计初衷是在不稳定网络环境下提供高速、稳定的代理服务,同时具备强大的抗审查能力。
Hysteria2的核心思想是:利用QUIC协议的UDP传输特性,配合自研的Brutal拥塞控制算法,实现比传统TCP代理更高的传输速度,同时通过HTTP/3伪装和Salamander混淆技术规避流量检测。
graph LR
A[Hysteria2] --> B[客户端]
A --> C[服务端]
A --> D[QUIC传输]
B --> B1[SOCKS5监听]
B --> B2[HTTP代理]
B --> B3[带宽控制]
C --> C1[认证管理]
C --> C2[ACL规则]
C --> C3[伪装响应]
D --> D1[Brutal拥塞控制]
D --> D2[HTTP/3伪装]
D --> D3[Salamander混淆]
1.2 协议发展历程 时间 事件 说明 2021 项目创建 Toby发布第一个Hysteria版本 2021 开源发布 在GitHub开源,获得社区关注 2022 Hysteria2发布 全新架构,性能大幅提升 2023 功能完善 新增Salamander混淆、ACL等功能 2024+ 持续演进 多平台客户端支持,功能不断完善
主要版本特点 :
graph TB
A[Hysteria Original] --> B[基于QUIC]
A --> C[自定义拥塞控制]
D[Hysteria2] --> E[全新协议设计]
D --> F[HTTP/3伪装]
D --> G[Salamander混淆]
D --> H[ACL访问控制]
E --> E1[更高效传输]
F --> F1[更强抗检测]
G --> G1[流量混淆]
H --> H1[灵活路由]
1.3 设计理念与特点 1.3.1 设计理念 Hysteria2的设计遵循以下原则:
速度优先 :利用UDP特性,突破TCP速度限制抗丢包 :自研拥塞控制,不因丢包降低速度易部署 :一键安装脚本,简化配置流程强伪装 :HTTP/3伪装,难以识别阻断多功能 :支持ACL、多用户、流量统计等1.3.2 协议特点 特点 说明 基于QUIC 使用UDP传输,绕过TCP限制 Brutal算法 自研拥塞控制,抗丢包能力强 HTTP/3伪装 流量伪装为标准HTTP/3 Salamander混淆 可选的流量混淆功能 多用户支持 支持多用户认证管理 ACL规则 灵活的访问控制和路由 TCP/UDP支持 同时支持TCP和UDP转发 带宽控制 可设置上下行带宽限制
1.4 适用场景 Hysteria2协议适用于以下场景:
高丢包网络 :不稳定网络环境下的稳定代理高速传输需求 :需要大带宽、低延迟的场景抗审查场景 :需要规避流量检测的环境游戏加速 :UDP支持适合游戏流量转发流媒体观看 :高速传输满足高清视频需求团队共享 :支持多用户管理重要说明 :Hysteria2协议专为高速传输设计,在高丢包环境下表现尤为出色。但需要注意正确配置带宽参数,否则可能适得其反。
1.5 与其他代理协议对比 特性 Hysteria2 Shadowsocks VMess Trojan VLESS 传输协议 UDP(QUIC) TCP TCP/UDP TCP TCP/UDP 拥塞控制 Brutal/BBR 系统默认 系统默认 系统默认 系统默认 加密方式 QUIC TLS AEAD AEAD TLS AEAD/无 流量伪装 HTTP/3 弱(需插件) 强 强 强 抗丢包 极强 弱 弱 弱 弱 延迟 极低 低 中 中 中 抗检测 强 中 强 强 强 配置复杂度 低 低 中 中 中
二、协议工作原理 2.1 整体架构 Hysteria2采用客户端-服务器架构,基于QUIC协议构建:
graph TB
subgraph 客户端
A[应用程序] --> B[Hysteria客户端<br/>SOCKS5/HTTP代理]
end
subgraph QUIC通道
B -->|QUIC加密| C[网络传输]
end
subgraph 服务端
C -->|QUIC加密| D[Hysteria服务端]
D --> E[认证处理]
E --> F[ACL规则匹配]
F --> G[目标服务器]
end
G -->|响应| F
F -->|响应| E
E -->|QUIC加密| D
D -->|QUIC加密| C
C -->|解密| B
B --> A
组件说明 :
组件 功能 Hysteria客户端 本地代理服务,支持SOCKS5和HTTP协议 Hysteria服务端 服务器程序,处理认证、转发请求 QUIC通道 基于UDP的加密传输通道 ACL引擎 访问控制规则,决定流量路由
2.2 认证流程 Hysteria2使用HTTP/3伪装进行认证:
sequenceDiagram
participant A as 应用程序
participant C as Hysteria客户端
participant S as Hysteria服务端
participant T as 目标服务器
Note over C,S: HTTP/3认证
C->>S: POST /auth HTTP/3<br/>Host: hysteria<br/>Hysteria-Auth: token<br/>Hysteria-CC-RX: bandwidth
S->>C: HTTP/3 233 HyOK<br/>Hysteria-UDP: true<br/>Hysteria-CC-RX: auto
Note over C,S: 数据传输
A->>C: 代理请求
C->>S: QUIC Stream请求
S->>T: 建立连接
S->>T: 转发数据
T->>S: 响应数据
S->>C: QUIC Stream响应
C->>A: 返回数据
2.3 拥塞控制机制 Hysteria2提供两种拥塞控制算法:
2.3.1 BBR算法 BBR(Bottleneck Bandwidth and Round-trip propagation time)是从Google的TCP算法适配而来:
1 2 3 4 5 6 7 BBR特点: ┌────────────────────────────────────────────────────────────────┐ │ 1 . 使用慢启动和RTT变化进行带宽估算 │ │ 2 . 不需要手动设置带宽参数 │ │ 3 . 自适应网络条件 │ │ 4 . 适合不确定带宽的场景 │ └────────────────────────────────────────────────────────────────┘
2.3.2 Brutal算法(推荐) Brutal是Hysteria自研的拥塞控制算法:
1 2 3 4 5 6 7 8 9 Brutal特点: ┌────────────────────────────────────────────────────────────────┐ │ 1 . 固定速率模型,不受丢包和RTT变化影响 │ │ 2 . 需要准确设置连接的理论最大速度 │ │ 3 . 丢包时反而加速补偿 │ │ 4 . 可作为速度限制器使用 │ │ │ │ ⚠️ 警告:设置过高会导致不稳定和数据浪费 │ └────────────────────────────────────────────────────────────────┘
2.3.3 算法选择逻辑 客户端带宽设置 上行算法 下行算法 仅设置下载带宽 服务端BBR 客户端Brutal 仅设置上传带宽 服务端Brutal 客户端BBR 两者都设置 Brutal Brutal 都不设置 BBR BBR
2.4 TCP代理请求格式 Hysteria2的TCP代理请求格式:
1 2 3 4 5 6 7 8 9 10 11 12 TCP请求格式: ┌────────────────────────────────────────────────────────────────┐ │ Type (varint) │ Addr Len (varint) │ Address (bytes) │ Padding ... │ │ 0 x401 │ 变长 │ host:port │ 随机填充 │ └────────────────────────────────────────────────────────────────┘ TCP响应格式: ┌────────────────────────────────────────────────────────────────┐ │ Status (uint8) │ Msg Len (varint) │ Message │ Padding... │ │ 0 x00=OK │ │ │ │ │ 0 x01=Error │ │ │ │ └────────────────────────────────────────────────────────────────┘
2.5 Salamander混淆 Salamander是Hysteria2的流量混淆功能:
graph LR
A[原始数据] --> B[Salamander加密]
B --> C[QUIC传输]
C --> D[Salamander解密]
D --> E[原始数据]
B --> B1[密码派生密钥]
B --> B2[流加密]
B --> B3[随机填充]
Salamander特点 :
可选的流量混淆层 客户端和服务端需要相同密码 有效对抗QUIC流量检测 对性能影响极小 三、服务端部署教程 3.1 环境准备 3.1.1 服务器要求 项目 最低要求 推荐配置 CPU 1核 2核+ 内存 128MB 512MB+ 存储 2GB 10GB+ 带宽 10Mbps 100Mbps+ 系统 Debian 10+/Ubuntu 18.04+/CentOS 7+ 最新稳定版
3.1.2 端口规划 服务 端口 说明 Hysteria2 443 推荐使用443端口伪装HTTPS Hysteria2 自定义 也可使用其他端口
3.2 一键安装部署 Hysteria2提供官方一键安装脚本:
1 2 3 4 5 bash <(curl -fsSL https://get.hy2.sh/)
安装完成后,可以使用以下命令管理服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 systemctl start hysteria-server.service systemctl stop hysteria-server.service systemctl restart hysteria-server.service systemctl status hysteria-server.service systemctl enable hysteria-server.service journalctl -u hysteria-server.service -f
3.3 服务端配置详解 3.3.1 使用ACME自动证书 创建配置文件 /etc/hysteria/config.yaml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 listen: :443 acme: domains: - your.domain.com email: your@email.com auth: type: password password: YourStrongPassword123! masquerade: type: proxy proxy: url: https://news.ycombinator.com/ rewriteHost: true
3.3.2 使用自定义TLS证书 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 listen: :443 tls: cert: /path/to/your/cert.crt key: /path/to/your/private.key auth: type: password password: YourStrongPassword123! masquerade: type: proxy proxy: url: https://www.bing.com/ rewriteHost: true
3.3.3 多用户配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 listen: :443 tls: cert: /path/to/cert.crt key: /path/to/private.key auth: type: userpass userpass: user1: pass1 user2: pass2 user3: pass3 masquerade: type: proxy proxy: url: https://www.google.com/ rewriteHost: true
3.3.4 完整服务端配置示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 listen: :443 acme: domains: - hysteria.example.com email: admin@example.com auth: type: userpass userpass: alice: AlicePassword123 bob: BobPassword456 quic: initStreamReceiveWindow: 8388608 maxStreamReceiveWindow: 8388608 initConnReceiveWindow: 20971520 maxConnReceiveWindow: 20971520 maxIdleTimeout: 60s keepAlivePeriod: 20s disablePathMTUDiscovery: false masquerade: type: proxy proxy: url: https://www.yahoo.com/ rewriteHost: true
3.4 配置参数说明 参数 说明 示例值 listen 监听地址 “:443” tls.cert TLS证书路径 “/path/to/cert.crt” tls.key TLS私钥路径 “/path/to/key.key” acme.domains ACME域名列表 [“example.com ”] acme.email ACME邮箱 “admin@example.com ” auth.type 认证类型 “password” / “userpass” auth.password 单用户密码 “StrongPassword” auth.userpass 多用户密码 masquerade.type 伪装类型 “proxy” masquerade.proxy.url 伪装代理URL “https://example.com ” obfs.type 混淆类型 “salamander” obfs.salamander.password 混淆密码 “ObfsPassword”
3.5 ACL访问控制 Hysteria2支持强大的ACL(访问控制列表)功能:
3.5.1 ACL规则语法 创建ACL文件 /etc/hysteria/acl.txt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 # 阻止私有IP地址 reject(10.0.0.0/8) reject(172.16.0.0/12) reject(192.168.0.0/16) reject(fc00::/7) # 阻止特定国家 reject(geoip:cn) reject(geoip:kp) # 阻止特定网站 reject(geosite:facebook) reject(geosite:google@ads) # 阻止特定协议 reject(all, udp/443) # 阻止QUIC reject(all, tcp/25) # 阻止SMTP # 路由到特定出站 v6_only(suffix:google.com) v4_only(suffix:twitter.com) # 劫持DNS请求 default(8.8.8.8, *, 1.1.1.1) default(8.8.4.4, udp/53, 1.1.1.1) # 默认直连 direct(all)
3.5.2 ACL规则详解 规则类型 语法 说明 阻止 reject(目标)拒绝连接 直连 direct(目标)直接连接 路由 出站名(目标)路由到指定出站 劫持 default(目标, 端口, 新地址)重定向到新地址
目标格式 :
1 2 3 4 5 6 7 8 9 10 11 12 目标格式示例: ┌────────────────────────────────────────────────────────────────┐ │ all - 所有连接 │ │ geoip:cn - 中国IP │ │ geosite:facebook - Facebook域名 │ │ suffix:google.com - Google及其子域名 │ │ ipinfo.io - 具体域名 │ │ 10 .0 .0 .0 /8 - IP 段 │ │ tcp/25 - TCP端口25 │ │ udp/443 - UDP端口443 │ │ 战狼*.中国 - 支持IDN域名通配符 │ └────────────────────────────────────────────────────────────────┘
3.6 防火墙配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo ufw allow 443/udp comment 'Hysteria2' sudo ufw allow 443/tcp comment 'Hysteria2 TLS fallback' sudo ufw reloadsudo firewall-cmd --permanent --add-port=443/udpsudo firewall-cmd --permanent --add-port=443/tcpsudo firewall-cmd --reloadsudo iptables -A INPUT -p udp --dport 443 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPTsudo iptables-save > /etc/iptables/rules.v4
注意 :Hysteria2使用UDP协议,确保防火墙放行UDP端口。如果使用443端口,建议同时放行TCP端口作为回落。
3.7 系统优化 1 2 3 4 5 6 7 8 9 10 11 12 13 14 net.core.rmem_max = 134217728 net.core.wmem_max = 134217728 net.ipv4.udp_rmem_min = 8192 net.ipv4.udp_wmem_min = 8192 net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbrsudo sysctl -p
四、客户端使用指南 4.1 各平台客户端推荐 平台 客户端 特点 推荐度 Windows Hysteria2 CLI 官方客户端,功能完整 ★★★★★ Windows v2rayN 多协议支持,界面友好 ★★★★★ Windows Nekoray 多协议支持,功能丰富 ★★★★☆ macOS Hysteria2 CLI 官方客户端,功能完整 ★★★★★ macOS V2rayU 多协议支持,界面美观 ★★★★☆ Linux Hysteria2 CLI 官方客户端,性能最佳 ★★★★★ Android Sing-Box 多协议支持,功能强大 ★★★★★ Android v2rayNG 多协议支持,界面友好 ★★★★★ iOS Shadowrocket 功能全面,支持Hysteria2 ★★★★★ iOS Stash 专业代理工具 ★★★★★
4.2 客户端配置详解 4.2.1 基础客户端配置 创建客户端配置文件 client.yaml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 server: your.domain.com:443 auth: YourStrongPassword123! bandwidth: up: 20 mbps down: 100 mbps socks5: listen: 127.0 .0 .1 :1080 http: listen: 127.0 .0 .1 :8080
4.2.2 带宽设置指南 带宽设置说明 :
带宽值应设置为连接的理论最大速度 设置过低会限制速度 设置过高会导致不稳定 建议先进行测速,然后设置为测速结果的80-90% 带宽估算参考 :
网络环境 建议设置 家庭宽带100M up: 20 mbps, down: 100 mbps 家庭宽带200M up: 30 mbps, down: 200 mbps 家庭宽带500M up: 50 mbps, down: 500 mbps 企业宽带1G up: 100 mbps, down: 1000 mbps
4.2.3 完整客户端配置示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 server: hysteria.example.com:443 auth: MyPassword123 bandwidth: up: 50 mbps down: 200 mbps socks5: listen: 127.0 .0 .1 :1080 http: listen: 127.0 .0 .1 :8080 tls: sni: hysteria.example.com insecure: false quic: initStreamReceiveWindow: 8388608 maxStreamReceiveWindow: 8388608 initConnReceiveWindow: 20971520 maxConnReceiveWindow: 20971520 maxIdleTimeout: 30s keepAlivePeriod: 10s disablePathMTUDiscovery: false
4.3 Windows客户端配置 4.3.1 下载安装 1 2 3 4 5 6 7 8 9 scoop install hysteria choco install hysteria
4.3.2 运行客户端 1 2 3 4 5 6 7 8 hysteria.exe -c client.yaml hysteria.exe client -s server:443 -a passwordstart /B hysteria.exe -c client.yaml
4.3.3 v2rayN配置 打开v2rayN 点击"服务器" → “添加Hysteria2服务器” 填写配置: 1 2 3 4 5 6 地址: hysteria.example.com 端口: 443 认证: YourPassword 上传带宽: 20 下载带宽: 100 SNI: hysteria.example.com
4.4 macOS客户端配置 4.4.1 安装客户端 1 2 3 4 5 brew install hysteria
4.4.2 运行客户端 1 2 3 4 5 6 7 8 hysteria -c client.yamlnohup hysteria -c client.yaml &
4.4.3 创建LaunchAgent服务 创建文件 ~/Library/LaunchAgents/com.hysteria.client.plist:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" > <plist version ="1.0" > <dict > <key > Label</key > <string > com.hysteria.client</string > <key > ProgramArguments</key > <array > <string > /usr/local/bin/hysteria</string > <string > -c</string > <string > /usr/local/etc/hysteria/client.yaml</string > </array > <key > RunAtLoad</key > <true /> <key > KeepAlive</key > <true /> </dict > </plist >
1 2 3 4 5 6 7 8 launchctl load ~/Library/LaunchAgents/com.hysteria.client.plist launchctl start com.hysteria.client launchctl stop com.hysteria.client
4.5 Linux客户端配置 4.5.1 安装客户端 1 2 3 4 5 6 7 8 9 bash <(curl -fsSL https://get.hy2.sh/)sudo apt install hysteriasudo pacman -S hysteria
4.5.2 配置文件 创建配置文件 /etc/hysteria/client.yaml:
1 2 3 4 5 6 7 8 9 10 11 12 server: hysteria.example.com:443 auth: YourPassword123 bandwidth: up: 30 mbps down: 100 mbps socks5: listen: 127.0 .0 .1 :1080 http: listen: 127.0 .0 .1 :8080
4.5.3 创建systemd服务 创建文件 /etc/systemd/system/hysteria-client.service:
1 2 3 4 5 6 7 8 9 10 11 12 [Unit] Description =Hysteria2 ClientAfter =network.target[Service] Type =simpleExecStart =/usr/bin/hysteria -c /etc/hysteria/client.yamlRestart =on -failureRestartSec =5 s[Install] WantedBy =multi-user.target
1 2 3 4 5 6 7 8 9 10 11 sudo systemctl daemon-reloadsudo systemctl start hysteria-clientsudo systemctl enable hysteria-clientsudo systemctl status hysteria-client
4.6 Android客户端配置 4.6.1 Sing-Box配置 安装Sing-Box(从GitHub或Play Store) 创建配置文件: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 { "log" : { "level" : "info" } , "dns" : { "servers" : [ { "tag" : "google" , "address" : "8.8.8.8" } ] } , "inbounds" : [ { "type" : "tun" , "tag" : "tun-in" , "inet4_address" : "172.19.0.1/30" } ] , "outbounds" : [ { "type" : "hysteria2" , "tag" : "hy2-out" , "server" : "hysteria.example.com" , "server_port" : 443 , "password" : "YourPassword123" , "up_mbps" : 50 , "down_mbps" : 100 } ] , "route" : { "rules" : [ { "geoip" : [ "cn" ] , "outbound" : "direct" } ] , "final" : "hy2-out" } }
4.6.2 v2rayNG配置 打开v2rayNG 点击右上角"+" → “手动输入配置” 选择类型"Hysteria2" 填写配置: 1 2 3 4 5 6 别名: Hysteria2节点 地址: hysteria.example.com 端口: 443 密码: YourPassword123 上行带宽: 50 下行带宽: 100
4.7 iOS客户端配置 4.7.1 Shadowrocket配置 打开Shadowrocket 点击左上角"+" 类型选择"Hysteria2" 填写配置: 1 2 3 4 5 6 7 类型: Hysteria2 地址: hysteria.example.com 端口: 443 密码: YourPassword123 上传带宽: 20 下载带宽: 100 SNI: hysteria.example.com
4.7.2 Stash配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 proxies: - name: "Hysteria2节点" type: hysteria2 server: hysteria.example.com port: 443 password: YourPassword123 up: "20 mbps" down: "100 mbps" sni: hysteria.example.com proxy-groups: - name: "代理选择" type: select proxies: - "Hysteria2节点" - DIRECT rules: - GEOIP,CN,DIRECT - MATCH,代理选择
4.8 订阅链接格式 Hysteria2支持多种订阅格式:
4.8.1 URI格式 1 2 3 4 hysteria2://YourPassword123@hysteria.example.com :443 ?sni =hysteria.example.com &up =20 &down=100 #节点名称 # 带混淆的格式 hysteria2://YourPassword123@hysteria.example.com :443 ?sni =hysteria.example.com &obfs=salamander&obfs-password=ObfsPassword&up =20 &down=100 #节点名称
4.8.2 Base64格式 1 2 3 4 5 hysteria2:// YourPassword123@hysteria .example.com:443 aHlzdGVyaWEyOi8vWW91clBhc3N3b3JkMTIzQGh5c3RlcmlhLmV4YW1wbGUuY29tOjQ0MyPomZ/pl6jmtYHnoIE=
五、安全性注意事项 5.1 协议安全分析 安全提示 :Hysteria2协议设计时同时考虑了速度和安全性,使用QUIC协议提供强加密。但需要正确配置才能发挥最大效果。
5.1.1 协议安全特点 方面 评估 说明 数据加密 高 QUIC TLS 1.3加密 身份认证 高 支持密码和多用户认证 前向保密 高 TLS 1.3提供完美前向保密 流量伪装 高 HTTP/3伪装+Salamander混淆 抗重放 高 QUIC内置重放保护
5.1.2 安全优势 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 优势1:强加密 ┌─────────────────────────────────────────────────────────────────┐ │ 使用QUIC协议,内置TLS 1.3加密 │ │ → 提供端到端加密 │ │ → 支持完美前向保密 │ └─────────────────────────────────────────────────────────────────┘ 优势2:流量伪装 ┌─────────────────────────────────────────────────────────────────┐ │ HTTP/3伪装 + Salamander混淆 │ │ → 流量看起来像普通HTTPS │ │ → 有效对抗深度包检测 │ └─────────────────────────────────────────────────────────────────┘ 优势3:抗主动探测 ┌─────────────────────────────────────────────────────────────────┐ │ 服务端实现伪装响应 │ │ → 探测请求返回正常网页 │ │ → 难以区分代理服务器 │ └─────────────────────────────────────────────────────────────────┘
5.2 安全加固措施 5.2.1 使用Salamander混淆 1 2 3 4 5 6 7 8 9 10 11 obfs: type: salamander salamander: password: StrongObfuscationPassword obfs: type: salamander salamander: password: StrongObfuscationPassword
5.2.2 多用户管理 1 2 3 4 5 6 auth: type: userpass userpass: admin: AdminStrongPassword user1: User1Password user2: User2Password
5.2.3 配置ACL规则 1 2 3 4 5 6 7 8 9 10 11 # 禁止访问私有网络 reject(10.0.0.0/8) reject(172.16.0.0/12) reject(192.168.0.0/16) # 禁止访问危险服务 reject(all, tcp/25) # SMTP reject(all, tcp/23) # Telnet # 其他流量正常代理 direct(all)
5.2.4 使用证书锁定 1 2 3 4 5 6 tls: sni: hysteria.example.com insecure: false pinSHA256: BA:88:45:17:A1:B2:C3:D4:E5:F6:07:18:29:3A:4B:5C
5.3 日志与监控 5.3.1 配置日志级别 5.3.2 监控脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/bin/bash if ! systemctl is-active --quiet hysteria-server; then echo "Hysteria2 service is down!" | mail -s "HY2 Alert" admin@example.com systemctl restart hysteria-serverfi CONN_COUNT=$(ss -un state established | grep :443 | wc -l)if [ $CONN_COUNT -gt 100 ]; then echo "High connection count: $CONN_COUNT " | mail -s "HY2 Alert" admin@example.comfi
1 2 */5 * * * * /usr/local/bin/hy2-monitor.sh
六、常见问题排查 6.1 连接失败排查 症状 :无法连接到Hysteria2服务器
排查步骤 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ping hysteria.example.com nc -uzv hysteria.example.com 443sudo systemctl status hysteria-serversudo ufw statussudo iptables -L -n | grep 443sudo journalctl -u hysteria-server -n 50 hysteria check -c /etc/hysteria/config.yaml
常见原因及解决方案 :
原因 解决方案 UDP端口未开放 配置防火墙放行UDP端口 服务未启动 启动hysteria服务 密码错误 核对认证密码配置 域名解析失败 检查DNS配置 证书问题 检查TLS证书是否有效 带宽参数错误 调整带宽设置
6.2 速度不稳定问题 症状 :连接成功但速度波动大
排查步骤 :
1 2 3 4 5 6 7 8 9 10 11 12 top htop mtr hysteria.example.com iperf3 -c hysteria.example.com ping -c 100 hysteria.example.com
优化方案 :
问题 解决方案 带宽设置过高 降低带宽参数值 服务器负载高 升级服务器配置 网络丢包严重 适当提高带宽参数 QUIC参数未优化 调整QUIC窗口参数
QUIC参数优化 :
1 2 3 4 5 6 7 quic: initStreamReceiveWindow: 8388608 maxStreamReceiveWindow: 8388608 initConnReceiveWindow: 20971520 maxConnReceiveWindow: 20971520 maxIdleTimeout: 30s keepAlivePeriod: 10s
6.3 握手失败问题 症状 :连接时显示认证失败或握手错误
排查步骤 :
1 2 3 4 5 6 7 8 9 10 11 cat /etc/hysteria/config.yaml | grep -A5 authsudo journalctl -u hysteria-server -f nc -uvz hysteria.example.com 443 openssl s_client -connect hysteria.example.com:443 -servername hysteria.example.com
常见错误信息 :
错误信息 可能原因 解决方案 authentication failed 密码错误 核对密码配置 certificate verify failed 证书问题 检查证书有效性 connection refused 服务未运行 启动服务 timeout 防火墙/网络问题 检查防火墙
6.4 混淆功能问题 症状 :启用Salamander后无法连接
排查步骤 :
1 2 3 4 5 6 7 8 cat /etc/hysteria/config.yaml | grep -A3 obfscat client.yaml | grep -A3 obfs
配置检查清单 :
1 2 3 4 5 6 7 8 9 10 11 12 obfs: type: salamander salamander: password: SamePassword obfs: type: salamander salamander: password: SamePassword
七、总结 7.1 协议优势 高速传输 :基于QUIC的UDP传输,突破TCP限制抗丢包强 :Brutal算法在丢包环境下表现优异部署简单 :一键安装脚本,配置简洁强伪装 :HTTP/3伪装+Salamander混淆功能丰富 :ACL、多用户、流量统计等跨平台 :支持所有主流操作系统安全性高 :TLS 1.3加密,完美前向保密7.2 协议局限 UDP依赖 :需要网络允许UDP传输带宽敏感 :需要正确设置带宽参数客户端支持 :部分客户端需要更新版本资源占用 :相比简单协议略高7.3 适用场景建议 场景 推荐方案 说明 高丢包网络 Hysteria2 + Brutal 发挥抗丢包优势 高速需求 Hysteria2 + 正确带宽 突破TCP速度限制 抗审查场景 Hysteria2 + Salamander 强流量伪装 游戏加速 Hysteria2 UDP支持优秀 多用户管理 Hysteria2 + ACL 灵活用户管理 稳定优先 Hysteria2 + BBR 自适应网络
7.4 推荐配置 最佳实践配置(服务端) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 listen: :443 acme: domains: - your.domain.com email: admin@example.com auth: type: userpass userpass: user1: StrongPassword1 user2: StrongPassword2 obfs: type: salamander salamander: password: ObfuscationPassword masquerade: type: proxy proxy: url: https://www.google.com/ rewriteHost: true quic: initStreamReceiveWindow: 8388608 maxStreamReceiveWindow: 8388608 initConnReceiveWindow: 20971520 maxConnReceiveWindow: 20971520
最佳实践配置(客户端) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 server: your.domain.com:443 auth: StrongPassword1 bandwidth: up: 30 mbps down: 100 mbps obfs: type: salamander salamander: password: ObfuscationPassword socks5: listen: 127.0 .0 .1 :1080 http: listen: 127.0 .0 .1 :8080 tls: sni: your.domain.com insecure: false
参考资料 :