1. 修改Readme,添加构架图

This commit is contained in:
chenboxing
2017-08-21 17:47:09 +08:00
parent b90e8f95af
commit 15b4fce94e
2 changed files with 9 additions and 14 deletions

View File

@@ -1,13 +1,13 @@
### 使用场景 ### 使用场景
有时我们需要在家里访问公司的电脑但如果任一方路由器分配的IP是运营商的内网IP,而不是公网IP,双方就无法直接通信。为了让双方电脑可以通讯我们可以借助第三方提供的tunnel服务利用服务器转发进行通讯比较出名的是花生壳的内网穿透服务。本项目实现是的另外的解决思路基于P2P NAT穿透使位于NAT网络后的计算机直接通讯无需借助第三方服务器进行数据转发简单高效和安全。
有时我们需互相访问公司和家里的电脑如果家里或公司的网络提供商提供的是公网IP我们仅需要在路由器里设置端口映射就可以在别外访问到我们开启的服务。但由于Ipv4地址历史原因可分配的公网IP越来越少分配到私有IP的情况很多。这时候就需要使用NAT穿透技术使用在NAT后的两端可互相访问。
### 项目介绍 ### 项目介绍
![image](https://github.com/chenboxing/punching/raw/master/screenshots/architecture.png)
如上图所示,在公网上部署一台跨网服务器,该服务器运行解析端(proxy), P2P客户端和服务端启动时向跨网解析端提交TCP连接请求以便公网解析端根据请求记录各自自连接时NAT地址并告知对方的NAT地址。P2P客户端和服务端尝试同时连接进行NAT穿透。在穿透成功后P2P终端可以脱离跨网解析端独立进行TCP数据通讯无需第三方数据转发。
如上图所示,在公网上部署一台跨网服务器,上面运行解析端(proxy), P2P客户端和服务端启动时向跨网解析端提交TCP连接请求以便公网解析端根据请求记录各自自连接时NAT地址并告知对方的NAT地址。P2P客户端和服务端尝试同时连接进行NAT穿透。在穿透成功后P2P终端可以脱离跨网解析端独立进行TCP数据通讯无需第三方数据转发。
### 如何使用 ### 如何使用
@@ -21,8 +21,6 @@
make_arm # 编译arm嵌入式平台的所有端arm版本基于5 make_arm # 编译arm嵌入式平台的所有端arm版本基于5
编译后二进制文件放在 punching/bin/目录下 编译后二进制文件放在 punching/bin/目录下
或你也可以访问下面链接直接下载已经编译好的文件:
4. 跨网解析端和P2P端配置和使用 4. 跨网解析端和P2P端配置和使用
@@ -32,18 +30,15 @@
把proxy(代理转发端)和配置文件proxy.conf 部署到公网计算机上配置proxy.conf配置节[proxy],设置侦听端口,默认7777 把proxy(代理转发端)和配置文件proxy.conf 部署到公网计算机上配置proxy.conf配置节[proxy],设置侦听端口,默认7777
运行解析端 运行解析端
./proxy ./proxy
4.2 配置P2P服务端 4.2 配置P2P服务端和客户端
4.3 配置P2P客户端
[ThirdProxy] [ThirdProxy]
address = nat.move8.cn address = nat.move8.cn
email = xxxx@xxxxx.com email = xxxx@xxxxx.com
password = xxxxxxx password = xxxxxxx
先在Nat网络一端你需要开放访问服务的计算机上部署server端配置config.conf配置节[server],在listen项里设置你要开放的应用服务如 192.168.1.45:80, proxy添写你的代理转发端公网地址和端口比如 xxx.f3322.net:7777, 如果你需要使用本站提供的代理转发,此项请为空,参考上面填写节[ThirdProxy]信息。 先在Nat网络一端你需要开放访问服务的计算机上部署server端配置config.conf配置节[server],在listen项里设置你要开放的应用服务如 192.168.1.45:80, proxy添写你的代理转发端公网地址和端口比如 xxx.f3322.net:7777, 如果你需要使用本站提供的代理转发,此项请为空,参考上面填写节[ThirdProxy]信息。
配置好启动Server端: 配置好启动Server端:
nat_server.exe nat_server.exe
@@ -56,8 +51,8 @@
### 当前局限 ### 当前局限
1. 只能提供一对一的P2P通讯(Client端,Server端),无法多人访问开启的P2P服务端服务.如果你想实现多人访问开启的服务你可以使用tunnel(隧道)工具但前提是需要架设一台线上服务器部署tunnel服务端在要开放服务的计算机上部署tunnel客户端。 1. 只能提供一对一的P2P通讯(Client端,Server端),无法多人访问开启的P2P服务端服务.如果你想实现多人访问开启的服务你可以使用tunnel(隧道)工具但前提是需要架设一台线上服务器部署tunnel服务端在要开放服务的计算机上部署tunnel客户端。
2. 现在项目只实现了TCP P2P穿透方案,如果后台服务需要UDP协议通讯 无法工作比如vnc服务就无法访问需要实现UDP和TCP穿透才可以工作。windows xp sp2下的平台也不支持P2P连接的TCP同时连接特性所以无法工作。 2. 现在项目只实现了TCP P2P穿透方案,如果后台服务需要UDP协议通讯 无法工作比如vnc服务就无法访问需要实现UDP和TCP穿透才可以工作。windows xp sp2下的平台也不支持P2P连接的TCP同时连接特性在xp sp2平台上无法工作。
3. 因为条件限制本项目测试场景是基于非对称性NAT, 对于对称性NAT穿透可能会失败。
### 依赖的第三方包 ### 依赖的第三方包
github.com/cihub/seelog 日志记录增加包 github.com/cihub/seelog 日志记录增加包

BIN
screenshots/architecture.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB