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 在 网络编程
每月 106 次下载
1.5MB
6K SLoC
Rusty Penguin
关于
一个快速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
获取更多选项。
比较
与原始的 penguin
或 chisel
相比,此项目去除了一些功能
-
没有内部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