去中心化 P2P 内网穿透 VPN GNB

AGPL
C/C++
跨平台
2020-02-19
Debianl

GNB是一个开源的去中心化的具有极致内网穿透能力的通过P2P进行三层网络交换的VPN。

gnb_udp_over_tcp是一个为GNB开发的通过tcp链路中转UDP分组转发的服务,也可以为其他基于UDP协议的服务中转数据。

GNBFrontend是由志愿者开发维护的开源的GNB的图形界面前端。

出于安全考虑,GNB项目相关代码会开源。

内网穿透 去中心化 P2P VPN

GNB独有的去中心化组网技术可以将分布在世界不同地方的计算机组成一个虚拟局域网,即使这些计算机深藏于没有公网ip的局域网里,不需要公网服务器中转就可以实现TCP/IP通讯。

极致的链路能力

GNB有四套机制确保在主机所在网络发生变化时能够快速恢复数据链路并且在某些场景下还能保持应用层的网络连接,以下是一个经过反复测试的例子: 1、在肯德基打开苹果笔记电脑本接入肯德基的免费Wi-Fi; 2、在苹果笔记电脑启动GNB的边缘节点,此时可以通过 ssh 客户端登录到家中的同样是接入GNB网络的一台Linux; 3、合上笔记本电脑并带着走出肯德基。 4、来到麦当劳,打开笔记本,接入麦当劳的免费Wi-Fi,稍等半分钟网络恢复; 5、此时苹果笔记本中的 ssh 客户端与家中Linux的ssh的tcp连接没有断开,依然是通的。

以上例子仅是说明应用层无法感知GNB网络的虚拟链路的变化以及GNB在网络发生变化时快速恢复链路的能力。事实上,对于一些有心跳机制的tcp通信协议如果在一定时间内没有收到心跳包,应用层就会自动断开连接。

数据安全

GNB节点间基于椭圆曲线数字签名实现可靠的身份验证

GNB节点之间的通信密钥由 ED25519共享密钥+同步时钟(可选)+sha512构成

在同步时钟的作用下,节点的加密密钥可以每分钟或每小时同步更新一次,但这要求各节点时钟的必须要同步,在无法确保主机时钟同步的情况下可以选择关闭这个特性。

多平台支持

GNB用C语言开发,编译时不需要引用第三方库文件,可以方便移植到当前流行的操作系统上。

GNB目前支持的操作系统及平台有 Linux_x86_64,Windows10_x86_64, macOS,FreeBSD_AMD64,OpenBSD_AMD64,树莓派,OpenWRT;大至服务器环境,桌面系统,小至仅有32M内存的OpenWRT路由器都能很好的运行GNB网络。

的码云指数为
超过 的项目
加载中

评论(39)

我是菜菜
我是菜菜
和 zerotier 有什么区别吗
携手归途
携手归途
load node private file[C:\Program Files (x86)\Window10_x86_64\gnb_with_frontend\ conf_tpl\1001/security/1001.private] key error
Nikolai_z
Nikolai_z
看了 https://gitee.com/gnbdev/gnb/blob/master/docs/gnb_setup.md介绍的三种模式,想问一个问题。对于node1来说 起到了什么作用 类似于中转么。能不配置node1直接两个内网的节点互通么。或者node1的公网IP属性才是重点?
小x工程师
小x工程师 软件作者
node1 是指?
Nikolai_z
Nikolai_z
https://gitee.com/gnbdev/gnb/blob/master/docs/gnb_setup.md 文章中的三个图中间都有的node1 带公网IP的那个机器
小x工程师
小x工程师 软件作者
OSC_HcYtpE
OSC_HcYtpE
试用了一下,感觉速度很慢
IENDISS
IENDISS
还没体验就感觉很牛逼,感谢楼主分享!
雨潇97
厉害啊,怒赞,就是在github上只发现了Windows的下载版本,还没有Mac的,坐等尝试~
小x工程师
小x工程师 软件作者
GUI只有Windows的,GNB核心现在放出来的有Linux,FreeBSD、OpenBSD、macOS、树莓派、还有几个OpenWRT的。
hiplon
hiplon
平时tinc用得比较多,找个时间对比一下
W
WangTiny
哥牛逼GNB
IdleMan
IdleMan
好像很牛逼
p
papa森
以前在学校实验打洞失败,有的nat设备会拦截从其他ip地址发来数据。gnb遇到这种情况只能用forward中转数据吗
BaiYang
BaiYang
NAT 有四种,其中三种锥形(全锥、受限和端口受限)的都可以穿透,只有全对称的 NAT 无法穿透,详见 stun 协议相关介绍 https://en.wikipedia.org/wiki/STUN。 全对称的 NAT 应该很少,家里的宽带路由器、电信和移动的大 NAT 以及大多数公司用的都不是全对称。所以 99% 应该都是能穿透的。
dwingo
dwingo
移动通信4G就是全对称NAT的, 这个占比如何?
BaiYang
BaiYang
前两个月刚测试过上海移动的 4G 不是全对称,STUN 可以成功打穿。
BaiYang
BaiYang
其实我觉得电信级 NAT 用全对称的概率很低,因为它追求的是超高并发而非安全。全对称因为要跟踪、记录和实时匹配所有 socket 5 元组信息,因此对性能影响较大,也需要更多的计算资源。其带来的好处无非是更安全而已,而这恰恰与电信级 NAT 的侧重点相反。我觉得如果移动 4G 碰到无法打穿的情况,更大可能是碰到了其它通信问题,而非 NAT 类型导致。
dwingo
dwingo
全对称的“优点”难道不是阻止p2p传输,屏蔽bt迅雷emule么
dwingo
dwingo
有专门搞打洞的团队调查过的:https://www.zhihu.com/answer/79532851
小x工程师
小x工程师 软件作者
我这个回复不能概括完所有的情景,我只说其中一个方面:对于一些宽带运营商,一个在nat后的主机,可能同时有两个或者两个以上的出口ip。 举例说,你访问网站A,网站A看到你的ip是a.a.a.a,当你访问网站B时,网站B看到你的ip是b.b.b.b; 两台nat后面的主机相连也会遇到类似的情况,你访问gnb inde node时的ip是a.a.a.a,而你试图去连另一个gnb节点时可能用的ip是b.b.b.b,而这台主机从gnb index node获得你主机ip地址却是a.a.a.a,探测的数据自然也是发往a.a.a.a,于是运营商的nat是可能不会让数据通过的,由于运营商这侧已经过不来,即使通信的两边主机的路由开了upnp也没用。 因此遇到这种情况时,1台gnb index node是很难发现帮助两台nat后的机器互连的,多台gnb index node有助提升 gnb node 点对点通讯的成功率,gnb的节点地址探测机制可以让节点从不同的index node获取对端的ip地址和端口去做地址端口探测。 当然,即便走到这一步,也不能保证nat穿透是100%的,这就像下BT一样,总有一些节点是连不上的。
BigBig未来
BigBig未来
有没有服务器端啊,自己搭建试试看啊
小x工程师
小x工程师 软件作者
GNB是去中心化,没有所谓的服务端和客户端,统一叫GNB node。
BigBig未来
BigBig未来
你这个所谓的 gnb index node 不就是服务端啊?提供公网ip供别的node连接啊? 如果自己搭建怎么搭建啊?
小x工程师
小x工程师 软件作者
比如使用BT通过DHT去下载文件,也涉及到一些公共的种子节点,包括通过DNS去查询一些节点的位置,GNB的 index node 的角色类似于DNS,这种节点不会转发用户的ip分组,任何节点都可以成为 index node。 如果用到了GNB中转节点,并且中转节点数量很少的情况下这种就是中心化的结构。 具体的,自行搭建节点可以看这里 https://gitee.com/gnbdev/gnb/blob/master/docs/gnb_for_linux_manual.md 简单的,可以从GUI整合包开始 https://gitee.com/gnbdev/GNBFrontend
BigBig未来
BigBig未来
谢谢大牛牛; 你的意思是,一个可执行文件,本身就具备 node 和 index node的两种功能吗?
小x工程师
小x工程师 软件作者
回复 @BigBig未来 : 是的,还有forward node,文档里有详细介绍。

暂无资讯

暂无问答

VIAVI将亮相2019世界移动通信大会,展示面向5G的解决方案

VIAVI Solutions公司(纳斯达克股票代码:VIAV)将于2月25日至28日在巴塞罗那举办的世界移动通信大会展示面向5G的Lab To Field™测试和保障产品组合。VIAVI Lab To Field™ 测试系统可促进5G网...

2019/03/16 12:55
75
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部