#quic #command-line-tool #tunnel #reverse #certificate #protocols #connection

nightly app snocat-cli

流式网络覆盖连接仲裁隧道

29 个版本

0.8.0-alpha.52023年10月18日
0.8.0-alpha.42023年2月9日
0.7.0 2022年10月29日
0.5.0-alpha.52022年3月3日
0.1.2 2021年3月2日

#34 in #reverse

MIT/Apache

390KB
10K SLoC

SNOCAT-CLI

流式网络覆盖连接仲裁隧道

Crates.io License: MIT License: Apache 2.0

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-cliPEM 证书上操作。


开发

对于调试用途,支持 SSLKEYLOGFILERUST_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中找到。

依赖项中与MITMIT OR Apache 2.0许可不同的显著例外如下

  • ring用于TLS,以BoringSSL变体分发,采用ISC风格的开源许可
  • untrustedring的依赖,用于解析TLS,以ISC风格的开源许可分发
  • webpki用于TLS WebPKI证书处理,以ISC风格的开源许可分发
  • memchrbyteorderregex-automata采用Unlicense OR MIT许可
  • prostprost-typesprost-deriveprost-build仅采用Apache-2.0许可
  • ryuserde_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许可证中定义,应双重许可如上所述,不附加任何额外条款或条件。

依赖项

~21–34MB
~607K SLoC