#p2p #netcat #networking #hole-punching #cli-tool #cli #ip-address

bin+lib dumbpipe

一种通过网络传输数据的命令行工具,具有 NAT 打洞功能

14 个重大版本发布

新版本 0.15.0 2024 年 8 月 20 日
0.13.0 2024 年 7 月 22 日
0.5.0 2024 年 3 月 29 日
0.4.0 2023 年 12 月 20 日

#1004 in 网络编程

Download history 188/week @ 2024-04-28 9/week @ 2024-05-05 143/week @ 2024-05-12 194/week @ 2024-05-19 51/week @ 2024-05-26 143/week @ 2024-06-02 25/week @ 2024-06-09 3/week @ 2024-06-16 129/week @ 2024-06-23 57/week @ 2024-06-30 131/week @ 2024-07-07 15/week @ 2024-07-14 110/week @ 2024-07-21 71/week @ 2024-07-28 135/week @ 2024-08-04 10/week @ 2024-08-11

每月 327 次下载

Apache-2.0/MIT

41KB
391

笨管道

这是一个使用 iroh-net 创建一个笨管道来通过 QUIC 连接连接两台机器的示例。

Iroh-net 将在可能的情况下处理打洞和 NAT 穿透,如果打洞失败,则回退到中继。

它也可以作为独立工具进行快速复制作业。

这受到 Unix 工具 netcat 的启发。虽然 netcat 与 IP 地址一起工作,但笨管道使用 256 位节点 ID,因此在一定程度上具有位置透明性。此外,连接使用 TLS 加密。

安装

cargo install dumbpipe

示例

使用 dumbpipe 通过 ffmpeg / ffplay 流式传输视频

这使用标准输入和输出。

发送方

在 Mac OS 上

ffmpeg -f avfoundation -r 30 -i "0" -pix_fmt yuv420p -f mpegts - | dumbpipe listen

在 Linux 上

ffmpeg -f v4l2 -i /dev/video0 -r 30 -preset ultrafast -vcodec libx264 -tune zerolatency -f mpegts - | dumbpipe listen

输出票据

接收方

dumbpipe connect nodeealvvv4nwa522qhznqrblv6jxcrgnvpapvakxw5i6mwltmm6ps2r4aicamaakdu5wtjasadei2qdfuqjadakqk3t2ieq | ffplay -f mpegts -fflags nobuffer -framedrop -
  • 根据您的本地平台和视频捕获设备调整 ffmpeg 选项。
  • 使用发送方提供的票据

转发开发网络服务器

您有一个运行在端口 3000 的开发网络服务器,并希望与另一个办公室或世界另一端的同事共享。

网络服务器

npm run dev
>    - Local:        http://localhost:3000

笨管道监听器

监听 一个神奇端点,并将所有传入请求转发到在 localhost 的端口 3000 上监听的开发网络服务器。可以通过单个笨管道流动任意数量的连接,但它们将是独立的本地 TCP 连接。

dumbpipe listen-tcp --host localhost:3000

此命令将输出一个票据,可以用来连接。

笨管道连接器

监听 本地机器上的 TCP 接口和端口。在这种情况下,在端口 3001。将所有传入连接转发到票据中给出的神奇端点。

dumbpipe connect-tcp --addr 0.0.0.0:3001 <ticket>

测试它

您现在可以浏览端口 3001 上的网站。

高级功能

自定义 ALPN

笨管道有一个专家功能可以指定自定义的 ALPN 字符串。您可以使用它与现有的 iroh-net 服务交互。

例如,下面是如何与iroh-bytes协议交互:

echo request1.bin | dumbpipe connect <ticket> --custom-alpn utf8:/iroh-bytes/2 > response1.bin 

如果request1.bin包含对/iroh-bytes/2协议的有效请求,则response1.bin现在将包含响应。

依赖项

~44–78MB
~1.5M SLoC