Switch Ethernet intelixente para o planeta Terra

Switch Ethernet intelixente para o planeta Terra
"Podes crear unha solución (resolver un problema) de varias maneiras, pero o método máis caro e/ou popular non sempre é o máis eficaz!"

Preámbulo

Hai uns tres anos, no proceso de desenvolvemento dun modelo remoto para a recuperación de datos de desastres, atopei un obstáculo que non se deu conta de inmediato: a falta de información sobre novas solucións orixinais para a virtualización da rede nas fontes da comunidade. 

O algoritmo para o modelo desenvolvido planificouse do seguinte xeito: 

  1. Un usuario remoto que se contactou comigo, cuxo ordenador xa se negou a arrincar, mostrando a mensaxe "disco do sistema non detectado/non formateado", cárgao usando Life USB. 
  2. Durante o proceso de inicio, o sistema conéctase automaticamente a unha rede local privada segura, que ademais de si contén a estación de traballo do administrador, neste caso un portátil, e un nodo NAS. 
  3. Despois conéctome, xa sexa para resucitar as particións do disco ou para extraer datos de alí.

Inicialmente, implementei este modelo usando un servidor VPN nun enrutador local nunha rede baixo o meu control, despois nun VDS alugado. Pero, como ocorre a miúdo e segundo a primeira lei de Chisholm, se chove, a rede do provedor de Internet caerá, entón as disputas entre entidades comerciais farán que o provedor de servizos perda "enerxía"...

Por iso, decidín formular primeiro os requisitos básicos que debe cumprir a ferramenta necesaria. O primeiro é a descentralización. En segundo lugar, dado que teño varios USB vitais deste tipo, cada un deles ten unha rede illada separada. Pois, en terceiro lugar, conexión rápida á rede de varios dispositivos e xestión sinxela dos mesmos, incluso no caso de que o meu portátil tamén sexa vítima da lei mencionada anteriormente.

En base a isto e despois de dedicar dous meses e medio á investigación práctica de varias opcións pouco axeitadas, eu, baixo o meu propio risco e risco, decidín probar outra ferramenta dunha startup descoñecida para min naquel momento chamada ZeroTier. Do que nunca me arrepintei despois.

Nestas vacacións de ano novo, tratando de comprender se cambiou a situación cos contidos desde aquel memorable momento, realicei unha auditoría selectiva para a dispoñibilidade de artigos sobre este tema, utilizando Habr como fonte. Para a consulta "ZeroTier" nos resultados da busca só hai tres artigos que a mencionan, e nin un só con polo menos unha breve descrición. E iso a pesar de que entre eles hai unha tradución dun artigo escrito polo propio fundador de ZeroTier, Inc. — Adam Ierymenko.

Os resultados foron decepcionantes e impulsáronme a comezar a falar de ZeroTier con máis detalle, evitando que os "buscadores" modernos teñan que seguir o mesmo camiño que eu fixen.

Entón, que es ti?

O desenvolvedor sitúa a ZeroTier como un interruptor Ethernet intelixente para o planeta Terra. 

"É un hipervisor de rede distribuída construído sobre unha rede global peer-to-peer (P2P) segura criptográficamente. Unha ferramenta similar a un conmutador SDN corporativo, deseñada para organizar redes virtuais sobre outras físicas, tanto locais como globais, coa posibilidade de conectar case calquera aplicación ou dispositivo”.

Esta é máis unha descrición de mercadotecnia, agora sobre as características tecnolóxicas.

▍Núcleo: 

ZeroTier Network Hypervisor é un motor de virtualización de rede autónomo que emula unha rede Ethernet, similar a VXLAN, ademais dunha rede P2P (peer-to-peer) cifrada global.

Os protocolos utilizados en ZeroTier son orixinais, aínda que similares en aparencia a VXLAN e IPSec e consisten en dúas capas conceptualmente separadas, pero moi relacionadas: VL1 e VL2.

Ligazón á documentación

▍VL1 é unha capa básica de transporte punto a punto (P2P), unha especie de "cable virtual".

"Un centro de datos global require un 'armario global' de cableado".

Nas redes convencionais, L1 (OSI Layer 1) refírese aos cables reais ou radios sen fíos que transportan datos e aos chips físicos do dispositivo transceptor que os modulan e demodulan. VL1 é unha rede peer-to-peer (P2P) que fai o mesmo, usando cifrado, autenticación e outros trucos de rede para organizar os cables virtuais segundo sexa necesario.

Ademais, faino de forma automática, rápida e sen a implicación do usuario para lanzar un novo nodo ZeroTier.

Para conseguilo, VL1 organízase de forma similar ao sistema de nomes de dominio. No corazón da rede hai un grupo de servidores raíz de alta dispoñibilidade, cuxo papel é semellante ao dos servidores de nomes raíz DNS. Polo momento, os principais servidores raíz (planetarios) están baixo o control do desenvolvedor - ZeroTier, Inc. e ofrécense como servizo gratuíto. 

Non obstante, é posible crear servidores raíz personalizados (luns) que che permitan:

  • reducir a dependencia da infraestrutura de ZeroTier, Inc.; Ligazón á documentación
  • aumentar a produtividade minimizando os atrasos; 
  • continuar funcionando normalmente se se perde a conexión a Internet.

Inicialmente, os nodos lánzanse sen conexións directas entre si. 

Cada par en VL1 ten un enderezo ZeroTier único de 40 bits (10 hexadecimales), que, a diferenza dos enderezos IP, é un identificador cifrado que non contén información de enrutamento. Este enderezo calcúlase a partir da parte pública do par de chaves pública/privada. O enderezo dun nodo, a clave pública e a clave privada xuntos forman a súa identidade.

Member ID: df56c5621c  
            |
            ZeroTier address of node

En canto ao cifrado, este é un motivo para un artigo separado.

Ligazón á documentación

Para establecer a comunicación, os compañeiros primeiro envían paquetes "arriba" na árbore dos servidores raíz e, a medida que estes paquetes viaxan pola rede, inician a creación aleatoria de canles de avance ao longo do camiño. A árbore está constantemente tentando "colapsarse por si mesma" para optimizarse para o mapa de rutas que almacena.

O mecanismo para establecer unha conexión peer-to-peer é o seguinte:

Switch Ethernet intelixente para o planeta Terra

  1. O nodo A quere enviar un paquete ao nodo B, pero como non coñece a ruta directa, envíao río arriba ao nodo R (moon, o servidor raíz do usuario).
  2. Se o nodo R ten unha conexión directa co nodo B, envía o paquete alí. En caso contrario, envía o paquete río arriba antes de chegar ás raíces planetarias.As raíces planetarias coñecen todos os nodos, polo que o paquete eventualmente chegará ao nodo B se está en liña.
  3. O nodo R tamén envía unha mensaxe chamada "rendezvous" ao nodo A, que contén suxestións sobre como pode chegar ao nodo B. Mentres tanto, o servidor raíz, que reenvía o paquete ao nodo B, envía unha "rendezvous" informándoo de como pode chegar ao nodo A.
  4. Os nós A e B reciben as súas mensaxes de encontro e intentan enviarse mensaxes de proba entre si para tentar violar calquera NAT ou firewalls con estado que se atopen no camiño. Se isto funciona, establécese unha conexión directa e os paquetes xa non van e voltan.

Se non se pode establecer unha conexión directa, a comunicación continuará a través de relé e os intentos de conexión directa continuarán ata que se consiga un resultado exitoso. 

VL1 tamén ten outras funcións para establecer a conectividade directa, incluíndo o descubrimento de pares de LAN, a predición de portos para atravesar a NAT IPv4 simétrica e a asignación explícita de portos mediante uPnP e/ou NAT-PMP se está dispoñible na LAN física local.

→ Ligazón á documentación

▍VL2 é un protocolo de virtualización de rede Ethernet tipo VXLAN con funcións de xestión SDN. Entorno de comunicación familiar para SO e aplicacións...

A diferenza de VL1, a creación de redes VL2 (VLAN) e a conexión de nós a elas, así como a súa xestión, require a participación directa do usuario. Pode facelo usando un controlador de rede. En esencia, é un nodo ZeroTier normal, onde as funcións do controlador se controlan de dúas formas: ben directamente, cambiando ficheiros ou, como recomenda encarecidamente o programador, utilizando unha API publicada. 

Este método de xestión de redes virtuais ZeroTier non é moi cómodo para a persoa media, polo que hai varias GUI:
 

  • Un do desarrollador ZeroTier, dispoñible como solución SaaS de nube pública con catro plans de subscrición, incluído gratuíto, pero limitado no número de dispositivos xestionados e o nivel de soporte.
  • O segundo é dun desenvolvedor independente, algo simplificado en funcións, pero dispoñible como unha solución privada de código aberto para o seu uso local ou recursos na nube.

VL2 está implementado enriba de VL1 e é transportado por el. Non obstante, herda o cifrado e a autenticación do punto final VL1 e tamén usa as súas claves asimétricas para asinar e verificar as credenciais. VL1 permítelle implementar VL2 sen preocuparse pola topoloxía da rede física existente. É dicir, os problemas coa conectividade e a eficiencia do enrutamento son problemas de VL1. É importante entender que non hai conexión entre as redes virtuais VL2 e as rutas VL1. Do mesmo xeito que a multiplexación de VLAN nunha LAN con cable, dous nodos que comparten varias adhesións á rede aínda terán un camiño VL1 (cable virtual) entre eles.

Cada rede VL2 (VLAN) identifícase mediante un enderezo de rede ZeroTier de 64 bits (16 hexadecimales), que contén o enderezo ZeroTier de 40 bits do controlador e un número de 24 bits que identifica a rede creada por ese controlador.

Network ID: 8056c2e21c123456
            |         |
            |         Network number on controller
            |
            ZeroTier address of controller

Cando un nodo se une a unha rede ou solicita unha actualización da configuración da rede, envía unha mensaxe de solicitude de configuración de rede (a través de VL1) ao controlador de rede. A continuación, o controlador usa o enderezo VL1 do nodo para atopalo na rede e enviarlle os certificados, credenciais e información de configuración apropiados. Desde o punto de vista das redes virtuais VL2, os enderezos VL1 ZeroTier pódense considerar como números de porto nun enorme switch virtual global.

Todas as credenciais emitidas polos controladores de rede aos nodos membros dunha determinada rede están asinadas coa clave secreta do controlador para que todos os participantes da rede poidan verificalas. As credenciais teñen marcas de tempo xeradas polo controlador, o que permite a comparación relativa sen ter que acceder ao reloxo do sistema local do host. 

As credenciais son emitidas só para os seus propietarios e despois envíanse aos compañeiros que queren comunicarse con outros nodos da rede. Isto permite que a rede se escala a tamaños enormes sen necesidade de almacenar en caché grandes cantidades de credenciais nos nodos ou contactar constantemente co controlador de rede.

As redes ZeroTier admiten a distribución multicast a través dun sistema sinxelo de publicación/subscrición.

Ligazón á documentación

Cando un nodo desexa recibir unha emisión de multidifusión para un grupo de distribución particular, anuncia a pertenza a ese grupo a outros membros da rede coa que se está comunicando e ao controlador de rede. Cando un nodo desexa enviar unha multidifusión, accede simultaneamente á súa caché de publicacións recentes e solicita periodicamente publicacións adicionais.

Unha emisión (Ethernet ff: ff: ff: ff: ff: ff) trátase como un grupo de multidifusión ao que están subscritos todos os participantes. Pódese desactivar a nivel de rede para reducir o tráfico se non é necesario. 

ZeroTier emula un conmutador Ethernet real. Este feito permítenos levar a cabo combinando as redes virtuais creadas con outras redes Ethernet (LAN con cable, WiFi, backplane virtual, etc.) a nivel de enlace de datos, utilizando unha ponte Ethernet normal.

Para actuar como ponte, o controlador de rede debe designar un host como tal. Este esquema implícase por razóns de seguridade, xa que os anfitrións normais de rede non poden enviar tráfico desde unha fonte que non sexa o seu enderezo MAC. Os nós designados como pontes tamén usan un modo especial do algoritmo de multidifusión, que interactúa con eles de forma máis agresiva e específica durante as subscricións de grupos e a replicación de todo o tráfico de difusión e as solicitudes ARP. 

O interruptor tamén ten a capacidade de crear redes públicas e ad-hoc, un mecanismo de QoS e un editor de regras de rede.

▍Nodo:

ZeroTier Uno é un servizo que se executa en portátiles, escritorios, servidores, máquinas virtuais e contedores que proporciona conexións a unha rede virtual a través dun porto de rede virtual, semellante a un cliente VPN. 

Unha vez instalado e iniciado o servizo, podes conectarte ás redes virtuais usando os seus enderezos de 16 díxitos. Cada rede aparece como un porto de rede virtual no sistema, que se comporta como un porto Ethernet normal.

ZeroTier One está dispoñible actualmente para os seguintes SO e sistemas.

OS:

  • Microsoft Windows - Instalador MSI x86/x64
  • MacOS - Instalador de PKG
  • Apple iOS - Tenda de aplicacións
  • androide - Play Store
  • Linux - DEB/RPM
  • FreeBSD - Paquete FreeBSD

NAS:

  • Synology NAS
  • NAS QNAP
  • WD MyCloud NAS

Outros:

  • Estivador - arquivo docker
  • openwrt - Porto comunitario
  • Incorporación de aplicacións - SDK (libzt)

Para resumir todo o anterior, sinalaría que ZeroTier é unha excelente e rápida ferramenta para combinar os teus recursos físicos, virtuais ou na nube nunha rede local común, coa posibilidade de dividilo en VLAN e a ausencia dun único punto de falla. .

Iso é todo para a parte teórica no formato do primeiro artigo sobre ZeroTier para Habr - probablemente iso sexa todo! No seguinte artigo, planeo demostrar na práctica a creación dunha infraestrutura de rede virtual baseada en ZeroTier, onde se utilizará un VDS cunha GUI privada de código aberto como controlador de rede. 

Queridos lectores! Usas a tecnoloxía ZeroTier nos teus proxectos? Se non, que ferramentas utilizas para conectar os teus recursos?

Switch Ethernet intelixente para o planeta Terra

Fonte: www.habr.com

Engadir un comentario