All Projects → gnbdev → opengnb

gnbdev / opengnb

Licence: GPL-3.0 License
GNB is open source de-centralized VPN to achieve layer3 network via p2p with the ultimate capability of NAT Traversal.GNB是一个开源的去中心化的具有极致内网穿透能力的通过P2P进行三层网络交换的VPN。

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to opengnb

Gnb
GNB is open source de-centralized VPN to achieve layer3 network via p2p with the ultimate capability of NAT Traversal.GNB是一个开源的去中心化的具有极致内网穿透能力的通过P2P进行三层网络交换的VPN。
Stars: ✭ 225 (-48.86%)
Mutual labels:  freebsd, openbsd, tcp, udp, nat-traversal, nat, p2p, windows-10, vpn, ed25519
packetdrill
packetdrill with UDPLite and SCTP support and bug fixes for FreeBSD
Stars: ✭ 37 (-91.59%)
Mutual labels:  freebsd, openbsd, tcp, udp
gnb udp over tcp
gnb_udp_over_tcp 是一个为GNB开发的通过tcp链路中转UDP分组转发的服务
Stars: ✭ 32 (-92.73%)
Mutual labels:  freebsd, openbsd, tcp, udp
Wireguard Docs
📖 Unofficial WireGuard Documentation: Setup, Usage, Configuration, and full example setups for VPNs supporting both servers & roaming clients.
Stars: ✭ 3,201 (+627.5%)
Mutual labels:  udp, nat, vpn, tuntap
Leaf
A lightweight and fast proxy utility tries to include any useful features.
Stars: ✭ 530 (+20.45%)
Mutual labels:  tcp, udp, vpn
Gsnova
Private proxy solution & network troubleshooting tool.
Stars: ✭ 509 (+15.68%)
Mutual labels:  tcp, nat, p2p
Mr2
Mr.2 can help you expose local server to external network. Support both TCP/UDP, of course support HTTP. Zero-Configuration.
Stars: ✭ 1,102 (+150.45%)
Mutual labels:  tcp, udp, nat
Python Nat Hole Punching
UDP and TCP NAT hole punching examples in python
Stars: ✭ 190 (-56.82%)
Mutual labels:  tcp, udp, p2p
Frpc Android
Android,安卓版frpc,一个快速反向代理,可帮助您将NAT或防火墙后面的本地服务器暴露给Internet。
Stars: ✭ 205 (-53.41%)
Mutual labels:  tcp, udp, nat
Pjon
PJON (Padded Jittering Operative Network) is an experimental, arduino-compatible, multi-master, multi-media network protocol.
Stars: ✭ 2,615 (+494.32%)
Mutual labels:  tcp, udp, p2p
ZeroHub
c# implementation aimed for nat traversal using OpenVPN tuntap driver
Stars: ✭ 15 (-96.59%)
Mutual labels:  nat, vpn, tuntap
Proxy admin free
Proxy是高性能全功能的http代理、https代理、socks5代理、内网穿透、内网穿透p2p、内网穿透代理、内网穿透反向代理、内网穿透服务器、Websocket代理、TCP代理、UDP代理、DNS代理、DNS加密代理,代理API认证,全能跨平台代理服务器。
Stars: ✭ 487 (+10.68%)
Mutual labels:  tcp, udp, nat
Libzt
ZeroTier Sockets - Put a network stack in your app
Stars: ✭ 486 (+10.45%)
Mutual labels:  tcp, udp, vpn
Nsmartproxy
NSmartProxy是一款开源免费的内网穿透工具。采用.NET CORE的全异步模式打造。(NSmartProxy is an open source reverse proxy tool that creates a secure tunnel from a public endpoint to a locally service.)
Stars: ✭ 547 (+24.32%)
Mutual labels:  tcp, nat, p2p
Nps
一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal.
Stars: ✭ 19,537 (+4340.23%)
Mutual labels:  tcp, udp, nat
http-connection-lifecycle
Complete and detailed explanation of HTTP connection lifecycle
Stars: ✭ 43 (-90.23%)
Mutual labels:  tcp, udp, nat
iit-kgp-network
Information repository and Solutions on IIT KGP Internet Problems.
Stars: ✭ 28 (-93.64%)
Mutual labels:  tcp, udp, vpn
vtun
A simple VPN written in Go.
Stars: ✭ 592 (+34.55%)
Mutual labels:  tun, udp, vpn
net-protocol
golang模拟内核协议栈 实现链路层、网络层、传输层、应用层 用户态协议栈 ,基于虚拟网卡TUN/TAP
Stars: ✭ 129 (-70.68%)
Mutual labels:  tcp, tun, udp
ipvpn
[WIP] Easy-to-use decentralized secure overlay private network (for any device)
Stars: ✭ 24 (-94.55%)
Mutual labels:  nat, p2p, vpn

OpenGNB

Chinese English Russian

OpenGNB 是一个开源的 P2P 去中心化的具有极致的内网穿透能力的 VPN 。

可以让你把公司-家庭网络组成直接访问的局域网。

GNB 项目相关所有代码以开源方式发布,当前发布的源码支持以下平台:FreeBSD Linux OpenWRT Raspberrypi OpenBSD macOS

GNB vs traditional VPN

GNB 特点

  1. 内网穿透 P2P VPN
    • 无需公网IP
  2. 极致的链路能力
    • 无限速影响
  3. 数据安全
    • GNB节点间基于椭圆曲线数字签名实现可靠的身份验证
  4. 多平台支持
    • GNB 用 C 语言开发,编译时不需要引用第三方库文件,可以方便移植到当前流行的操作系统上,目前支持的操作系统及平台有 Linux_x86_64,Windows10_x86_64, macOS,FreeBSD_AMD64,OpenBSD_AMD64,树莓派,OpenWRT;大至服务器环境,桌面系统,小至仅有 32M 内存的OpenWRT路由器都能很好的运行 GNB 网络。

GNB 快速上手

  • Linux 平台

步骤1: 下载编译 GNB 源码工程

git clone https://github.com/gnbdev/opengnb.git
cd opengnb
make -f Makefile.linux install

编译完毕后在 opengnb/bin/ 目录下可以得到 gnb gnb_crypto gnb_ctl gnb_es 这几个文件。

步骤2: 快捷部署 GNB 节点

gnb gnb_crypto gnb_ctl gnb_es 分别拷贝到主机 A 和主机 B 上。

假设主机 A 和主机 B 分别在两个不同的局域网里需要临时穿透内网互联,最快捷的途径通过 lite 模式运行 gnb,在 lite 模式下没有启用非对称加密,仅通过 passcode 和节点 id 生成加密密钥,因此安全性会比使用非对称加密的工作模块式低很多。

passcode 是一个长度为8个字符的32bit的16进制字符串,可以表示为 0xFFFFFFFFFFFFFFFF, 在一个 public index 下 passcode 相同的 GNB 节点被认为是同一个虚拟网络上的节点,请尽可能选择一个不会跟其他用户相同的 passcode,这里为了方便演示选定 passcode12345678, 参数 -p 用于指定启动节点的 passcode。在实际使用过程中请勿使用这样简单 passcode,这可能会与其他同样使用12345678作为的 passcode 的用户冲突导致通信失败。

步骤3: 启动第一个节点

主机 A 上用 root 执行

gnb -n 1001 -I "39.108.10.191/9001" --multi-socket=on -p 12345678

启动成功后,主机 A 上执行 ip addr 可见 GNB 节点 IP

3: gnb_tun: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet 10.1.0.1/16 scope global gnb_tun
       valid_lft forever preferred_lft forever
    inet6 64:ff9b::a01:1/96 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::402:c027:2cf:41f9/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

步骤4: 启动第二个节点

主机 B 上用 root 执行

gnb -n 1002 -I "39.108.10.191/9001" --multi-socket=on -p 12345678

启动成功后,主机 B 上执行 ip addr 可见 GNB 节点 IP

3: gnb_tun: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet 10.1.0.2/16 scope global gnb_tun
       valid_lft forever preferred_lft forever
    inet6 64:ff9b::a01:2/96 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::a6cf:9f:e778:cf5d/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

步骤5:测试 GNB 节点互通

此时,如果主机 A 和主机 B nat 穿透成功并确保主机上没有防火墙的干预的情况下,可以互相 ping 到对方的虚拟 ip。

主机 A 上执行

root@hostA:~# ping 10.1.0.2
PING 10.1.0.2 (10.1.0.2) 56(84) bytes of data.
64 bytes from 10.1.0.2: icmp_seq=1 ttl=64 time=2.13 ms
64 bytes from 10.1.0.2: icmp_seq=2 ttl=64 time=2.18 ms
64 bytes from 10.1.0.2: icmp_seq=3 ttl=64 time=2.38 ms
64 bytes from 10.1.0.2: icmp_seq=4 ttl=64 time=2.31 ms
64 bytes from 10.1.0.2: icmp_seq=5 ttl=64 time=2.33 ms

主机 B 上执行

root@hostA:~# ping 10.1.0.1
PING 10.1.0.1 (10.1.0.1) 56(84) bytes of data.
64 bytes from 10.1.0.1: icmp_seq=1 ttl=64 time=2.34 ms
64 bytes from 10.1.0.1: icmp_seq=2 ttl=64 time=1.88 ms
64 bytes from 10.1.0.1: icmp_seq=3 ttl=64 time=1.92 ms
64 bytes from 10.1.0.1: icmp_seq=4 ttl=64 time=2.61 ms
64 bytes from 10.1.0.1: icmp_seq=5 ttl=64 time=2.39 ms

以上 GNB lite 模式的最简使用过程,GNB lite 模式内置5个节点,如果需要更多主机参与组网和使用更安全的非对称加密方式保护 GNB 的数据通信,请仔细阅读下面的文档。

深入理解 GNB 指引

GNB 的 index 节点的角色类似于 BT 协议中的 Tracker,由一部分 GNB 网络志愿者提供。在绝大多数情况下index节点仅为 GNB 网内主机提供地址索引,不会为 GNB 节点中转数据。

一部分志愿者提供的 GNB 的forward节点可以为极端情况下暂时无法进行点对点通信的主机进行数据中转,而 GNB 主机之间的非对称数据加密使得forward节点无法窥探中转的数据。

在无法建立点对点通信的极端情况下,是否通过公网forward节点中转数据和使用哪个可信任的 forward 节点中转数据,完全取决在主机的拥有者对 GNB 节点的设置。事实上,即便处于极其复杂的网络环境,GNB 优越链路能力也可以随时随地建立虚拟数据链路,GNB 甚至会为网络中的主机创建多个虚拟链路,择速度最优路径发送数据分组。

这是由志愿者提供的可用index节点

i|0|156.251.179.84|9001
i|0|39.108.10.191|9001
i|0|101.32.178.3|9001
i|0|103.27.187.204|9001

GNB 的限制

  1. GNB 不支持 无类别域间路由(Classless Inter-Domain Routing、CIDR), 仅支持 A,B,C 类网络;
  2. GNB 不转发默认路由(Default route)的 IP 帧,在host to netnet to net 模式下 GNB 可以为特定的子网的数据做转发,但不支持全流量转发;
  3. 在 Windows 平台下 GNB 的 IPV6 目前无法正常工作;
  4. GNB 的使用虚拟网卡的工作在 TUN 模式下实现三层交换,不支持 TAP 模式即不支持二层交换;

GNB 相关文档

GNB在OpenWRT上

GNB 支持 OpenWRT 平台,需要用户自行编译。

GNB在Linux发行版上

《铜豌豆 Linux》项目为 GNB 项目制做了 Linux 下的 deb 格式软件包,详情请访问铜豌豆软件源

金步国 为 GNB 项目制作了 systemd 的脚本

taotieren 为 GNB 项目制作了 Arch Linux 的 AUR 包,安装方式如下

# 安装发行版
yay -Sy opengnb 
# 安装开发版
yay -Sy  opengnb-git

详情请访问 https://aur.archlinux.org/packages/opengnb/

https://aur.archlinux.org/packages/opengnb-git/

gnb 在各平台的编译发行版下载

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


免责声明

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].