5 个版本
0.1.3 | 2021年7月19日 |
---|---|
0.1.2 | 2021年2月22日 |
0.1.1 | 2021年2月21日 |
0.1.0 | 2021年2月20日 |
0.0.1 | 2020年10月16日 |
#1250 in 网络编程
每月35次下载
用于 allium-daemon
140KB
3K SLoC
洋葱 🧅
洋葱是一种单子叶植物属,包括数百种物种,包括栽培的洋葱、大蒜、青葱、葱、韭菜和香葱。 — Wikipedia
Allium 是洋葱路由的 Rust 实现。它可以在加密隧道中实现匿名通信。除了用作 Rust 库外,Allium 还可以作为独立的守护进程运行,可以通过 TCP 套接字进行控制。
特性
- 基于 Tokio 运行的异步设计
- 定期、无缝的隧道重建
- 固定大小的数据包
- 覆盖流量
入门
文档中包含有关如何开始使用 Allium 库的简短部分。
守护进程
可以使用以下命令安装守护进程
$ cargo install allium-daemon
安装后,可以像这样运行守护进程
$ allium-daemon [config file path]
Allium 守护进程需要配置文件,默认情况下在当前工作目录中为 config.ini
。可以通过可选的命令行参数指定不同的路径。配置文件必须是 *.ini
或 *.toml
格式。示例 ini
-配置
[onion]
; The address and port on which the daemon listening for API connections
api_address = 127.0.0.1:4200
; The port on which connections from other peers in the onion network are accepted
p2p_port = 4201
; The address on which connections from other peers in the onion network are accepted
p2p_hostname = 127.0.0.1
; The path to a PEM-encoded RSA keypair used for signing messages
hostkey = testkey.pem
; The number of hops (excluding the destination) in each tunnel (should be at least 2)
hops = 2
; Enable or disable cover traffic
cover_traffic = true
; Duration of each round in seconds.
round_duration = 120
[rps]
; The address and port the random-peer-sampling module is listening on
api_address = 127.0.0.1:4100
命令行界面示例
出于测试目的,提供了一个命令行界面,可以像这样运行
$ cargo run --example cli
此外,可以像这样指定日志级别
$ RUST_LOG=trace cargo run --example cli
测试
可以使用以下命令运行测试
cargo test
已知问题
- 在切换过程中,我们不清理任何可能遗留的数据消息,这可能导致数据包丢失。
- 电路 ID(以及在某种程度上隧道 ID)是随机生成的。尽管不太可能,但可能会有重复。
- 我们没有清理来自 RPS 的输出,因此可能存在循环隧道或以我们自己为目标的自定义覆盖隧道,这取决于 RPS 的实现。
未来工作
- 编写基准测试并调整性能
- 减少分配和复制操作的次数
- 隧道通常被强制拆除而不是迭代地拆解,尽管部分必要的功能已经实现
依赖项
~5–16MB
~232K SLoC