diff --git a/docs/desc.md b/docs/desc.md index ee53ae2..3c29aca 100644 --- a/docs/desc.md +++ b/docs/desc.md @@ -1,9 +1,8 @@ # 实现原理 -基于tls链接,protobuf进行数据传输,下面举例在办公网络穿透到家庭网络, -并通过rdp进行连接家庭网络下的某台windows设备 +基于tls链接,protobuf进行数据传输,下面举例远程连接服务器集群内的某台主机 -![rdp](imgs/example.jpg) +![shell](imgs/example.jpg) server端配置(10.0.1.1): @@ -17,9 +16,9 @@ server端配置(10.0.1.1): key: /dir/to/tls/key/file # tls密钥 crt: /dir/to/tls/crt/file # tls证书 -家庭网络client配置(192.168.1.100): +服务器client配置(192.168.1.100): - id: home # 客户端ID + id: server # 客户端ID server: 10.0.1.1:6154 # 服务器地址 secret: 0123456789 # 预共享密钥,必须与server端相同,否则握手失败 log: @@ -38,27 +37,24 @@ server端配置(10.0.1.1): rotate: 7 # 保留数量 rules: # 远端rule列表可为空 - name: rdp # 链路名称 - target: home # 目标客户端ID - type: tcp # 连接类型tcp或udp + target: server # 目标客户端ID + type: shell # 连接类型tcp或udp local_addr: 0.0.0.0 # 本地监听地址 local_port: 3389 # 本地监听端口号 - remote_addr: 192.168.1.101 # 目标客户端连接地址 - remote_port: 3389 # 目标客户端连接端口号 工作流程如下: 1. 办公网络与家庭网络中的np-cli创建tls连接到np-svr 2. np-cli服务发送握手包,并将配置文件中的secret字段进行md5哈希 3. np-svr等待握手报文,若等待超时则为非法链接,直接断开 -4. 办公网络客户机创建新连接到172.16.1.100的3389端口 -5. 172.16.1.100上的np-cli接收到新请求后创建新的link并生成链接id -6. 172.16.1.100上的np-cli发送connect_request消息,告知连接类型和链接目标地址和端口 -7. np-svr转发connect_request消息至192.168.1.100上的np-cli -8. 192.168.1.100上的np-cli接收到connect_request消息,根据请求信息创建链接到目标地址和端口 -9. 192.168.1.100上的np-cli根据链接创建结果返回connect_response消息 -10. np-svr转发connect_response消息至172.16.1.100上的np-cli -11. 172.168.1.100上的np-cli接收到connect_response消息后根据是否成功来决定是否需要断开rdp客户端链接 -12. 链路打通,两端各自发送data消息到对应链路 +4. 用户打开办公网络主机172.16.1.100上的终端页面,并连接到服务器集群中的主机server +5. 172.16.1.100上的np-cli发送connect_request消息,并将连接类型设置为shell +6. np-svr转发connect_request消息至192.168.1.100上的np-cli +7. 192.168.1.100上的np-cli接收到connect_request消息,创建/bin/bash进程 +8. 192.168.1.100上的np-cli根据链接创建结果返回connect_response消息 +9. np-svr转发connect_response消息至172.16.1.100上的np-cli +10. 172.168.1.100上的np-cli接收connect_response消息 +11. 开始转发网页上的输入输出内容 ## 软件架构 diff --git a/docs/imgs/example.drawio b/docs/imgs/example.drawio index 5a25734..53f172b 100644 --- a/docs/imgs/example.drawio +++ b/docs/imgs/example.drawio @@ -1,158 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +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 \ No newline at end of file diff --git a/docs/imgs/example.jpg b/docs/imgs/example.jpg index 60bb9e0..d36714d 100644 Binary files a/docs/imgs/example.jpg and b/docs/imgs/example.jpg differ