zstoimchev/zmix
GitHub: zstoimchev/zmix
zmix 是一个基于 Java 21 的点对点洋葱路由网络实现,通过分层加密和中继节点为 HTTP 流量提供匿名化通信能力。
Stars: 1 | Forks: 0
# ZMIX — 点对点 Onion Routing
一个基于 Java 21 的实现,在自组织的点对点网络上进行 onion routing。每个节点通过 gossip 发现对等节点,使用 ECDH 密钥交换构建多跳电路,并通过分层 AES-256-GCM 加密对 HTTP 流量进行匿名化处理。
## 前置条件
- Java 21
- Maven 3.8+(用于本地构建)
- Docker + Docker Compose(用于容器化部署)
## 使用 Docker 运行
运行该网络最简单的方法是使用 Docker Compose。这会从相同的镜像构建所有节点并自动将它们连接起来。
```
docker-compose up --build --scale peer=10 -d
```
这会启动:
- `bootstrap-node` - 端口为 12137 的种子节点
- `config-node` - 端口为 12128 的对等节点,用于发送请求
- `peer` - 一个中继节点(在上面的命令中扩展到了 10 个)
要连接到 `config-node`(或任何其他对等节点)并发送 HTTP 请求:
```
docker attach config-node
```
然后输入一个 URL 并按回车键:
```
http://example.com
```
响应的 HTML 会显示在控制台中,并保存到 `responses/` 目录下。
## 本地运行
首先构建 fat JAR:
```
mvn package
```
然后在不同的终端中启动 bootstrap 节点和至少另外三个对等节点:
```
java -jar target/zmix-1.0-SNAPSHOT.jar node.bootstrap.properties
java -jar target/zmix-1.0-SNAPSHOT.jar node.peer.test1.properties
java -jar target/zmix-1.0-SNAPSHOT.jar node.peer.test2.properties
java -jar target/zmix-1.0-SNAPSHOT.jar node.peer.test3.properties
```
一旦足够多的对等节点连接并且电路建立完成,在任一对等节点的终端中输入 URL 即可通过网络发送请求。
所有节点的 IntelliJ 运行配置包含在 `.idea/runConfigurations/` 目录下。
## 配置说明
每个节点都通过作为第一个参数传入的 `.properties` 文件进行配置。主要属性:
| 属性 | 默认值 | 描述 |
|------------------------|-------------|------------------------------|
| `node.port` | `12137` | 节点监听的 TCP 端口 |
| `node.bootstrap` | `false` | 对于种子节点设置为 `true` |
| `bootstrap.host` | `localhost` | Bootstrap 节点主机名 |
| `bootstrap.port` | `12137` | Bootstrap 节点端口 |
| `circuit.length` | `3` | 每条电路的跳数 |
| `node.connections.max` | `5` | 最大同时连接的对等节点数 |
| `node.connections.min` | `3` | 最小连接目标数 |
环境变量 `NODE_PORT`、`NODE_BOOTSTRAP` 和 `BOOTSTRAP_HOST` 会覆盖属性文件中的值,并被 Docker Compose 使用。
## 项目报告
关于架构、安全设计、评估和限制的更详细描述,请查阅[项目报告](docs/REPORT.md)。
## 联系方式
[zstoimchev@outlook.com](mailto:zstoimchev@outlook.com)
## 许可证
© 2026 Zhivko Stoimchev。保留所有权利。
标签:匿名网络, 域名枚举, 洋葱路由, 点对点网络, 版权保护, 网络安全, 请求拦截, 隐私保护