ffeeco 发表于 2022-5-1 18:27:02

kaminari入门指南

本帖最后由 ffeeco 于 2022-5-1 18:38 编辑

首先是项目地址:https://github.com/zephyrchien/kaminari

在本人的理解中,kaminaric是客户端"client",也就是入口机器上需要使用的,而"kaminaris"即服务端"server",也就是出口机器上所需要使用的。如此使用,我本人是好使,具体是不是理解对了有待商榷(

在一个标准配置中,如果你是想要搭建隧道,并且不使用中间件的话,那么出口机器必须listen 0.0.0.0。
一个最最基础的ws隧道的具体配置如下:
出口机器的配置为:
./kaminaris 0.0.0.0: example2.com: 'ws;host=example1.com;path=/ws'
其中,port1为出口机器监听的端口,example2.com、port2为落地机器的地址、端口 ,example1.com为出口机器的域名
其对应的入口机器的配置为:
./kaminaric 0.0.0.0: example1.com: 'ws;host=example1.com;path=/ws'
其中,port3为入口机器监听的端口。
好的,你现在已经可以使用你的隧道了。

这里需要注意的是:如果你使用了TLS,那么你应当在:1.开启allow-insecure,2.将服务器名称指示(Domain)(SNI)中填入example2.com中选一个(当然两个全选也没什么事),否则将会出现tls相关错误。

[进阶]使用tls来加密入口与出口间的流量

kaminari目前提供了两种加密的通讯方式:裸tls和ws-tls,即wss。对应的配置也是非常简单。

裸tls的配置如下:
出口机器的配置为:
./kaminaris 0.0.0.0: example2.com: 'tls;cert=/path/to/cert;key=/path/to/key'
入口机器配置为:
./kaminaric 0.0.0.0: example1.com: 'tls;sni=example1.com'

wss的配置如下:
出口机器的配置为:
./kaminaris 0.0.0.0: example2.com: 'ws;host=example1.com;path=/ws;tls;cert=/path/to/cert;key=/path/to/key'
入口机器配置为:
./kaminaric 0.0.0.0: example1.com: 'ws;host=example1.com;path=/ws;tls;sni=example1.com'

这里不对自签名证书做讨论,因为我也没整出来,可能因为我是制杖叭,希望有能力的大佬在下面写出qaq。

[其它配置]

如果你不想验证出口机器的域名和身份信息,那么可以在后面参数中添加上"insecure";
如果想要启用0rtt(early data,能减少握手延迟(?),提高数据传输效率(?)(不一定是速率)),那么可以在后面参数中添加上"0rtt";
Masking:正常来说,ws的客户端应当在发送数据前将数据"Mask"一下,默认的配置为"skip",即使用"0x00..0"作为Mask key,如果想要使用其它方式可以在后面参数中添加上"mode=fixed"或是"mode=standard",具体的说明还是去看文档吧,在此不过多赘述。

以上。

闲月疏云 发表于 2022-5-1 18:49:00

文中还是探索一下自签名证书更好,allow-insecure多少还是有点不安全的。从文档来看,证书应该在服务端设置,似乎并不复杂。

ffeeco 发表于 2022-5-1 18:51:10

闲月疏云 发表于 2022-5-1 18:49
文中还是探索一下自签名证书更好,allow-insecure多少还是有点不安全的。从文档来看,证书应该在服务端设置 ...

好诶 这两天试试 搞出来我就写下来x

forwebnet 发表于 2022-5-2 16:34:37

谢谢,我研究下看看
页: [1]
查看完整版本: kaminari入门指南