视频教程
youtube播放地址:https://youtu.be/CXj-ID33MhU
相关链接
v2rayN 下载:https://github.com/2dust/v2rayN/releases/latest
Hysteria 2下载:https://github.com/apernet/hysteria/releases
Hysteria 2文档:https://v2.hysteria.network/zh/
sing-box文档:https://sing-box.sagernet.org/zh/
Android客户端(SFA):https://install.appcenter.ms/users/nekohasekai/apps/sfa/distribution_groups/publictest
IOS客户端(TestFlight):https://testflight.apple.com/join/AcqO44FH (1.5.0 beta版支持Hysteria 2)
IOS客户端(AppStore):https://apps.apple.com/us/app/sing-box/id6451272673 (暂不支持Hysteria 2)
服务器相关指令
#一键安装Hysteria2
bash <(curl -fsSL https://get.hy2.sh/)
#生成自签证书
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 36500 && sudo chown hysteria /etc/hysteria/server.key && sudo chown hysteria /etc/hysteria/server.crt
#启动Hysteria2
systemctl start hysteria-server.service
#重启Hysteria2
systemctl restart hysteria-server.service
#查看Hysteria2状态
systemctl status hysteria-server.service
#停止Hysteria2
systemctl stop hysteria-server.service
#设置开机自启
systemctl enable hysteria-server.service
#查看日志
journalctl -u hysteria-server.service
服务器配置文件
cat << EOF > /etc/hysteria/config.yaml
listen: :443 #监听端口
#使用CA证书
#acme:
# domains:
# - a.com #你的域名,需要先解析到服务器ip
# email: [email protected]
#使用自签证书
#tls:
# cert: /etc/hysteria/server.crt
# key: /etc/hysteria/server.key
auth:
type: password
password: 123456 #设置认证密码
masquerade:
type: proxy
proxy:
url: https://bing.com #伪装网址
rewriteHost: true
EOF
客户端配置文件
server: ip:443
auth: 123456
bandwidth:
up: 20 mbps
down: 100 mbps
tls:
sni: a.com
insecure: false #使用自签时需要改成true
socks5:
listen: 127.0.0.1:1080
http:
listen: 127.0.0.1:8080
sing-box配置文件(Android/IOS)
{
"dns": {
"servers": [
{
"tag": "cf",
"address": "https://1.1.1.1/dns-query"
},
{
"tag": "local",
"address": "223.5.5.5",
"detour": "direct"
},
{
"tag": "block",
"address": "rcode://success"
}
],
"rules": [
{
"geosite": "category-ads-all",
"server": "block",
"disable_cache": true
},
{
"outbound": "any",
"server": "local"
},
{
"geosite": "cn",
"server": "local"
}
],
"strategy": "ipv4_only"
},
"inbounds": [
{
"type": "tun",
"inet4_address": "172.19.0.1/30",
"auto_route": true,
"strict_route": false,
"sniff": true
}
],
"outbounds": [
{
"type": "hysteria2",
"tag": "proxy",
"server": "ip",
"server_port": 443,
"up_mbps": 20,
"down_mbps": 100,
"password": "123456",
"tls": {
"enabled": true,
"server_name": "a.com",
"insecure": false
}
},
{
"type": "direct",
"tag": "direct"
},
{
"type": "block",
"tag": "block"
},
{
"type": "dns",
"tag": "dns-out"
}
],
"route": {
"rules": [
{
"protocol": "dns",
"outbound": "dns-out"
},
{
"geosite": "cn",
"geoip": [
"private",
"cn"
],
"outbound": "direct"
},
{
"geosite": "category-ads-all",
"outbound": "block"
}
],
"auto_detect_interface": true
}
}
视频文稿(忽略)
去年5月份我做过一期歇斯底里节点搭建教程,当时确实惊艳到我了,再烂的线路都能得到不错的速度提升,最近歇斯底里更新到了2.0版本,大幅提升了性能和稳定性,支持反代伪装,增加抗审查能力,由于改动巨大,现在的第二代和之前的第一代完全不兼容,应作者toby大佬的邀请,本期就来讲讲歇斯底里为什么可以大幅提升网速,以及歇斯底里第二代的详细搭建和使用教程,让你的垃圾线路vps继续焕发第二春
歇斯底里是底层传输基于udp的加密代理协议,对比目前使用的ss、vmess、vless、trojan等协议,歇斯底里在绕过防火墙审查的同时还能大幅提升上网速度,这是因为歇斯底里修改了quic的拥塞控制算法
我们都知道网络的带宽资源是有限的,比如我家是100m的带宽,说明我的下载速度被运营商限制最多只能跑到100Mbps,但实际上我并不能全天候满速100M下载,尤其是在晚高峰期间,因为我们发送到目标服务器的数据包会经过很多路由器的转发,这些路由器虽然性能很高,但也有极限,如果同时发送数据的人太多了,路由器来不及处理,或者链路的带宽容量不够,就会出现拥堵丢包的情况,这种情况通常出现在国际出口位置,具体表现就是高延迟,高丢包率,我们访问网站用的http协议目前大部分情况下是使用tcp,包括我们常用的ss、vmess等代理协议底层传输默认也都是tcp,在tcp这种面向连接的可靠传输协议下,当出现丢包时会主动降低发送速率,来缓解网络拥塞的情况,所以网速就会变慢,至于怎么控制发送速率是根据拥塞控制算法来决定的,比如我们熟知的bbr,cubic等,大家都遵守拥堵就降低发送速率的君子协议,对大家都相对公平
随着网速的大幅提升和移动互联网的兴起,tcp设计过于复杂的弊端越来越明显,要改进TCP性能必须对操作系统内核进行修改,这过程非常繁琐并且难以普及,以前安装过bbr或者锐速的朋友应该深有体会,而udp的设计很简单,没有拥塞控制,也没有可靠传输,相当于只是给ip协议加了个端口,在udp的上层实现协议无需改动操作系统内核,会更容易推广开,所以udp越来越被重视,
我们上网用的http协议正在慢慢向http3过渡,而http3用的quic协议就是基于udp,quic在udp之上实现了可靠传输和拥塞控制,当我们使用http3访问网站的时候,如果链路上发生了拥堵出现丢包,和tcp一样,quic会使用bbr或者cubic拥塞控制算法主动降低发送速率,来缓解拥堵的情况
但如果在发生拥堵时不降低发送速率呢?类似我们可以通过修改tls的实现得到xtls,我们也可以通过修改quic的拥塞控制来得到歇斯底里,歇斯底里可以让我们在配置文件中手动设置发送速率和接收速率,如果链路发生了拥堵,其他quic用户的拥塞控制是bbr或者cubic,会主动降低发送速率,而歇斯底里用的 拥塞控制算法不管网络是否拥堵,始终按照我们在配置中设定的速率收发数据,当别人降速避让的时候,我们全速发送,在尽力而为的交付规则下,这样能抢占更多的带宽,实现网络提速,这就是歇斯底里能大幅提升网速的原因。
可能有些朋友会觉得这种行为不道德,因为链路的带宽是有限的,大家都遵守拥堵就降速的他好我也好规则,而歇斯底里还是按固定速率发送数据抢占带宽,造成不公平的现象,如果人人都这样做的话那整个互联网都没法正常运作了,从这个角度来看确实不太合适,但话又说回来,歇斯底里不是破解运营商的带宽速率限制,也不是通过多倍发包这种浪费资源的方式来提速,而是加快发送他原本应该发送的数据来达到提速效果,如果当前链路的丢包率很小,说明网速本身就比较快,那么用歇斯底里也不会带来多大的速度提升,如果能感受到网速大幅提升,说明当前链路本身就存在高丢包率,使用歇斯底里的目的就是在这种本身就非常差的网络环境下能提升网速,至于为什么丢包率这么高,我想应该要问运营商。
所以这种行为是否不道德就仁者见仁了,如果你只是想多一种绕过防火墙审查的方法,歇斯底里第二代也支持传统的bbr拥塞控制,这个我们待会再来细说
接下来正式开始搭建教程,我已经连接到了我的vps,操作系统为ubuntu22.04
首先执行官方的一件安装脚本,这些用到的所有指令我都会放在视频下方的说明栏,显示这三行红字就表示安装成功,接着复制这条指令执行,将其设置为开机自启,然后执行这条指令生成自签证书
接着设置配置文件,我给大家提供的配置文件默认设置的端口是443,认证密码是123456,伪装网址是bing.com,这三项大家可以按自己的需求修改,如果你有自己的域名,可以使用CA证书,没有的话可以使用自签证书,先演示使用ca证书,跟着视频演示将这几行前面的#号删掉,这里改成你的域名,确保域名已经解析到了当前vps的ip,下面的email可以设置为你自己的邮箱,也可以直接在这里加几个随机字符
设置好之后将其全部选中,粘贴到vps上执行,接着就可以启动服务了,先来查看一下当前的运行状态,inactive表示没有启动,使用restart或者start指令启动,执行之前我们需要先退出当前的查看状态,按字母q退出,然后再执行重启指令,重新查看状态,显示active,表示已经成功启动,但并不一定可以使用了,因为下面的日志还没有出现serve up and running的提示,目前正在使用acme进行证书申请,大家需要耐心等待一下,可以看到出现了错误提示,并且再次查看状态显示hy已经退出,这种情况大概率是因为申请证书需要用到tcp的80和443端口,而我的防火墙没有开放端口导致的,如果你的服务器没有什么敏感服务,可以和我一样直接关闭防火墙,或者自行搜索怎么放行指定端口,此时需要重新执行restart指令启动服务,可以看到最后一条日志是server up,这样就成功运行了,如果你申请证书遇到了麻烦,或者没有自己的域名,可以使用自签证书的方式,
将这几行重新注释,然后删除这三行的#号,全选复制到vps执行,这样就替换了原来的配置文件,修改配置文件之后记得要重新启动服务,这样也可以正常运行,日志显示server up,服务器这边就算是配置好了
接着进行客户端的配置,先演示windows系统,首先下载v2rayN,下载zz开头的压缩包,下载之后将其解压出来,接着下载hy2,点击这里显示更多,选择合适的windows版本,跟着视频演示找到这个目录,将刚才下载的hy2拖进去,替换掉原来的文件,打开v2rayN,来到客户端配置文件,服务器的ip和端口按你设置的填写,密码要和服务器配置的一致,如果你用的是ca证书,这里填入你的域名,insecure为false,如果你是自签证书,这里填入伪装网址,insecure要改成true,下面是本地的socks端口和http端口,我们需要详细讲讲bandwidth带宽部分,这也是很多朋友不太清楚的地方
先要明白客户端的上传速率up对应了服务器的下载速率down,客户端的下载速率down对应了服务器的上传速率up,也就是你发给服务器的数据,对于你来说是上传行为,而对于服务器来说是下载行为,反之亦然,这点相信大家没什么疑问。
假设客户端我们设置的上传up是20M,下载down是100M,服务器端设置的上传up是50M,下载down是10M
首先协商认证阶段,客户端会将自己的密码和下载速率发给服务器,服务器拿到密码后认证通过,拿到客户端的下载速率是100M,会和自己的上传速率50M进行比较,发现自己的比较小,于是会按照自己速率上传数据给客户端,所以客户端的下载速率最快是50M,同时服务器会将自己的下载速率10M发给客户端,客户端收到后会和自己的上传速率20M进行比较,发现是服务器的比较小,所以客户端的上传速率最快是10M,最终协商出来的速率就是客户端以10M的速率上传数据,并且以50M的速率下载数据
但是我们刚才服务端的配置文件没有设置带宽限制,没有设置就相当于没有限制,会以客户端的设置为准,最终的速率就是客户端以20M的速率上传数据,并且以100M的速率下载数据
还有一种情况是客户端没有设置速率,则会按传统的bbr拥塞控制算法来自动调整发送和接收的速率,另外即使客户端有设置速率,服务端也可以通过ignoreClientBandwidth参数来忽略客户端的带宽设置,强制启用bbr拥塞控制
如果你是个人使用的话,服务端可以不用设置速率限制,由客户端来设置,如果你不清楚家里的带宽,可以先不挂代理,使用本地网络测个速来获取最大发送和接收速率,将其填入即可,如果要使用传统的bbr拥塞控制,可以将上传和下载都改成0,或者直接删掉这段配置
如果你觉得网速够用就行,可以不用按最大速率填写,自己设置一个比较合理的值即可,比如想要流畅观看4k视频50M的下行速率足够了,还能防止速率过大被运营商或者vps商家怀疑在发起攻击而被限制
将配置全选复制,新建一个文本文件,将内容粘贴进去,点击保存,在v2rayN中添加一个自定义配置服务器,随便给个别名,选择我们刚才创建的文件,内核选择hy,socks端口填写hy配置文件里的socks端口1080,由于官方内核客户端没法分流,在这里填了端口之后我们就可以利用v2rayN的分流配置了,其效果相当于我们的数据先发给v2rayN的10808端口,v2rayN进行分流配置,需要代理的流量就发给歇斯底里的1080端口,点击确定,将其设为活动服务器,然后设置为自动配置系统代理,此时应该就能科学上网了,简单测个速,可以看到速率强行拉到了我们在配置文件中设置的带宽,如果用tcp代理协议的话这台机子只能跑到10M,提升那是相当明显
你也可以使用管理员权限运行v2rayN,这样就能启用tun模式,同样也可以正常使用,至于tun模式有什么用可以回看我之前的代理模式篇
除了官方内核,目前只有sing-box支持二代歇斯底里,所以如果想要使用手机客户端,只有singbox一种选择,首先演示android端,进入这个网址下载sing-box for android的安装包,选择第一个,将其安装到你的手机,跟着视频演示进入profile创建一个新的配置文件,将里面的内容删除,来到我给大家提供的配置文件,这里改成你vps的ip地址,端口我这里是443,带宽速率建议在手机上重新测试一遍,我这里视频演示就按电脑上测的速率写了,密码要和服务器对应,如果你用的是ca证书,这里填入你的域名,insecure为false,如果你是自签证书,这里填入伪装网址,insecure要改成true
我给大家提供的这个singbox配置文件分流规则是类似v2rayN的绕过大陆模式,如果你有其他分流需求,请自行参考sinbox的官方文档进行配置
修改好之后全选复制,粘贴到手机里,会自动保存,可以点击check检查语法是否有错误,没有提示说明配置无误,回到主界面,点击右下角的启动,第一次启动会自动下载一些文件,需要耐心等待,启动之后就可以正常的科学上网了
接着演示ios端的使用方式,由于sinbox1.5在我录制视频的时候还没有发布正式版本,appstore中的还是1.4的版本,暂不支持第二代歇斯底里,所以我们使用tf版,先安装testflight, 接着点击开始测试,tf版的singbox目前是1.5beta7,支持hy2,点击安装,打开之后先点击这里安装vpn配置,进入profile,创建一个配置文件,同样先将里面的内容删除,配置文件和安卓是一样的,点击右上角的save进行保存,回到主界面,启动vpn,尝试访问谷歌,这就是在iphone端的使用方式
至于软路由用户的话,请自行升级passwall或ssrp,参考本期内容进行相关配置,我这里条件有限就不给大家演示了。
最后再说一下伪装问题,如果直接在浏览器中访问你的域名,是无法正常显示伪装网址的,但这不代表伪装失败了,因为现在的浏览器默认情况下都是发起基于tcp的http2协议,而我们的伪装是基于udp的http3协议,所以无法正常访问,可以使用curl工具发起http3请求,来简单验证这个现象,可以正常访问伪装网址bing.com,作者会在后续的2.1版本中加入tcp监听,到时候就可以直接在浏览器里验证伪装了。关于hy2其他更多特性请阅读官方文档,有非常详细的说明,比如可以解决端口被限速的端口跳跃,或者可以配置二级代理实现解锁奈飞的ACL访问控制等进阶玩法