#rust-library #server-client #tls-tunnel #firewall-bypass

已删除 sltunnel

一个简单的TLS隧道实现,用Rust编写

1 个不稳定版本

0.1.0 2020年10月13日

#6 in #rust-library

MIT 许可证

9KB
162

🚇 sltunnel

一个简单的TLS隧道实现,用Rust编写。

什么是TLS隧道?

TLS隧道是将任何TCP数据包通过TLS隧道传输的方式。得益于TLS,我们可以通过普通防火墙更安全地与远程服务器进行通信。

关于sslh呢?

sslh 是一个使用数据包头部字节的多路复用器。在一般的家庭网络中并没有问题,但有些网络(例如学校或工作场所)即使是在443端口,也会限制没有正确TLS协商的传输。

TLS隧道是不同的。通过TLS隧道传输的数据包是完全作为TLS连接进行协商的。通常,即使在学校或工作场所,防火墙也会接受连接!

安装

[dependencies]
sltunnel = { path = "[path to crate]" }

示例

在这种情况下,让他们通过 [::]:11234[::]:22334 之间的 [::]:33445 进行通信。

服务器

服务器监听 [::]:33445,使用TLS并将连接中继到 [::]:11234

$ cd ./examples/server
$ cargo build --release
$ ./target/release/sltunnel_server [::]:33445 [::]:11234

客户端

客户端监听 [::]:22334 并使用TLS将连接中继到 [::]:33445

$ cd ./examples/client
$ cargo build --release
$ ./target/release/sltunnel_client [::]:22334 [::]:33445

测试

当服务器和客户端都准备就绪时,运行命令以检查连接

$ nc -k -l 11223 &
$ echo "OK" > /dev/tcp/localhost/22334

如果控制台输出“OK”,则表示工作正常!

依赖关系

~14MB
~346K SLoC