1 个不稳定版本
0.1.0-beta.0 | 2024年4月6日 |
---|
#8 in #hole-punching
290KB
6K SLoC
portal-tunneler
通过打洞QUIC连接创建类似SSH的TCP隧道。
Portal端点可以以两种模式运行
- 客户端:连接到服务器并请求隧道
- 服务器:监听传入的连接,总体上只是执行客户端的要求
并且,Portal端点可以以两种模式相互连接
- 直接:典型的连接。服务器监听传入的连接,客户端与它通信
- 打洞:客户端和服务器创建“连接代码”,并要求用户交换它们。一旦双方都收到对方的连接代码,就使用打洞建立直接连接。
隧道通过参数指定,与SSH中的方式类似,因此请参阅SSH手册中的-L
、-R
和-D
选项以获取更多信息。唯一的不同之处在于,在SSH中使用-D
指定的本地动态隧道,在portal中用-L
代替,以便简化。
该项目处于测试阶段!
虽然该项目已经实现了大多数主要功能,但仍有一些功能尚未实现(最显著的是帮助菜单,它只是打印出“I need somebody”),并且项目在发布前需要一些清理和重构以使其更美观。它还包含不必要的冗长打印。
此外,此测试版不保证稳定性、安全性或与其他版本的兼容性。
安装
推荐使用来自crates.io的cargo
进行安装
cargo install portal-tunneler
或直接从GitHub获取
cargo install --git https://github.com/ThomasMiz/portal-tunneler.git portal-tunneler
这两种方法都会下载和编译portal的代码及其所有依赖项。完成后,portal可执行文件将以portal
的名称可用。
下载二进制文件
如果您未安装 cargo
,可以在 发布页面 找到为 x84_64 Windows 和 Linux 预编译的二进制文件。
使用示例
由于还没有帮助菜单,以下是一些使用示例。在不提供任何参数的情况下运行 portal 将启动一个监听在 0.0.0.0:5995 和 [::]:5995 的服务器。
在 192.168.1.100:5995 上启动一个服务器(端口是隐式的,因为 5995 是 portal 的默认端口)
portal --listen 192.168.1.100
启动一个客户端,连接到 192.168.1.100:5995 的服务器,并打开一个本地隧道,该隧道在本地的 4444 端口监听,并将连接隧道到 localhost:5555
portal --connect 192.168.1.100 -L4444:localhost:5555
与之前相同,但隧道不是指向 localhost:5555,而是一个使用 SOCKS4/SOCKS5 进行代理的动态隧道
portal --connect 192.168.1.100 -L5555
如果您想建立穿透连接而不是直接连接,那么应该使用 --punch
而不是 --connect
或 --listen
服务器运行
portal --punch
客户端运行
portal --punch -L4444:localhost:5555
现在我们进入重点部分。如果您想玩 Minecraft,那么托管服务器的用户应该运行
portal --punch
客户端应该运行
portal --punch -L25565:localhost:25565
连接建立后,您应该让 Minecraft 客户端连接到 localhost:25565。
依赖关系
~13–23MB
~418K SLoC