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 次下载

MIT/Apache

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