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。保留所有权利。
标签:匿名网络, 域名枚举, 洋葱路由, 点对点网络, 版权保护, 网络安全, 请求拦截, 隐私保护