Files
openp2p/README-ZH.md
TenderIronh 3653ec19cd 1.2.0
2022-02-22 15:50:30 +08:00

6.6 KiB
Raw Permalink Blame History

English|中文

网站: openp2p.cn

OpenP2P是什么

它是一个开源、免费、轻量级的P2P共享网络。你的设备将组成一个私有P2P网络里面的设备可以直接访问其它成员或者通过其它成员转发数据间接访问。如果私有网络无法完成通信将会到公有P2P网络寻找共享节点协助通信。 相比BT网络用来共享文件OpenP2P网络用来共享带宽。 我们的目标是:充分利用带宽,利用共享节点转发数据,建设一个远程连接的通用基础设施。

为什么选择OpenP2P

1. 免费

完全免费满足大部分用户的核心白票需求。不像其它类似的产品OpenP2P不需要有公网IP的服务器不需要花钱买服务。了解它原理即可理解为什么能做到免费。

2. 共享

你的设备会形成一个私有P2P网络它们之间共享带宽提供网络数据转发服务。 当你的私有P2P网络下没有可以提供转发服务的节点时会尝试在公共P2P网络寻找转发节点。 默认会开启共享限速10mbps只有你用户下提供了共享节点才能使用别人的共享节点。这非常公平也是这个项目的初衷。 我们建议你在带宽足够的地方(比如办公室,家里的百兆光纤)加入共享网络。 如果你不想共享任何节点,或设置共享带宽,请查看详细使用说明

3. 安全

代码开源P2P隧道使用TLS1.3+AES双重加密共享节点临时授权使用TOTP一次性密码

查看详细

4. 轻量

文件大小2MB+运行内存2MB+;全部在应用层实现,没有虚拟网卡,没有内核程序

5. 跨平台

因为轻量所以很容易支持各个平台。支持主流的操作系统Windows,Linux,MacOS和主流的cpu架构386、amd64、arm、arm64、mipsle、mipsle64、mips、mips64

6. 高效

P2P直连可以让你的设备跑满带宽。不论你的设备在任何网络环境无论NAT1-4Cone或Symmetric都支持。依靠Quic协议优秀的拥塞算法能在糟糕的网络环境获得高带宽低延时。

7. 二次开发

基于OpenP2P只需数行代码就能让原来只能局域网通信的程序变成任何内网都能通信

快速入门

仅需简单4步就能用起来。
下面是一个远程办公例子在家里连入办公室Windows电脑。

1.注册

前往https://console.openp2p.cn 注册新用户,暂无需任何认证

image

2.安装

分别在本地和远程电脑下载后双击运行,一键安装

image

3.新建P2P应用

image

image

image

4.使用P2P应用

在“MyHomePC”设备上能看到刚才创建的P2P应用连接下图显示的“本地监听端口”即可。

image

在家里Windows电脑按Win+R输入mstsc打开远程桌面输入127.0.0.1:23389 /admin

image

image

详细使用说明

这里介绍如何手动运行

典型应用场景

特别适合大流量的内网访问

  • 远程办公: Windows MSTSC、VNC等远程桌面SSH内网各种ERP系统
  • 远程访问内网ERP系统
  • 远程访问NAS: 管理大量视频、图片
  • 远程监控摄像头
  • 远程刷机
  • 远程数据备份

概要设计

原型

image

客户端架构

image

P2PApp

它是项目里最重要的概念一个P2PApp就是把远程的一个服务mstsc/ssh等通过P2P网络映射到本地监听。二次开发或者我们提供的Restful API主要工作就是管理P2PApp image

安全性

加入OpenP2P共享网络的节点只能凭授权访问。共享节点只会中转数据别人无法访问内网任何资源。

1. TLS1.3+AES

两个节点间通信数据走业界最安全的TLS1.3通道。通信内容还会使用AES加密双重安全密钥是通过服务端作换。有效阻止中间人攻击

2. 共享的中转节点是否会获得我的数据

没错中转节点天然就是一个中间人所以才加上AES加密通信内容保证安全。中转节点是无法获取明文的

3. 中转节点是如何校验权限的

服务端有个调度模型根据带宽、ping值、稳定性、服务时长尽可能地使共享节点均匀地提供服务。连接共享节点使用TOTP密码hmac-sha256算法校验它是一次性密码和我们平时使用的手机验证码或银行密码器一样的原理。

编译

cd到代码根目录执行

export GOPROXY=https://goproxy.io,direct
go mod tidy
go build

TODO

近期计划:

  1. 支持IPv6
  2. 支持随系统自动启动,安装成系统服务
  3. 提供一些免费服务器给特别差的网络,如广电网络
  4. 建立网站用户可以在网站管理所有P2PApp和设备。查看设备在线状态升级增删查改重启P2PApp等
  5. 建立公众号用户可在微信公众号管理所有P2PApp和设备
  6. 客户端提供WebUI
  7. 支持自有服务器高并发连接
  8. 共享节点调度模型优化,对不同的运营商优化
  9. 方便二次开发提供API和lib
  10. 应用层支持UDP协议实现很简单但UDP应用较少暂不急
  11. 底层通信支持KCP协议目前仅支持QuicKCP专门对延时优化被游戏加速器广泛使用可以牺牲一定的带宽降低延时
  12. 支持Android系统让旧手机焕发青春变成移动网关
  13. 支持Windows网上邻居共享文件
  14. 内网直连优化,用处不大,估计就用户测试时用到

远期计划:

  1. 利用区块链技术去中心化,让共享设备的用户有收益,从而促进更多用户共享,达到正向闭环。
  2. 企业级支持,可以更好地管理大量设备,和更安全更细的权限控制

参与贡献

TODO或ISSUE里如果有你擅长的领域或者你有特别好的主意可以加入OpenP2P项目贡献你的代码。待项目茁壮成长后你们就是知名开源项目的主要代码贡献者岂不快哉。

商业合作

它是一个中国人发起的项目,更懂国内网络环境,更懂用户需求,更好的企业级支持

技术交流

QQ群16947733
邮箱:openp2p.cn@gmail.com tenderiron@139.com

免责声明

本项目开源供大家学习和免费使用,禁止用于非法用途,任何不当使用本项目或意外造成的损失,本项目及相关人员不会承担任何责任。