El protocolo de comunicación de OpenGNB versión 1.5.0 se ha actualizado y no es compatible
Inglés chino
Nota: La mayor parte del contenido de este artículo es traducido por Google Translate de la versión china del "Manual de usuario de OpenGnb", el contenido de este artículo está sujeto a la versión china.
OpenGNB es un software descentralizado P2P de código abierto definida a la red virtual con capacidad de penetración de intranet extrema, le permite combinar su red de empresas en una LAN de acceso directo.
Todo el código relacionado con el proyecto GNB se lanza como código abierto, y el código fuente publicado actualmente admite las siguientes plataformas: FreeBSD Linux OpenWrt Raspberrypi OpenBSD MacOS
diagrama de flujo LR
subgraph lan a
Nodea [VPN ClientA]
fin
Subgraph Wan
NODEF [servidor VPN]
fin
Subgraph Lan B
NODEB [VPN ClientB]
fin
nodea <-carga útil ---> nodef <-carga útil ---> nodeb
NAT Traversal Point to Point
diagrama de flujo LR
subgraph lan a
Nodea [GNB Nodea]
fin
Subgraph Wan
índice [nodo de índice público GNB]
fin
Subgraph Lan B
NODEB [GNB NODEB]
fin
Nodea -. NODEB DIRECCIÓN .- ÍNDICE -. dirección nodea.- nodeb
Nodea <-Payload-> NodeB
diagrama de flujo LR
subgraph lan a
Nodea [GNB Nodea]
fin
Subgraph Wan
Nodec [Nodec]
nodo [nodo]
nodoe [nodoe]
NODEF [NODEF]
nodej [nodej]
nodok [nodok]
nodeg [nodeg]
nodeh [nodeh]
nodei [nodei]
fin
Subgraph Lan B
NODEB [GNB Nodea]
fin
Nodea [nodoa] ---- Nodec [nodec] ---- Noded [nodo] ---- Nodee [nodoe] ----- nodef [nodef] ---- Nodeb [nodeb]
Nodea [nodea] ----- Nodeg [nodeg] ----- nodeh [nodeh] ----- nodei [nodei] ---- Nodeb [nodeb]
Nodea [nodea] ----- NodeJ [nodej] ---- Nodek [nodok] ----- Nodeb [nodeb]
diagrama de flujo LR
subgraph lan a
Nodea [GNB Nodea]
fin
Subgraph Lan C
Nodec [GNB Nodec]
fin
Subgraph Lan D
Nodiado [GNB Nodado]
fin
Subgraph Lan E
Nodee [GNB Nodee]
fin
Subgraph Lan B
NODEB [GNB NODEB]
fin
Nodea ---- Nodec & Noded & Nodee ---- NodeB
diagrama de flujo LR
subgraph lan a
Nodea [GNB Nodea]
upd_over_tcp_a [upd_over_tcp]
fin
Subgraph Wan
upd_over_tcp_b [upd_over_tcp]
NODEB [GNB NODEB]
fin
Nodea --UDP Payload --- upd_over_tcp_a-tcp carga útil --- upd_over_tcp_b --udp carga útil --- nodeb
git clone https://github.com/gnbdev/opengnb.git
cd opengnb
make -f Makefile.linux install
Después de compilar, puede obtener los archivos gnb gnb_crypto gnb_ctl gnb_es en el directorio opengnb/bin/ .
Copie gnb gnb_crypto gnb_ctl gnb_es para host A y Host B respectivamente.
Suponiendo que el host A y el host B necesiten penetrar temporalmente la interconexión de la intranet en dos LAN diferentes, la forma más rápida es ejecutar GNB a través del modo Lite. En el modo Lite, el cifrado asimétrico no está habilitado, y solo a través del código de contraseña y el ID del nodo genera la clave de cifrado, por lo que la seguridad será mucho menos modular que trabajar con cifrado asimétrico.
PassCode es una cadena hexadecimal de 32 bits con una longitud de 8 caracteres, que se puede representar como 0xffffffff o ffffffff , bajo un código de paso de índice público es el mismo nodo GNB, se considera un nodo en la misma red virtual. Elija un código de acceso que no sea lo mismo que otros usuarios tanto como sea posible. Aquí, para la conveniencia de la demostración, el código de contraseña se selecciona como 12345678 , y el parámetro **-P ** utilizado para especificar el código de contraseña para iniciar el nodo. No use un código de acceso tan simple en uso real, puede entrar en conflicto con otros usuarios que también usan 12345678 como código de acceso y causan falla de comunicación.
Ejecutar con root en el host a
gnb -n 1001 -I "120.76.206.113/9001" --multi-socket=on -p 12345678
Después de que el inicio sea exitoso, ejecute IP AdDR en el host A para ver el nodo GNB IP
3: gnb_do: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
Ejecutar con root en el host B
gnb -n 1002 -I "120.76.206.113/9001" --multi-socket=on -p 12345678
Una vez que el inicio sea exitoso, ejecute IP AdDR en el host B para ver el nodo GNB IP
3: gnb_do: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
En este punto, si el host A y el host b nat penetran con éxito y aseguran que no haya intervención de firewall en el host, pueden hacer ping a la IP virtual del otro.
Ejecutar en el host 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
Ejecutar en el host 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
El proceso de uso más simple del modo GNB Lite anterior, el modo GNB Lite tiene 5 nodos incorporados, si necesita más hosts para participar en las redes y utilizar un método de cifrado asimétrico más seguro para proteger la comunicación de datos de GNB cuidadosamente los siguientes documentos.
El papel del nodo índice de GNB es similar al rastreador en el protocolo BT, que proporciona algunos voluntarios de la red GNB. En la mayoría de los casos, el nodo index solo proporciona el índice de direcciones para los hosts en la red GNB, y no transferirá datos para el nodo GNB.
El nodo forward de GNB proporcionado por algunos voluntarios puede realizar la transferencia de datos para los hosts que no pueden realizar temporalmente la comunicación punto a punto en casos extremos, y el cifrado de datos asimétricos entre los hosts GNB hace que sea imposible que el nodo forward espíe en los datos transferidos.
En casos extremos en los que no se puede establecer la comunicación entre pares, ya sea para transferir datos a través del nodo forward de la red pública y en el que confiaba el nodo avanzado para usar para transferir datos depende completamente de la configuración del propietario del host en el nodo GNB. De hecho, incluso en un entorno de red extremadamente complejo, la capacidad de enlace superior de GNB puede establecer enlaces de datos virtuales en cualquier momento y en cualquier lugar. GNB incluso creará múltiples enlaces virtuales para hosts en la red y elegirá la ruta de velocidad óptima para enviar paquetes de datos.
Aquí están los nodos index disponibles proporcionados por voluntarios
i|0|101.32.178.3|9001
host to net y net to net , GNB puede reenviar datos para subredes específicas, pero no admite el reenvío de tráfico completo;GNB admite la plataforma OpenWRT y debe ser compilada por el usuario.
El script Systemd fue realizado por Jin Buguo para el proyecto GNB
El proyecto Atzlinux ha realizado un paquete de software de formato DEB bajo Linux para el proyecto GNB, y lo contribuyó a convertirse en el paquete oficial de software Debian.
Puede instalar OpenGnb en Debian 12 (Bookworm):
apt install opengnbEl paquete AUR de Arch Linux fue hecho por Taotieren para el proyecto GNB. El método de instalación es el siguiente
# install distribution
yay -Sy opengnb
# Install the development version
yay -Sy opengnb-gitPara obtener más detalles, visite https://aur.archlinux.org/packages/opengnb/
https://aur.archlinux.org/packages/opengnb-git/
Descargue la versión compilada y lanzada de GNB en cada plataforma
GNB_UDP_OVER_TCP es un servicio desarrollado para GNB que reenvía los paquetes UDP a través del enlace TCP, y también puede reenviar datos para otros servicios basados en el protocolo UDP.
Descargo de responsabilidad