HTTP/3是第三个主要版本的HTTP协议。与其前任HTTP/1.1HTTP/2不同,在HTTP/3中,将弃用TCP协议,改为使用基于UDP协议的QUIC (Quick UDP Internet Connections)协议实现。http3在2022年正式标准化,也算是比较新的协议了。

Untitled 12

TUIC特性

  • 1-RTT TCP 中继

  • 0-RTT UDP 中继,且 NAT 类型为 FullCone

  • 在用户空间的拥塞控制,也就是说可以在任何系统平台实现双向的 BBR

  • 两种 UDP 中继模式: native (原生 UDP 特性,数据仍被 TLS 加密)和 quic (100% 送达率,每个包单独单独作为一个 QUIC “流”,一个包的确认重传不会阻塞其它包)

  • 完全多路复用,服务器和客户端之间始终只需要一条 QUIC 连接,所有任务作为这个连接中的 “流” 进行传输(一个流的暂时阻塞不会影响其它流),所以除连接第一个中继任务外的其它任务都不需要经过 QUIC 握手和 TUIC 的鉴权

  • 网络切换时的会话平滑转移,例如在从 Wi-Fi 切换到移动数据时连接不会像 TCP 一样直接断开

  • 0-RTT 、与中继任务并行的鉴权

  • 支持 QUIC 的 0-RTT 握手(开启之后能达到 真・ 1 -RTT TCP 和 0-RTT UDP ,但是就算不开启,多路复用的特性也能保证在绝大多数情况下 1-RTT 和 0-RTT )

    Untitled 1 2

tuic与Hysteria2是基于QUIC通信协议,从协议栈可以看出,QUIC = HTTP/2 + TLS +UDP。它使用 UDP 而不是 TCP 作为传输协议,并且在设计上考虑了提供多路复用和流控制功能。而Hysteria2协议旨在伪装成标准的 HTTP/3 流量,无论中间人还是主动探测,都很难分辨和封锁。但基于UDP的话容易面临运营商的QoS,尤其是Hysteria2,暴力发包也容易被误认为是攻击。相较与hysteria2,TUIC-V5更加温和一点,速度虽然稍慢一点,但不容易被QoS。

TUIC-V5部署

TUIC v4/v5一键脚本,无需过多解释。

bash <(wget -qO- https://gitlab.com/rwkgyg/tuic-yg/raw/main/tuic.sh 2> /dev/null)

bash <(curl -Ls https://gitlab.com/rwkgyg/tuic-yg/raw/main/tuic.sh)

Untitled 2 3

美国节点 油管4K速率

Untitled 3 3

Hysteria2部署

hy2 家宽500M测速

Untitled 4 2

VPS服务器配置

#一键安装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](http://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

修改hysterica2配置文件==(有域名情况),修改为配置一般重启下服务。==

cat << EOF > /etc/hysteria/config.yaml
listen: :443 #监听端口

acme:
domains:
- 域名 #你的域名,需要先解析到服务器ip
email: 随便填

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

auth:
type: password
password: 你的密码 #设置认证密码

masquerade:
type: proxy
proxy:
url: https://bing.com #伪装网址
rewriteHost: true
EOF

!可选 !修改hysterica2配置文件==(无域名情况),修改为配置一般重启下服务。==

cat << EOF > /etc/hysteria/config.yaml
listen: :443 #监听端口

\#acme:
# domains:
# - 域名 #你的域名,需要先解析到服务器ip
# email: 随便填

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

auth:
type: password
password: 你的密码 #设置认证密码

masquerade:
type: proxy
proxy:
url: https://bing.com #伪装网址
rewriteHost: true
EOF

使用:

客户端配置,创建一个txt文件

server: ip地址:端口号 #域名或ip地址
auth: 你的密码

bandwidth:
up: 10 mbps
down: 100 mbps

tls:
sni: bing.com
insecure: true #使用自签时需要改成true

socks5:
listen: 127.0.0.1:1080
http:
listen: 127.0.0.1:8080

备注:需要提前测速根据使用环境来配置上传与下载带宽,Hysteria2非常暴力,会暴力发包,将速度强行拉满带宽。

V2ray内添加自定义服务器,选择txt文件,1080端口,最好关闭日志避免断流。当然也可以直接添加一个hy2服务器,不用上述的客户端配置文件。

Untitled 5 2

==备注==:可能需要下载最新hy2内核替换进v2rayN内,目录是v2rayN-With-Core\bin\hysteria2\

https://github.com/apernet/hysteria/releases/

Hysteria2优化-L1

可以配置端口跳跃,将20000至50000的端口转发到443,躲避运营商的QoS

iptables -t nat -A PREROUTING -p udp --dport 20000:50000 -j DNAT --to-destination :443

尽管可以配置20000到50000的端口跳跃,但是一旦使用中的端口被运营商QoS,需要有几秒或者几十秒的时间进行等待确认与切换,还是会造成一定的断流情况,影响使用。

客户端配置依旧,端口改成20000-50000

Hysteria2优化-L2

配置少量几条端口跳跃,端口随机生成。

iptables -t nat -A PREROUTING -p udp --dport 61699 -j DNAT --to-destination :443
iptables -t nat -A PREROUTING -p udp --dport 41754 -j DNAT --to-destination :443
iptables -t nat -A PREROUTING -p udp --dport 49284 -j DNAT --to-destination :443
iptables -t nat -A PREROUTING -p udp --dport 64694 -j DNAT --to-destination :443
iptables -t nat -A PREROUTING -p udp --dport 36118 -j DNAT --to-destination :443
iptables -t nat -A PREROUTING -p udp --dport 55223 -j DNAT --to-destination :443
iptables -t nat -A PREROUTING -p udp --dport 65378 -j DNAT --to-destination :443
iptables -t nat -A PREROUTING -p udp --dport 51489 -j DNAT --to-destination :443
iptables -t nat -A PREROUTING -p udp --dport 48041 -j DNAT --to-destination :443
iptables -t nat -A PREROUTING -p udp --dport 58959 -j DNAT --to-destination :443

然后通过OpenWRT的passwall等进行一个负载均衡设置,进行更快的切换避免断流,类似Clash或移动端的小火箭也可以进行负载均衡配置。

passwall负载均衡配置

开启passwall内负载均衡开关,配置密码端口等

Untitled 7 2

添加负载均衡的节点,其余配置无需动,同一端口一组。

Untitled 8 2

进入负载均衡界面可以看到绿色Up。

Untitled 9 2

返回节点列表添加一个负载均衡节点。

Untitled 10 2