Skip to content

abersheeran/http2tcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

http2tcp

将 HTTP 链接转换为 TCP 通道。参考了 http2tcp 的实现。

安装

在 GitHub release 页面下载 GitHub action 自动构建发布的二进制文件,或者自行构建。

使用

如下命令产生的结果:服务端监听 8080 端口,客户端将 8081 端口的 TCP 链接转发到服务端的 6379 端口。

./http2tcp server -l :8080 -a longlongauthtoken
./http2tcp client -s serverhost:8080 -a longlongauthtoken -t 127.0.0.1:6379 -l 127.0.0.1:8081

作为 sshProxyCommand 使用

./http2tcp client -s serverhost:8080 -a longlongauthtoken -t 127.0.0.1:22 -l -

原理

HTTP 规范里,携带 Upgrade 头的请求可以将 HTTP 协议的链接转换为其他协议的链接,在服务端返回 101 状态码之后,链接经过的七层代理服务(例如 nginx)将转变为四层代理。http2tcp 利用这一点,将 HTTP 链接转换为加密的 TCP 通道。