"Hay varias formas de crear una solución (para resolver un problema), pero no siempre es la forma más costosa y / o popular, ¡la más efectiva!"Preámbulo
Hace aproximadamente tres años, en el proceso de desarrollo de un modelo de recuperación de desastres remota, me encontré con un obstáculo que no se detectó de inmediato: la falta de información sobre nuevas soluciones originales para la virtualización de redes en fuentes comunitarias.
->
Una guía práctica para construir redes virtuales. Parte 1El algoritmo del modelo desarrollado se planificó de la siguiente manera:
- Un usuario remoto que se contactó conmigo y cuya computadora una vez se negó a arrancar con el mensaje "disco del sistema no detectado / no formateado" lo carga usando USB de vida.
- Durante el proceso de arranque, el sistema se conecta automáticamente a una red de área local privada segura, además de la cual hay una estación de trabajo de administrador, en este caso una computadora portátil y un nodo NAS.
- Luego me conecto, ya sea para reanimar las particiones del disco o para extraer los datos de allí.
Inicialmente, implementé este modelo usando un servidor VPN en un enrutador local en mi red, luego en un VDS alquilado. Pero, como suele suceder, y de acuerdo con la primera ley de Chisholm, pasará la lluvia: el proveedor de Internet "caerá" la red, luego las disputas de las entidades comerciales: el proveedor de energía desaparecerá del proveedor de servicios ...
Por lo tanto, decidí primero formular los requisitos básicos que la herramienta necesaria debería cumplir. El primero es la descentralización. El segundo, dado que tengo varios USB de este tipo, entonces para cada uno de ellos hay una red aislada separada. Y el tercero es la conexión rápida de varios dispositivos a la red y su administración simple, incluso en caso de que mi computadora portátil también sea víctima de la ley mencionada anteriormente.
Basado en esto y gastando dos meses y medio en la investigación práctica de varias opciones no muy adecuadas, yo, bajo mi propio riesgo y riesgo, decidí probar otra herramienta de una startup desconocida para mí y luego llamada ZeroTier. Lo que luego nunca se arrepintió.
En estas vacaciones de Año Nuevo, tratando de entender si la situación con el contenido ha cambiado desde ese momento memorable, realicé una auditoría selectiva para la disponibilidad de artículos sobre este tema, tomando la fuente: Habr. A petición de "ZeroTier" en los resultados de búsqueda de los cuales solo hay tres artículos con su mención, y no uno solo, al menos con una breve pero descripción. Y esto a pesar del hecho de que entre ellos hay una traducción de un artículo escrito por el fundador de ZeroTier, Inc. -
Adam Ierymenko .
Los resultados me decepcionaron y me llevaron a comenzar a hablar sobre ZeroTier con más detalle, salvando a los "buscadores" modernos de la necesidad de seguir la misma ruta que yo seguí.
Entonces que eres
El desarrollador posiciona ZeroTier como un conmutador Ethernet inteligente para el planeta Tierra.
“Este es un hipervisor de red distribuido basado en una red global de igual a igual (P2P) criptográficamente segura. Una herramienta corporativa similar a SDN diseñada para organizar redes virtuales sobre redes físicas, tanto locales como globales, con la capacidad de conectar casi cualquier aplicación o dispositivo ".
Esta es más una descripción de marketing, ahora sobre características tecnológicas.
▍ Kernel:
ZeroTier Network Hypervisor es un motor de virtualización de red independiente que emula una red Ethernet, similar a VXLAN, a través de una red global cifrada punto a punto (P2P).
Los protocolos utilizados en ZeroTier son originales, aunque son similares en apariencia a VXLAN e IPSec y consisten en dos niveles conceptualmente separados, pero estrechamente relacionados: VL1 y VL2.
→
Enlace a la documentación▍VL1 es la capa básica de transporte punto a punto (P2P), a su manera, un "cable virtual".
"Un centro de datos global requiere un" gabinete global "con cables".En las redes convencionales, L1 (capa 1 de OSI) se refiere a los cables reales o canales de radio inalámbricos a través de los cuales se transmiten los datos, y a los chips físicos de los dispositivos de transmisión-recepción que los modulan y demodulan. VL1 es una red punto a punto (P2P) que hace lo mismo, utilizando cifrado, autenticación y otros trucos de red para organizar los cables virtuales según sea necesario.
Además, lo hace de forma automática, rápida y sin que un usuario inicie un nuevo nodo ZeroTier.
Para lograr esto, VL1 se organiza de manera similar al sistema de nombres de dominio. La red se basa en un grupo de servidores raíz altamente accesibles, cuya función es similar a la de los servidores de nombres raíz DNS. Por el momento, los servidores raíz principales (planetarios) son administrados por el desarrollador: ZeroTier, Inc. y se proporcionan como un servicio gratuito.
Sin embargo, es posible crear servidores raíz personalizados (lunas) que permitan:
- reducir la dependencia de infraestructura ZeroTier, Inc.; Enlace de documentación
- aumentar la productividad al minimizar los retrasos;
- continuar trabajando como de costumbre en caso de pérdida de la conexión a Internet.
Inicialmente, los nodos comienzan sin conexiones directas entre sí.
Cada nodo par en VL1 tiene una dirección ZeroTier única de 40 bits (10 dígitos hexadecimales) que, a diferencia de las direcciones IP, es un identificador cifrado que no contiene datos de ruta. Esta dirección se calcula a partir de la parte pública del par de claves pública / privada. La dirección de nodo, la clave pública y la clave privada juntas forman su identidad.
Member ID: df56c5621c | ZeroTier address of node
En cuanto al cifrado, esta es una ocasión para un artículo separado.
→
Enlace a la documentaciónPara establecer la comunicación, los pares primero envían paquetes "hacia arriba" a través del árbol del servidor raíz y, a medida que estos paquetes viajan a través de la red, inician la creación aleatoria de canales directos a lo largo de esta ruta. El árbol está constantemente intentando "colapsarse" para optimizar el esquema de ruta que almacena.
El mecanismo de configuración punto a punto es el siguiente:

- El nodo A quiere enviar un paquete al nodo B, pero como no conoce la ruta directa, lo envía en sentido ascendente al nodo R (luna, servidor raíz del usuario).
- Si el nodo R tiene una conexión directa con el nodo B, reenvía el paquete allí. De lo contrario, envía el paquete en la dirección aguas arriba hasta que alcanza las raíces planetarias. Las raíces planetarias conocen todos los nodos, por lo que eventualmente el paquete llegará al nodo B si está en línea.
- El nodo R también envía un mensaje llamado "cita" al nodo A que contiene sugerencias sobre cómo puede llegar al nodo B. Mientras tanto, el servidor raíz, que reenvía el paquete al nodo B, envía una "cita" informándole sobre cómo puede llegar nodo A.
- Los nodos A y B reciben sus mensajes en el punto de encuentro e intentan enviarse mensajes de prueba entre sí, tratando de romper las brechas en NAT o firewalls con estado encontrados en el camino. Si esto funciona, entonces se establece una conexión directa y los paquetes ya no van a "jardines".
Si no se puede establecer una conexión directa, la conexión continuará a través del relé y los intentos de conexión directa continuarán hasta que se alcance un resultado positivo.
VL1 también tiene otras características para establecer una conexión directa, incluido el descubrimiento punto a punto de LAN, la predicción de puertos para el cruce simétrico de IPv4 NAT y el mapeo explícito de puertos usando uPnP y / o NAT-PMP, si está disponible en la LAN física local.
→
Enlace a la documentación▍VL2: protocolo de virtualización Ethernet similar a VXLAN con funciones de administración SDN. Un entorno de comunicación familiar para SO y aplicaciones ...
A diferencia de VL1, la creación de redes VL2 (VLAN) y la conexión de nodos a ellas, así como su gestión, requiere que el usuario participe directamente. Él puede hacer esto usando un controlador de red. De hecho, es un nodo ZeroTier normal, donde las funciones del controlador se controlan de dos maneras: directamente, cambiando los archivos o, como recomienda el desarrollador, utilizando la API publicada.
Este método de gestión de redes virtuales ZeroTier no es muy conveniente para un simple laico, por lo que hay varias GUI:
- Uno del desarrollador ZeroTier, disponible como una solución de nube pública proporcionada por el modelo SaaS, con cuatro planes de suscripción, incluido gratuito, pero limitado en la cantidad de dispositivos administrados y el nivel de soporte
- El segundo es de un desarrollador independiente, algo simplificado en funcionalidad, pero disponible como una solución privada de código abierto, para uso local o en recursos en la nube.
La capa VL2 se implementa sobre VL1 y es transportada por ella. Al mismo tiempo, hereda el cifrado y la autenticación del punto final del nivel VL1, y también utiliza sus claves asimétricas para firmar y verificar las credenciales. La capa VL1 le permite implementar VL2 sin preocuparse por la topología existente de la red física. Es decir, los problemas de conectividad y la eficiencia del enrutamiento son tareas de nivel VL1. Es importante comprender que no hay conexión entre las redes virtuales VL2 y las rutas VL1. Al igual que la multiplexación de VLAN en una LAN con cable, dos nodos que comparten varias membresías de red comunes solo tendrán una ruta VL1 (cable virtual) entre ellos.
Cada red VL2 (VLAN) se identifica por la dirección de 64 bits (16 dígitos hexadecimales) de la red ZeroTier, que contiene la dirección de 40 bits del controlador ZeroTier y un número de 24 bits que identifica la red creada por este controlador.
Network ID: 8056c2e21c123456 | | | Network number on controller | ZeroTier address of controller
Cuando un nodo se une a una red o solicita una actualización de configuración de red, envía un mensaje de solicitud de configuración de red al controlador de red (a través del nivel VL1). El controlador luego usa la dirección VL1 del nodo para encontrarlo en la red y enviarle los certificados, credenciales e información de configuración adecuados. Desde el punto de vista de las redes virtuales VL2, las direcciones VL1 ZeroTier pueden considerarse como números de puerto en un gran conmutador virtual de escala global.
Todas las credenciales emitidas por los controladores de red a los nodos que participan en esta red se firman con la clave secreta del controlador para que todos los participantes de la red puedan verificarlas. Las credenciales tienen marcas de tiempo creadas por el controlador, lo que permite comparaciones relativas sin tener que acceder al reloj del sistema local del nodo.
Las credenciales se emiten solo a sus propietarios y luego se envían a los pares que desean intercambiar datos con otros nodos en la red. Esto permite que la red escale a un tamaño enorme sin la necesidad de almacenar en caché una gran cantidad de credenciales en los nodos o acceder constantemente al controlador de red.
Las redes ZeroTier admiten multidifusión a través de un sistema simple de publicación / suscripción.
→
Enlace a la documentaciónCuando un nodo desea recibir correo de multidifusión para un grupo de distribución específico, anuncia la pertenencia a este grupo a otros miembros de la red con la que está conectado y al controlador de red. Cuando un nodo desea enviar correo de multidifusión, accede simultáneamente a su caché de publicaciones recientes y solicita periódicamente publicaciones adicionales.
La transmisión (Ethernet ff: ff: ff: ff: ff: ff) se considera un grupo de multidifusión al que se suscriben todos los miembros. Se puede deshabilitar a nivel de red para reducir el tráfico si no es necesario.
ZeroTier emula un conmutador Ethernet real. Este hecho permite
combinar las redes virtuales creadas con otras redes Ethernet (LAN cableada, WiFi, backplane virtual, etc.) a nivel de enlace de datos utilizando un puente Ethernet convencional.Para actuar como puente, el controlador de red debe designar el nodo de red como tal. Este esquema se implementa por razones de seguridad, ya que los nodos de red ordinarios no pueden enviar tráfico desde una fuente que no sea su dirección MAC. Los nodos asignados por los puentes también usan un modo especial del algoritmo de direccionamiento de multidifusión, que interactúa con ellos de manera más agresiva y direccional durante las suscripciones grupales y la replicación de todo el tráfico de difusión y las solicitudes ARP.
El conmutador también tiene la capacidad de crear redes públicas y ad-hoc, un mecanismo de QoS y un editor de reglas de red.
▍Nodo:
ZeroTier One es un servicio que se ejecuta en computadoras portátiles, computadoras de escritorio, servidores, máquinas virtuales y contenedores, que proporciona conexiones a una red virtual a través de un puerto de red virtual, como un cliente VPN.
Después de instalar e iniciar el servicio, puede conectarse a redes virtuales utilizando sus direcciones de 16 dígitos. Cada red se parece a un puerto de red virtual en el sistema, que se comporta igual que un puerto Ethernet normal.
ZeroTier One está actualmente disponible para los siguientes sistemas operativos y sistemas operativos.
Sistemas operativos:
- Microsoft Windows : instalador MSI x86 / x64
- MacOS - instalador PKG
- Apple iOS - App Store
- Android - Play Store
- Linux - DEB / RPM
- FreeBSD - paquete FreeBSD
NAS:
- Synology NAS
- QNAP NAS
- WD MyCloud NAS
Otros:
- Docker - archivo docker
- OpenWRT - puerto comunitario
- Incrustación de aplicaciones : SDK (libzt)
Para resumir todo lo anterior, diría que ZeroTier es una herramienta excelente y rápida para combinar sus recursos físicos, virtuales o en la nube en una red local común, con la posibilidad de dividirlo en VLAN y la ausencia de un solo punto de falla.
En él con una parte teórica en un formato del primer artículo sobre ZeroTier para Habr, ¡probablemente todos! En el próximo artículo, planeo demostrar en la práctica la creación de una infraestructura de red virtual basada en ZeroTier, donde VDS con una plantilla de GUI de código abierto privado se utilizará como controlador de red.
Estimados lectores! ¿Utiliza la tecnología ZeroTier en sus proyectos? Si no, ¿qué herramientas utiliza para combinar sus recursos en una red común?
