#websocket #tcp-udp #tunnel #server #protocols #networking #penguin

bin+lib rusty-penguin

一个快速TCP/UDP隧道,通过HTTP WebSocket传输

14个版本

0.5.5 2024年6月4日
0.5.3 2023年10月1日
0.5.2 2023年2月12日
0.4.2 2023年2月2日
0.1.2 2022年12月25日

#256网络编程

Download history 1/week @ 2024-05-24 161/week @ 2024-05-31 23/week @ 2024-06-07 3/week @ 2024-06-14 5/week @ 2024-07-05 95/week @ 2024-07-26 11/week @ 2024-08-02

每月 106 次下载

Apache-2.0 OR GPL-3.0-or-later

1.5MB
6K SLoC

Rusty Penguin

Logo

Rust Build and Test Crates.io Dependency Status Codecov License

关于

一个快速TCP/UDP隧道,通过HTTP WebSocket传输。你是对的。这个项目受到了 jpillora/chisel (以及随后的我的分支 myzhang1029/penguin) 的启发,但完全重写,使用Rust语言。

基本用法

服务器

$ penguin server --host ::1 --port 443 --tls-cert cert.pem --tls-key key.pem --ws-psk some-secret

查看 penguin server --help 获取更多选项。

客户端

$ penguin client --ws-psk some-secret wss://server 1080:socks 80:example.com:80

查看 penguin client --help 获取更多选项。

比较

与原始的 penguinchisel 相比,此项目去除了一些功能

  • 没有内部SSH隧道,因为这会导致在HTTPS/WSS中使用时产生双重封装。

  • 没有用户/密码认证,因为我们没有SSH。相反,使用预共享密钥(PSK)认证。

  • 没有服务器保持连接,因为客户端保持连接就足够了。

  • 没有即时获取ACME证书的支持。

  • 没有反向端口转发,因为我太懒了。(待办!)

除此之外,与 chisel 相比,此项目还提供了以下功能

  • 具有WebSocket PSK和工作的 backend 的可否认性。

  • 使用 SIGUSR1 进行TLS证书热重载。

  • 更高的性能:在我的机器上对 penguin 的粗略测试显示,它比 chisel 快大约2倍。

$ iperf3 -c 127.0.0.1 # chisel without TLS
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  6.62 GBytes  5.68 Gbits/sec                  sender
[  5]   0.00-10.00  sec  6.61 GBytes  5.68 Gbits/sec                  receiver

$ iperf3 -c 127.0.0.1 # penguin without TLS
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  14.2 GBytes  12.2 Gbits/sec                  sender
[  5]   0.00-10.00  sec  14.2 GBytes  12.2 Gbits/sec                  receiver

$ iperf3 -c 127.0.0.1 # chisel with TLS
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  5.59 GBytes  4.80 Gbits/sec                  sender
[  5]   0.00-10.00  sec  5.58 GBytes  4.80 Gbits/sec                  receiver

$ iperf3 -c 127.0.0.1 # penguin with TLS
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  8.96 GBytes  7.70 Gbits/sec                  sender
[  5]   0.00-10.00  sec  8.95 GBytes  7.69 Gbits/sec                  receiver
  • Rust提供的安全保障。

协议

使用相同协议版本的服务器和客户端可以相互兼容。然而,为了获得最佳性能,建议在双方都使用相同版本的 penguin

当前协议版本是 penguin-v6。有关详细信息,请参阅 PROTOCOL.md

许可证

GPL v3.0 或更高版本或 Apache 许可证 2.0。

依赖项

约 5–35MB
约 717K SLoC