From 15b4fce94ec64be6febb94f03f8b1e66a4305786 Mon Sep 17 00:00:00 2001 From: chenboxing <36821277@qq.com> Date: Mon, 21 Aug 2017 17:47:09 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=BF=AE=E6=94=B9Readme=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=9E=84=E6=9E=B6=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 23 +++++++++-------------- screenshots/architecture.png | Bin 0 -> 41722 bytes 2 files changed, 9 insertions(+), 14 deletions(-) create mode 100755 screenshots/architecture.png diff --git a/README.md b/README.md index 7d8d438..ff17a9c 100644 --- a/README.md +++ b/README.md @@ -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 编译后二进制文件放在 punching/bin/目录下 - - 或你也可以访问下面链接直接下载已经编译好的文件: 4. 跨网解析端和P2P端配置和使用 @@ -32,18 +30,15 @@ 把proxy(代理转发端)和配置文件proxy.conf 部署到公网计算机上,配置proxy.conf配置节[proxy],设置侦听端口,默认7777 运行解析端 ./proxy - - 4.2 配置P2P服务端 - - - 4.3 配置P2P客户端 + + 4.2 配置P2P服务端和客户端 [ThirdProxy] address = nat.move8.cn email = xxxx@xxxxx.com 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端: nat_server.exe @@ -56,8 +51,8 @@ ### 当前局限 1. 只能提供一对一的P2P通讯(Client端,Server端),无法多人访问开启的P2P服务端服务.如果你想实现多人访问开启的服务,你可以使用tunnel(隧道)工具,但前提是需要架设一台线上服务器,部署tunnel服务端,在要开放服务的计算机上部署tunnel客户端。 - 2. 现在,项目只实现了TCP P2P穿透方案,如果后台服务需要UDP协议通讯 ,无法工作,比如vnc服务就无法访问,需要实现UDP和TCP穿透才可以工作。windows xp sp2下的平台也不支持P2P连接的TCP同时连接特性,所以无法工作。 - 3. 因为条件限制,本项目测试场景是基于非对称性NAT, 对于对称性NAT穿透可能会失败。 + 2. 现在,项目只实现了TCP P2P穿透方案,如果后台服务需要UDP协议通讯 ,无法工作,比如vnc服务就无法访问,需要实现UDP和TCP穿透才可以工作。windows xp sp2下的平台也不支持P2P连接的TCP同时连接特性,在xp sp2平台上无法工作。 + ### 依赖的第三方包 github.com/cihub/seelog: 日志记录增加包 diff --git a/screenshots/architecture.png b/screenshots/architecture.png new file mode 100755 index 0000000000000000000000000000000000000000..8c20772d94a946a5ceaa066c4545bf916efd57fd GIT binary patch literal 41722 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