本帖最后由 dunce 于 2021-7-21 21:22 编辑
之前写的废话都删掉了。这只是个中转程序,没有实现任何代理协议。不要无端联想- -。
仓库地址: https://github.com/zephyrchien/midori
Updates:
==========7.21==========
跑路.jpg
==========7.17==========
添加了tls支持,可配置项目如下:
(c) tls version
(c) alpn
(c) sni
(c) skip verify
(c) 0-rtt (early data)
(s) tls version
(s) allowed alpn
(s) ocsp stapling
证书:
client 可选 系统证书/firefox内置证书/自定义证书
server 可以用证书文件,或者生成自签证书(通过配置文件指定CN)
存在的问题:
rustls不支持老的ec证书,像这种
- -----BEGIN EC PRIVATE KEY-----
- -----END EC PRIVATE KEY-----
复制代码
得把它转成pkcs8格式:- openssl openssl pkcs8 -topk8 -nocrypt -in <old> -out <new>
复制代码
配置文件格式没动,单独添加了"tls"项目
- endpoint.(listen|remote).tls
- // server
- "tls": {
- "version": ["tlsv1.3", "tlsv1.2"], // 默认值
- "alpns": ["http/1.1"], // 默认不启用此ext
- "cert": "fullchain.cer",
- "key": "key.pem" // 如果cert key名字一样,则将其作为自签证书的CN
- "ocsp": "domain.ocsp" // 默认不开启
- }
- // client
- "tls": {
- "version": ["tlsv1.3"],
- "sni": "example.com", // 默认开启,缺省时自动补全为addr
- "alpns": ["h2", "http/1.1"],
- "roots": "firefox", // firefox(default), native, or file
- "skip_verify": false, // 默认不跳过
- "enable_sni": true, // 默认开启,可以显式关闭
- "enable_early_data": true, // 默认不开启
- }
复制代码
这次顺便给配置文件设置了默认值,现在只有addr为必填项目。net默认为tcp, trans默认为plain, tls默认为none。如果只填写地址的话,就成了一个兹词零拷贝的TCP转发工具
========== 7.16 ==========
已经支持的协议有:
- tcp
- unix socket
- websocket over tcp
- websocket over uds
复制代码
在linux机器上tcp或者uds可以零拷贝
后面会加上tls/h2/quic,支持自定义headers。
配置文件暂时长这样 https://paste.ubuntu.com/p/ZbtgMgvSm4 [tcp->ws over uds -> tcp]
在我机器上能跑16Gbs (单独ws也差不多;tcp和uds因为零拷贝的缘故,可以跑到40Gbs)
以后配置文件会支持toml,可能我还会单独实现个配置文件编辑器。
仓库地址: https://github.com/zephyrchien/midori 文档以后再补吧。。看个番睡觉去了 |