mirror of
https://github.com/lwch/natpass.git
synced 2024-04-21 12:41:54 +00:00
修改文档
This commit is contained in:
+14
-18
@@ -1,9 +1,8 @@
|
||||
# 实现原理
|
||||
|
||||
基于tls链接,protobuf进行数据传输,下面举例在办公网络穿透到家庭网络,
|
||||
并通过rdp进行连接家庭网络下的某台windows设备
|
||||
基于tls链接,protobuf进行数据传输,下面举例远程连接服务器集群内的某台主机
|
||||
|
||||

|
||||

|
||||
|
||||
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. 开始转发网页上的输入输出内容
|
||||
|
||||
## 软件架构
|
||||
|
||||
|
||||
+1
-158
@@ -1,158 +1 @@
|
||||
<mxfile host="app.diagrams.net" modified="2021-08-19T03:29:42.029Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36" etag="kKNkbF7So22PkGp4eWOc" version="14.9.7" type="github">
|
||||
<diagram id="Kjf8sS8rRDm6eebZkxfj" name="第 1 页">
|
||||
<mxGraphModel dx="1038" dy="579" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="290" y="219" as="sourcePoint" />
|
||||
<mxPoint x="390" y="130" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="290" y="219" />
|
||||
<mxPoint x="290" y="130" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.71;exitY=1.066;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="WTAgDNwTBJ27G1_lSc48-3" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="320" y="356" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-3" value="" style="points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/security/Router_VPN.svg;" parent="1" vertex="1">
|
||||
<mxGeometry x="280" y="220" width="55.800000000000004" height="39.6" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.694;entryY=-0.054;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.717;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="WTAgDNwTBJ27G1_lSc48-4" target="WTAgDNwTBJ27G1_lSc48-8" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="WTAgDNwTBJ27G1_lSc48-4" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="436" y="150" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="500" y="150" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-4" value="" style="points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/security/Router_VPN.svg;" parent="1" vertex="1">
|
||||
<mxGeometry x="490" y="221" width="55.800000000000004" height="39.6" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="WTAgDNwTBJ27G1_lSc48-5" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="290" y="260" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="290" y="330" />
|
||||
<mxPoint x="290" y="330" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=-0.005;exitY=0.676;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="WTAgDNwTBJ27G1_lSc48-5" target="WTAgDNwTBJ27G1_lSc48-18" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="230" y="402" />
|
||||
<mxPoint x="230" y="402" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-5" value="内网设备<br>172.16.1.100" style="points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/computer_and_terminals/Personal_Computer_with_Server.svg;" parent="1" vertex="1">
|
||||
<mxGeometry x="276.7" y="360" width="62.400000000000006" height="62.400000000000006" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="440" y="130" as="sourcePoint" />
|
||||
<mxPoint x="530" y="222" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="530" y="130" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.681;entryY=0.015;entryDx=0;entryDy=0;entryPerimeter=0;exitX=-0.014;exitY=0.759;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="WTAgDNwTBJ27G1_lSc48-6" target="WTAgDNwTBJ27G1_lSc48-3" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-6" value="np-svr<br>公网服务<br>10.0.1.1" style="points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/computer_and_terminals/Server_Desktop.svg;" parent="1" vertex="1">
|
||||
<mxGeometry x="393" y="110" width="42.599999999999994" height="54" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="500" y="357" as="sourcePoint" />
|
||||
<mxPoint x="500" y="250" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1.053;exitY=0.33;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="WTAgDNwTBJ27G1_lSc48-8" target="WTAgDNwTBJ27G1_lSc48-28" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="590" y="381" />
|
||||
<mxPoint x="590" y="381" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-8" value="内网设备<br>192.168.1.100" style="points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/computer_and_terminals/Personal_Computer_with_Server.svg;" parent="1" vertex="1">
|
||||
<mxGeometry x="486.7" y="360" width="62.400000000000006" height="62.400000000000006" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-16" value="办公网络<br>172.16.1.1/24" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="180" y="221" width="90" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-17" value="家庭网络<br>192.168.1.1/24" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="560" y="224.8" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="WTAgDNwTBJ27G1_lSc48-18" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="276" y="380" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="276" y="380" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="200" y="410" as="sourcePoint" />
|
||||
<mxPoint x="200" y="480" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-18" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;aspect=fixed;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.vvd.cloud_computing;fillColor=#066A90;" parent="1" vertex="1">
|
||||
<mxGeometry x="160" y="375" width="50" height="32" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="170" y="410" as="targetPoint" />
|
||||
<mxPoint x="170" y="470" as="sourcePoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-19" value="rdp客户端" style="pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#434445;aspect=fixed;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.vvd.administrator;" parent="1" vertex="1">
|
||||
<mxGeometry x="174.25" y="480" width="21.5" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-21" value="np-cli<br>监听3389端口" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="70" y="375" width="90" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="650" y="410" as="sourcePoint" />
|
||||
<mxPoint x="650" y="480" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="WTAgDNwTBJ27G1_lSc48-28" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="550" y="400" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="560" y="400" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-28" value="" style="pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;aspect=fixed;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.vvd.cloud_computing;fillColor=#066A90;" parent="1" vertex="1">
|
||||
<mxGeometry x="610" y="375" width="50" height="32" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="620" y="410" as="targetPoint" />
|
||||
<mxPoint x="620" y="470" as="sourcePoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-31" value="np-cli<br>连接到3389端口" style="text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="665" y="377" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WTAgDNwTBJ27G1_lSc48-32" value="内网设备<br>192.168.1.101" style="points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image;image=img/lib/allied_telesis/computer_and_terminals/Personal_Computer_with_Server.svg;" parent="1" vertex="1">
|
||||
<mxGeometry x="603.8" y="480" width="62.400000000000006" height="62.400000000000006" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
<mxfile host="Chrome" modified="2021-11-18T15:55:23.638Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" etag="KKjYPjoS9srZirTPQqsC" version="15.5.6" type="device"><diagram id="Kjf8sS8rRDm6eebZkxfj" name="第 1 页">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</diagram></mxfile>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Reference in New Issue
Block a user