前言
我曾在2022年分享过早期的Hysteria(歇斯底)技术搭建,当时的Hysteria面对复杂多变的网络环境技术并不成熟,而现如今Hysteria2
的再次出现,强大的网络优化以及“卷”的很的性能值得我们去尝试。本文从一键脚本到客户端轻松安装一条龙详细讲述,Hysteria2知识点较多,篇幅有限,这里只挑实用的讲述。
hysteria2一键脚本安装服务端
hysteria2服务端安装
使用finalshell登陆境外VPS,复制以下脚本命令,粘贴到vps终端敲回车即可无人值守,自动安装。
1 |
wget -N --no-check-certificate https://raw.githubusercontent.com/lanhebe/hysteria/master/hy2_onekey_install.sh && chmod +x hy2_onekey_install.sh && ./hy2_onekey_install.sh |
执行该脚本后,安装hysteria2前,脚本会提示输入域名/端口/acme证书选择/密码/邮箱及伪装域名等。如果你没有域名可以选择自签证书方式安装,有域名,必须在安装前做好域名解析服务,其他不选的脚本已为你做好默认选项无压力安装。
hysteria2服务端命令及设置讲解
如果你对安装技术不感兴趣,可以跳过。对hysteria2技术细节感兴趣的,可以直接往下看。
1 2 3 |
nohup ./hysteria-linux-amd64 server & # 启动 hysteria 服务 pgrep -f "hysteria-linux-amd64" # 查看 hysteria 服务PID kill PID # 停止 hysteria 服务 状态 |
- acme证书安装;(需要有域名,并做好解析服务,根据个性设置)
- 自签证书安装;(无需域名,傻瓜安装,适合快速,一路敲回车即可完成)
两种方法只能二选其一,根据脚本操作提示快速安装Hysteria2。
一键脚本安装成功后,配置及相关文件存放在/root/hy2/
,
- clash-mate.yaml ======>clash客户端配置文件
- config.yaml ======>hysteria2运行配置文件
- hysteria-linux-amd64 ======>服务端执行主程序
- neko.txt ======>hysteria2分享链接
- nolup.out ======>运行主程序log日志信息
以下展示acme申请证书和自签证书两种服务端配置json格式,供大家学习。假设服务器IP:107.182.177.8
1.acme配置示例:
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 |
#服务器acme配置: listen: :443 acme: domains: - www.yugogo.xyz email: your@email.com auth: type: password password: z230gDFzpN6bLk0yymdf7+24 masquerade: type: proxy proxy: url: https://bing.com/ rewriteHost: true 客户端acme配置json格式: { "server": "107.182.177.8", "auth": "z230gDFzpN6bLk0yymdf7+24", "bandwidth": { "up": "30 mbps", "down": "100 mbps" }, "tls":{ "sni": "www.yugogo.xyz", "insecure": "false" }, "socks5": { "listen": "127.0.0.1:1080" }, "http": { "listen": "127.0.0.1:8080" } } |
2.自签配置示例:
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 |
#服务端配置: listen: :443 tls: cert: /etc/ssl/private/bing.com.crt key: /etc/ssl/private/bing.com.key auth: type: password password: qmyxSYW0UP2wsE6COoGdGEDAknM masquerade: type: proxy file: dir: /www/masq proxy: url: https://news.ycombinator.com/ rewriteHost: true string: content: hello stupid world headers: content-type: text/plain custom-stuff: ice cream so good statusCode: 200 bandwidth: up: 0 gbps down: 0 gbps udpIdleTimeout: 90s ignoreClientBandwidth: false quic: initStreamReceiveWindow: 8388608 maxStreamReceiveWindow: 8388608 initConnReceiveWindow: 20971520 maxConnReceiveWindow: 20971520 maxIdleTimeout: 90s maxIncomingStreams: 1800 disablePathMTUDiscovery: false #客户端配置: "server": "107.182.177.8:443", "auth": "qmyxSYW0UP2wsE6COoGdGEDAknM", "tls": { "sni": "bing.com", "insecure": true }, "socks5": { "listen": "127.0.0.1:10808" }, "http": { "listen": "127.0.0.1:10809" } } |
hysteria2客户端安装使用
Mac/Windows使用方法
目前支持Windows,Mac的hysteria2客户端,这里推荐下载使用Furious-0.2.13-windows-x86_64,Furious-0.2.13-macOS-11.0-x86_64,更多版本详见:Furious页面。
下载完毕,自行安装后,启动Furious客户端,这里以Mac演示为例:
- 点选小火箭图标,选择“导入”,“从剪贴板导入分享链接”
- 点选小火箭图标,点击“编辑配置”,鼠标右键“从剪贴板导入分享链接”
以上两种方法都可以轻松实现节点的顺利导入,最后点击“连接”。
(如果小火箭图标变红色,证明节点已成功激活,反之,蓝色即连接失败。)
Android使用方法
安卓强烈推荐使用NekoBoxForAndroid客户端,因为支持端口跳跃,并且可以设置跳跃间隔时间。
因NekoBoxForAndroid无法通过hysteria2的节点链接导入,所以只能通过手动配置增加节点,自签证书配置如下图:
IOS使用方法
苹果手机推荐使用Streisand,推荐理由:不花钱,免费使用。
下载方法:打开苹果手机的App stores,搜索“Streisand”,找到并安装即可。
使用方法:打开Streisand,点击“+”,新增节点;“手动配置”或“扫描二维码”;
手动配置如下图:
扫描二维码其实很简单,打开支持二维码的客户端分享二维码,扫码即可添加节点,这里以Furious分享二维码为例,如下图:
打开Furious的“编辑配置”,选中节点,鼠标右键“导出为二维码”,使用Streisand扫描二维码进行添加即可。
软路由使用方法
略--------后续更新
hysteria2端口跳跃
顾名思义,程序不再使用唯一一个固定的端口号通信,而是使用一定范围的端口号随机抽取使用,并且可以根据时间间隔更改端口号。说白了类似动态端口。正好逃避网络供应商针对UDP阻断或限速,因为这些限制往往仅限单个端口。端口跳跃可用作此情况的解决方法。
hysteria2端口跳跃通信流程
hysteria2客户端====(随机端口号)====>>境外VPS的防火墙====(目标转发)====>>hysteria服务端443端口号====>>代理上网。
hysteria2端口跳跃示例
hysteria2服务端使用博文指定的一键脚本安装,提示是否启用端口跳跃,选择“1”,启用端口跳跃;
输入起始端口号和尾端端口号(如10000~20000),不能输入与系统冲突的0~1023,还有一些特定端口号外,均可自行设定。
服务端实际并没有在hysteria2上接收端口跳跃服务,而是交给iptables防火墙处理,由nat表筛选符合条件转发给hysteria 443端口接收。(当网络流量只要是10000~20000范围的任意值,就能实现目标转发,反之,则过滤不转发。)
输入:iptables -t nat -nvL
即可查看vps防火墙是否启用端口转发,以下展示端口转发状态。
1 2 3 4 |
# IPv4 iptables -t nat -A PREROUTING -i eth0 -p udp --dport 10000:20000 -j DNAT --to-destination :443 # IPv6 ip6tables -t nat -A PREROUTING -i eth0 -p udp --dport 10000:20000 -j DNAT --to-destination :443 |
hysteria2客户端直接使用Frious和NekoBoxForAndroid,目前支持端口跳跃功能的客户端,仅支持Windows/Mac/安卓版,如果有更多的发现,欢迎留言指正。
以下是NekoBoxForAndroid客户端配置详解下图:
由于Frious配置文件格式是json,如果需要增加跳跃间隔时间配置,就需要把官方的yaml配置转换成json,这里推荐大家使用yq下载安装,再进行转换。
json==转换==>>>yaml命令:(cc为待转换文件)
yaml==转换==>>>json命令:
以下是yaml转换json示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
PS C:\Users\yy\Downloads> .\yq_windows_amd64.exe -Poj .\cc.yaml { "server": "proxy.yugogo.xyz:10000-20000", "auth": "me6OtdXjLhUDtIz5u0ohHl3m2k", "tls": { "sni": "proxy.yugogo.xyz", "insecure": false }, "socks5": { "listen": "127.0.0.1:10808" }, "http": { "listen": "127.0.0.1:10809" }, "transport": { "udp": { "hopInterval": "30s" } } } |
hysteria2带宽行为讲解
按照官方说法,hysteria2的上下行速度需要用户根据自身网络环境设定,如果不启用,则一律使用BBR协议通信,这里优选启用hysteria2独有的功能(Brutal)。脚本默认是在服务端加入带宽上下传速度为零配置,表示启用Brutal算法提速,但不做任何速度限制,强烈建议使用该方法!
如果喜欢折腾的,用户可根据全天上/下午/晚上分别使用https://www.speedtest.net/测速全天各时间段的最大上下行速度值,然后求个平均值,建议使用平均值设定hysteria2的带宽大小。(设置过大可能会由于网络拥塞网速更慢,设置过小等于限速。),大家可以在服务端找到/root/hy2/config.yaml中,自行修改。
更多hysteria2带宽使用说明详见官方文档。
hysteria2参考链接
Hysteria 2下载:https://github.com/apernet/hysteria/releases
Hysteria 2文档:https://v2.hysteria.network/zh/
Furious客户端文档:https://github.com/LorenEteval/Furious
Android客户端(NekoBoxForAndroid):https://github.com/MatsuriDayo/NekoBoxForAndroid
IOS客户端(Streiand):略。
这个怎么开启啊,好像开启的命令不对