Mygod/slipstream-rust

GitHub: Mygod/slipstream-rust

一个用Rust实现的高性能DNS隧道工具,通过DNS查询和响应封装传输QUIC数据包来建立隐蔽通信通道。

Stars: 361 | Forks: 99

# Slipstream (Rust) Slipstream 是一个高性能的 DNS 隧道,通过 DNS 查询和响应传输 QUIC 数据包。 本仓库包含 [原始 C 实现](https://github.com/EndPositive/slipstream) 的 Rust 重写版本。 ## 内容概览 - slipstream-client 和 slipstream-server CLI 可执行文件 - 带向量测试的 DNS 编解码器 crate - picoquic FFI 集成,支持多路径 QUIC - 基于 tokio 的完全异步实现 - 更多功能!有关最新功能列表,请查看 [已合并的 PR](https://github.com/Mygod/slipstream-rust/pulls?q=is%3Apr+is%3Amerged+label%3Aenhancement)。 ## 快速开始(本地开发) 前置条件: - Rust 工具链(stable) - cmake, pkg-config - OpenSSL 头文件和库 - python3(用于互操作和基准测试脚本) 初始化 picoquic 子模块: ``` git submodule update --init --recursive ``` `cargo build` 会当缺少库时通过 `./scripts/build_picoquic.sh` 自动构建 picoquic(输出到 `.picoquic-build/`)。设置 `PICOQUIC_AUTO_BUILD=0` 可禁用此功能,或参阅 `docs/build.md` 了解手动控制方式。 构建 Rust 可执行文件: ``` cargo build -p slipstream-client -p slipstream-server ``` 生成测试 TLS 证书(可选示例): ``` openssl req -x509 -newkey rsa:2048 -nodes \ -keyout key.pem -out cert.pem -days 365 \ -subj "/CN=slipstream" ``` 运行服务器: ``` cargo run -p slipstream-server -- \ --dns-listen-port 8853 \ --target-address 127.0.0.1:5201 \ --domain example.com \ --cert ./cert.pem \ --key ./key.pem \ --reset-seed ./reset-seed ``` 如果配置的证书/密钥路径不存在,服务器会自动生成自签名 ECDSA P-256 证书(有效期 1000 年)。如果省略 `--reset-seed`,服务器将发出警告,且无状态重置令牌不会在重启后保留。 运行客户端: ``` cargo run -p slipstream-client -- \ --tcp-listen-port 7000 \ --resolver 127.0.0.1:8853 \ --domain example.com ``` 注意:也可以针对转发到服务器的解析器运行客户端。本地测试请参阅互操作文档。 ## 生产环境注意:UDP/53 的 conntrack 配置 对于在端口 53 上运行的公共 `slipstream-server`,需要将 conntrack 调高至高于多数发行版的默认值。 建议的基准值: ``` net.netfilter.nf_conntrack_max = 262144 net.netfilter.nf_conntrack_udp_timeout = 15 net.netfilter.nf_conntrack_udp_timeout_stream = 60 ``` 容量分级: - 1 GB 内存:`131072` - 2-4 GB 内存:`262144` - 8 GB+ 内存:`524288` 保持稳态 `conntrack -C` 低于 `nf_conntrack_max` 的约 60%。 ## 基准测试(本地快照) 以下所有结果均为端到端完成时间(秒),数值越低越好,在本地环回上运行 5 次取平均值。有效载荷:每个方向 10 MiB。 变体包括:dnstt、C-C slipstream、Rust-Rust(非认证)和 Rust-Rust(通过 `--authoritative ` 认证)。 有关获取这些结果所使用的脚本,请参阅 `scripts/bench`。 | 变体 | 泄露平均时间(s) | 下载平均时间(s) | |--------------------------------------| ---: | ---: | | dnstt | 16.207 | 2.492 | | slipstream (C) | 5.332 | 1.096 | | slipstream-rust | 3.249 | 0.978 | | slipstream-rust (Authoritative mode) | 1.602 | 0.407 | ![吞吐量柱状图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/49e3e161b2172505.png) ## 文档 - docs/README.md 文档索引 - docs/build.md 构建前置条件和 picoquic 设置 - docs/usage.md CLI 使用说明 - docs/protocol.md DNS 封装说明 - docs/dns-codec.md 编解码器行为和向量 - docs/interop.md 本地测试工具和互操作 - docs/benchmarks.md 基准测试工具 - docs/benchmarks-results.md 基准测试结果 - docs/profiling.md 性能分析说明 - docs/design.md 架构说明 ## 仓库结构 - crates/ Rust 工作区 crates - docs/ 公共文档和内部设计说明 - fixtures/ 黄金 DNS 向量 - scripts/ 互操作和基准测试工具 - tools/ 向量生成器和辅助工具 - vendor/ picoquic 子模块 ## 许可证 Apache-2.0。详见 LICENSE。
标签:AGPLv3 许可证, C2通信, Covert Channel, DNS协议, DNS隧道, FFI集成, picoquic, QUIC协议, Rust, tokio异步, 加密通信, 协议隧道, 可视化界面, 多路径传输, 安全测试工具, 数据外泄, 网络信息收集, 网络安全, 网络流量审计, 通知系统, 隐私保护, 隐蔽信道, 高性能网络