8 个不稳定版本 (3 个破坏性更新)
0.4.0 | 2023 年 5 月 6 日 |
---|---|
0.3.2 | 2023 年 4 月 30 日 |
0.3.1 | 2023 年 2 月 26 日 |
0.2.2 | 2023 年 2 月 20 日 |
0.1.0 | 2022 年 9 月 25 日 |
#1254 在 网络编程
每月 38 次下载
56KB
1.5K SLoC
onionpipe
为任何事物提供洋葱地址。
onionpipe
将本地主机的端口转发到远程洋葱地址作为 Tor 隐藏服务,反之亦然。
我为什么要使用这个工具呢?
onionpipe 是创建几乎无法摧毁的全局网络隧道的一种去中心化方式。
例如,您可能希望从世界任何地方安全地发布和访问个人服务,穿越各种网络障碍——您的 ISP 不允许访问您的家庭实验室的入站流量,您的客户可能处于高度防火墙的环境中(公共 WiFi、移动热点)等。
使用 onionpipe,该服务不需要公共 IPv4 或 IPv6 入站。您可以使用全局唯一的持久洋葱地址发布服务,并安全地、私密地与您的授权密钥列表共享访问权限。
我该如何安装它?
在 Linux(以及可能 macOS?目前未测试)上
cargo install onionpipe
我现在可以用它做什么?
onionpipe 设置套接字转发隧道。对于洋葱来说,它就像 socat(1)
。
将本地网络上的服务导出到洋葱地址
将本地主机端口 8000 导出为临时、一次性远程洋葱地址。默认情况下,洋葱服务的端口为 80。
onionpipe 8000
转发地址将打印到日志输出
Feb 26 09:41:18.267 [notice] Tor 0.4.7.10 running on Linux with Libevent 2.1.12-stable, OpenSSL 1.1.1t, Zlib 1.2.11, Liblzma N/A, Libzstd N/A and Glibc 2.35 as libc.
Feb 26 09:41:18.267 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://support.torproject.org/faq/staying-anonymous/
Feb 26 09:41:18.267 [notice] Configuration file "/home/c/.torrc" not present, using reasonable defaults.
Feb 26 09:41:18.271 [notice] Opening Socks listener on /run/user/1000/.tmpfviq7N/data/socks.sock
Feb 26 09:41:18.271 [notice] Opened Socks listener connection (ready) on /run/user/1000/.tmpfviq7N/data/socks.sock
Feb 26 09:41:18.271 [notice] Opening Control listener on /run/user/1000/.tmpfviq7N/data/control.sock
Feb 26 09:41:18.271 [notice] Opened Control listener connection (ready) on /run/user/1000/.tmpfviq7N/data/control.sock
forward 127.0.0.1:8000 => pqksfxbpraiwklpx7ihu7yu7vlpkpromqojyn6goo2fl6wemi4dkieqd.onion:80
端口转发可以映射。这会将本地主机端口 8443 导出为临时远程洋葱端口 443。 ~
是源~目标之间转发的缩写。
onionpipe 8443~443
本地地址可以绑定。这会将特定接口地址转发到洋葱
onionpipe 10.0.0.7:8443~443
持久洋葱地址
onionpipe 8000@my-app
导入洋葱服务
这会将洋葱站点导入到本地端口 8000 的监听器。
onionpipe ddosxlvzzow7scc7egy75gpke54hgbg2frahxzaw6qq5osnzm7wistid.onion~8000
将洋葱站点导入到特定地址。这对于设置内网或明网入站到洋葱服务很有用。
onionpipe ddosxlvzzow7scc7egy75gpke54hgbg2frahxzaw6qq5osnzm7wistid.onion~0.0.0.0:8000
配置文件操作
以上所有内容以及更多都可以用JSON配置文件来表示。请参阅Config Rust文档和示例config.json以获取详细信息。
onionpipe --config config.json
待办事项
- 安全审查。Rust代码审查,我对这门语言还不是很熟悉。
- 与Go实现的CLI兼容性。还缺少什么?
- 客户端认证与密钥管理
- 更多Tor选项,如匿名与快速,桥接支持。先锋集成。
- UNIX套接字支持。可以实现,但需要增强依赖项(torut)
- 上述内容的跨平台分发:Linux、macOS、Windows在流行架构上
- 在Docker、NixOS(flake)、Homebrew、也许Choco上分发
更多想法!
- GUI前端,可能基于Tauri
- cwtch集成
- 守护进程模式与转发控制API
- Kubernetes CRD:OnionService(可能需要使用控制API)
- 基于Arti的分支,当Arti支持隐藏服务时
依赖项
~14–28MB
~437K SLoC