1 个不稳定版本
0.1.0 | 2020年10月13日 |
---|
#6 in #rust-library
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