29 个版本
0.8.0-alpha.5 | 2023年10月18日 |
---|---|
0.8.0-alpha.4 | 2023年2月9日 |
0.7.0 | 2022年10月29日 |
0.5.0-alpha.5 | 2022年3月3日 |
0.1.2 | 2021年3月2日 |
#34 in #reverse
390KB
10K SLoC
SNOCAT-CLI
流式网络覆盖连接仲裁隧道
snocat-cli
是一个基于 QUIC 协议 的 TCP 反向隧道的命令行工具。它允许类似于 SSH 远程转发的小规模端口重定向。
用法
启动服务器
snocat-cli server \
--cert $SERVER_CERT_PUB_PEM \
--key $SERVER_CERT_PRIV_PEM \
--quic 127.0.0.1:9090 \
--ports 8080:8090
绑定到服务器
snocat-cli client \
--authority $AUTHORITY_CERT_PUB_PEM
--driver localhost:9090 \
--target $TARGET \
--san localhost
证书生成
由于 QUIC
需要证书才能运行,snocat-cli
包含了一个用于生成自签名证书的工具,尽管它主要用于开发,但在不需要完整 WebPKI
的情况下,也可以在生产环境中使用。
有关自签名证书生成的说明,请参阅 snocat-cli cert --help
。
snocat-cli
不使用系统证书注册表来验证证书,只使用您提供的证书作为权威机构。
请注意,权威机构可以是一个链,其中签名的顺序显示服务器选择的证书已被给定的权威机构信任。
对于超出此工具范围的事情,openssl
是证书生成和管理的事实上的解决方案。 snocat-cli
在 PEM
证书上操作。
开发
对于调试用途,支持 SSLKEYLOGFILE
和 RUST_LOG
参数。
SSLKEYLOGFILE
允许使用 Wireshark TLS 解密和 QUIC 解析进行拦截。
例如,可以使用以下命令行进行 snocat-cli
调试:
SSLKEYLOGFILE=~/keylog.ssl.txt RUST_LOG="trace,quinn=warn,quinn_proto=warn" \
cargo run -- client --authority $SERVER_CERT \
--driver localhost:9090 \
--target $TARGET \
--san localhost
请参阅官方项目仓库中的 CONTRIBUTING.md 以获取更多开发和贡献指南。
第三方依赖项
主要用于异步功能的主要 crate 包括 Tokio 堆栈 和 futures-rs,以及用于其 QUIC 实现的 Quinn。
其他各种依赖项在各自的许可证下包含,可以在Cargo.toml中找到。
依赖项中与MIT或MIT OR Apache 2.0许可不同的显著例外如下
ring
用于TLS,以BoringSSL变体分发,采用ISC风格的开源许可untrusted
是ring
的依赖,用于解析TLS,以ISC风格的开源许可分发webpki
用于TLS WebPKI证书处理,以ISC风格的开源许可分发memchr
、byteorder
、regex-automata
采用Unlicense OR MIT许可prost
、prost-types
、prost-derive
和prost-build
仅采用Apache-2.0许可ryu
是serde_json
的依赖,用于从json解析浮点数,采用Apache-2.0 OR BSL-1.0许可
有关各个crate的许可细节及其项目网页的链接,请参阅NOTICE.md。
商标
此项目可能包含项目、产品或服务的商标或徽标。Microsoft商标或徽标的授权使用必须遵守并遵循Microsoft的商标 & 品牌指南。在此项目的修改版本中使用Microsoft商标或徽标不得引起混淆或暗示Microsoft的赞助。任何第三方商标或徽标的用途均受该第三方政策的约束。
行为准则
本项目采用了Microsoft开源行为准则。有关更多信息,请参阅行为准则FAQ或联系[email protected],如有任何额外问题或评论。
许可
版权所有(c)Microsoft公司。保留所有权利。
根据以下任一许可
- Apache许可证,版本2.0 (LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
贡献
根据贡献者许可协议,任何有意提交给工作以供包含在内的贡献,如Apache-2.0许可证中定义,应双重许可如上所述,不附加任何额外条款或条件。
依赖项
~21–34MB
~607K SLoC