Switch Ethernet inteligente para o planeta Terra


“Existem várias maneiras de criar uma solução (para resolver um problema), mas nem sempre a maneira mais cara e / ou popular - a mais eficaz!”

Preâmbulo


Cerca de três anos atrás, no processo de desenvolvimento de um modelo remoto de recuperação de desastre, deparei-me com um obstáculo imediatamente despercebido - a falta de informações sobre novas soluções originais para virtualização de rede em fontes da comunidade.

-> Um guia prático para a construção de redes virtuais. Parte 1

O algoritmo do modelo desenvolvido foi planejado da seguinte forma:

  1. Um usuário remoto que entrou em contato comigo e cujo computador uma vez se recusou a inicializar com a mensagem "disco do sistema não detectado / não formatado" o carrega usando o USB de vida.
  2. Durante o processo de inicialização, o sistema se conecta automaticamente a uma rede local privada segura, além da qual existe uma estação de trabalho do administrador, neste caso, um laptop e um nó NAS.
  3. Então eu me conecto - para reanimar as partições do disco ou para extrair os dados de lá.

Inicialmente, implementei esse modelo usando um servidor VPN em um roteador local na minha rede e depois em um VDS alugado. Mas, como costuma acontecer de acordo com a primeira lei de Chisholm, a chuva passa - o provedor de Internet "cai" na rede, depois as disputas das entidades comerciais - o provedor de energia desaparece do provedor de serviços ...

Portanto, decidi primeiro formular os requisitos básicos que a ferramenta necessária deveria atender. O primeiro é a descentralização. O segundo - como tenho vários USBs de vida útil, então para cada um deles existe uma rede isolada separada. E o terceiro é a conexão rápida de vários dispositivos à rede e seu gerenciamento simples, inclusive no caso do meu laptop também ser vítima da lei mencionada acima.

Com base nisso e passando dois meses e meio em pesquisas práticas de várias opções não muito adequadas, eu, por meu próprio risco e risco, decidi tentar outra ferramenta de uma startup desconhecida para mim na época chamada ZeroTier. O que mais tarde nunca se arrependeu.

Nessas festas de fim de ano, tentando entender se a situação com o conteúdo mudou desde aquele momento memorável, realizei uma auditoria seletiva da disponibilidade de artigos sobre esse assunto, tomando a fonte - Habr. A pedido de "ZeroTier", nos resultados da pesquisa, existem apenas três artigos com sua menção, e não um único, pelo menos com uma breve, mas descrição. E isso apesar do fato de que entre eles existe a tradução de um artigo escrito pelo fundador da ZeroTier, Inc. - Adam Ierymenko .

Os resultados decepcionaram e me levaram a começar a falar sobre o ZeroTier com mais detalhes, poupando os “buscadores” modernos da necessidade de seguir o mesmo caminho que segui.

Então o que você é?


O desenvolvedor posiciona o ZeroTier como um switch Ethernet inteligente para o planeta Terra.

“Este é um hipervisor de rede distribuído baseado em uma rede ponto a ponto global criptograficamente segura (P2P). Uma ferramenta corporativa semelhante a SDN projetada para organizar redes virtuais em cima de redes físicas, locais e globais, com a capacidade de conectar quase qualquer aplicativo ou dispositivo. ”

Esta é mais uma descrição de marketing, agora sobre recursos tecnológicos.


▍ Kernel:


O ZeroTier Network Hypervisor é um mecanismo de virtualização de rede independente que emula uma rede Ethernet, semelhante à VXLAN, em uma rede P2P (ponto a ponto) criptografada global.

Os protocolos usados ​​no ZeroTier são originais, embora tenham aparência semelhante ao VXLAN e IPSec e consistam em dois níveis conceitualmente separados, mas intimamente relacionados: VL1 e VL2.

Link para a documentação

▍VL1 é a camada básica de transporte ponto a ponto (P2P), à sua maneira - um “cabo virtual”.


"Um data center global requer um" gabinete global "com cabos".

Nas redes convencionais, L1 (camada 1 de OSI) refere-se aos cabos reais ou canais de rádio sem fio através dos quais os dados são transmitidos e aos chips físicos dos dispositivos de transmissão e recepção que os modulam e desmodulam. A VL1 é uma rede ponto a ponto (P2P) que faz o mesmo, usando criptografia, autenticação e outros truques de rede para organizar cabos virtuais conforme necessário.

Além disso, ele faz isso automaticamente, rapidamente e sem envolver um usuário iniciando um novo nó ZeroTier.

Para conseguir isso, o VL1 é organizado de maneira semelhante ao sistema de nomes de domínio. A rede é baseada em um grupo de servidores raiz altamente acessíveis, cuja função é semelhante à dos servidores de nomes raiz DNS. No momento, os principais servidores raiz (planetários) são gerenciados pelo desenvolvedor - ZeroTier, Inc. e são fornecidos como um serviço gratuito.

No entanto, é possível criar servidores raiz personalizados (luas) que permitem:

  • reduzir a dependência da infraestrutura ZeroTier, Inc.; Link da documentação
  • aumentar a produtividade minimizando atrasos;
  • continue funcionando normalmente em caso de perda de conexão com a Internet.

Inicialmente, os nós iniciam sem conexões diretas entre si.

Cada nó no VL1 possui um endereço ZeroTier exclusivo de 40 bits (10 dígitos hexadecimais), que, diferentemente dos endereços IP, é um identificador criptografado que não contém dados de rota. Este endereço é calculado a partir da parte pública do par de chaves pública / privada. O endereço do nó, a chave pública e a chave privada juntos formam sua identidade.

Member ID: df56c5621c       |       ZeroTier address of node 

Quanto à criptografia, esta é uma ocasião para um artigo separado.

Link para a documentação

Para estabelecer a comunicação, os pares primeiro enviam os pacotes "para cima" pela árvore do servidor raiz e, à medida que esses pacotes viajam pela rede, eles iniciam a criação aleatória de canais diretos nesse caminho. A árvore está constantemente tentando "desmoronar-se" para otimizar-se para o esquema de rotas que armazena.

O mecanismo de instalação ponto a ponto é o seguinte:


  1. O nó A deseja enviar um pacote para o nó B, mas como não conhece o caminho direto, ele o envia na direção upstream para o nó R (lua, servidor raiz do usuário).
  2. Se o nó R tiver uma conexão direta com o nó B, ele encaminhará o pacote para lá. Caso contrário, ele envia o pacote na direção upstream até atingir as raízes planetárias, que conhecem todos os nós, para que, eventualmente, o pacote atinja o nó B se estiver on-line.
  3. O nó R também envia uma mensagem chamada "ponto de encontro" para o nó A, contendo dicas sobre como alcançar o nó B. Enquanto isso, o servidor raiz, que encaminha o pacote para o nó B, envia um "ponto de encontro", informando-o sobre como alcançar nó A.
  4. Os nós A e B recebem suas mensagens para o encontro e tentam enviar mensagens de teste um para o outro, tentando romper as lacunas no NAT ou nos firewalls controlados pelo estado encontrados no caminho. Se isso funcionar, uma conexão direta será estabelecida e os pacotes não serão mais "jardins".

Se uma conexão direta não puder ser estabelecida, a conexão continuará através do relé e as tentativas de conexão direta continuarão até que um resultado positivo seja alcançado.

O VL1 também possui outros recursos para estabelecer uma conexão direta, incluindo a descoberta ponto a ponto de LANs, previsão de porta para passagem IPv4 NAT simétrica e mapeamento de porta explícito usando uPnP e / ou NAT-PMP, se disponível na LAN física local.

Link para a documentação

LVL2 - protocolo de virtualização Ethernet do tipo VXLAN com recursos de gerenciamento SDN. Um ambiente de comunicação familiar para sistemas operacionais e aplicativos ...


Diferentemente da VL1, a criação de redes VL2 (VLANs) e a conexão de nós a elas, assim como seu gerenciamento, exige que o usuário participe diretamente. Ele pode fazer isso usando um controlador de rede. Na verdade, é um nó ZeroTier comum, no qual as funções do controlador são controladas de duas maneiras: diretamente, alterando arquivos ou, como o desenvolvedor recomenda fortemente, usando a API publicada.

Esse método de gerenciamento de redes virtuais ZeroTier não é muito conveniente para um simples leigo, portanto, existem várias GUIs:

  • Um do desenvolvedor ZeroTier, disponível como uma solução de nuvem pública fornecida pelo modelo SaaS, com quatro planos de assinatura, incluindo gratuitos, mas limitados no número de dispositivos gerenciados e no nível de suporte
  • O segundo é de um desenvolvedor independente, um pouco simplificado em funcionalidade, mas disponível como uma solução de código-fonte privado, para uso no local ou em recursos da nuvem.

A camada VL2 é implementada sobre a VL1 e transportada por ela. Ao mesmo tempo, herda a criptografia e autenticação do terminal do nível VL1 e também usa suas chaves assimétricas para assinar e verificar credenciais. A camada VL1 permite implementar o VL2 sem se preocupar com a topologia existente da rede física. Ou seja, problemas de conectividade e eficiência de roteamento são tarefas no nível VL1. É importante entender que não há conexão entre redes virtuais VL2 e caminhos VL1. Como a multiplexação de VLAN em uma LAN com fio, dois nós que compartilham várias associações de rede comuns ainda terão apenas um caminho VL1 (cabo virtual) entre eles.

Cada rede VL2 (VLAN) é identificada pelo endereço de 64 bits (16 dígitos hexadecimais) da rede ZeroTier, que contém o endereço de 40 bits do controlador ZeroTier e um número de 24 bits que identifica a rede criada por esse controlador.

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

Quando um nó ingressa em uma rede ou solicita uma atualização de configuração de rede, envia uma mensagem de solicitação de configuração de rede ao controlador de rede (via nível VL1). O controlador usa o endereço VL1 do nó para encontrá-lo na rede e enviar os certificados, credenciais e informações de configuração apropriadas. Do ponto de vista das redes virtuais VL2, os endereços VL1 ZeroTier podem ser considerados como números de porta em um enorme comutador virtual de escala global.

Todas as credenciais emitidas pelos controladores de rede para os nós participantes nesta rede são assinadas com a chave secreta do controlador para que todos os participantes da rede possam verificá-las. As credenciais possuem registros de data e hora criados pelo controlador, o que permite comparações relativas sem precisar acessar o relógio do sistema local do nó.

As credenciais são emitidas apenas para seus proprietários e enviadas para pares que desejam trocar dados com outros nós na rede. Isso permite que a rede seja dimensionada para um tamanho enorme, sem a necessidade de armazenar em cache uma grande quantidade de credenciais nos nós ou acessar constantemente o controlador de rede.

As redes ZeroTier suportam multicast por meio de um sistema simples de publicação / assinatura.

Link para a documentação

Quando um nó deseja receber correspondência multicast para um grupo de distribuição específico, anuncia a associação nesse grupo a outros membros da rede à qual está conectado e ao controlador de rede. Quando um nó deseja enviar correspondência multicast, ele acessa simultaneamente seu cache de publicações recentes e solicita periodicamente publicações adicionais.

A transmissão (Ethernet ff: ff: ff: ff: ff: ff) é considerada um grupo multicast ao qual todos os membros assinam. Ele pode ser desativado no nível da rede para reduzir o tráfego, se não for necessário.

O ZeroTier emula um comutador Ethernet real. Esse fato permite combinar as redes virtuais criadas com outras redes Ethernet (LAN com fio, Wi-Fi, backplane virtual etc.) no nível do link de dados usando uma ponte Ethernet convencional.

Para atuar como uma ponte, o controlador de rede deve designar o nó da rede como tal. Esse esquema é implementado por motivos de segurança, pois os nós de rede comuns não têm permissão para enviar tráfego de uma fonte que não seja o endereço MAC. Os nós designados pelas pontes também usam um modo especial do algoritmo de endereçamento multicast, que interage com eles de forma mais agressiva e endereçada durante as assinaturas de grupos e a replicação de todo o tráfego de broadcast e solicitações de ARP.

O switch também tem a capacidade de criar redes públicas e ad-hoc, um mecanismo de QoS e um editor de regras de rede.

OdeNó:


O ZeroTier One é um serviço executado em laptops, desktops, servidores, máquinas virtuais e contêineres, que fornece conexões a uma rede virtual através de uma porta de rede virtual, como um cliente VPN.

Após instalar e iniciar o serviço, você pode conectar-se a redes virtuais usando seus endereços de 16 dígitos. Cada rede se parece com uma porta de rede virtual no sistema, que se comporta da mesma forma que uma porta Ethernet comum.

O ZeroTier One está atualmente disponível para os seguintes sistemas operacionais e sistemas.

Sistemas operativos:

  • Microsoft Windows - instalador MSI x86 / x64
  • MacOS - instalador PKG
  • Apple iOS - App Store
  • Android - Play Store
  • Linux - DEB / RPM
  • FreeBSD - pacote FreeBSD

NAS:

  • Synology NAS
  • QNAP NAS
  • WD MyCloud NAS

Outros:

  • Docker - arquivo docker
  • OpenWRT - porta da comunidade
  • Incorporação de aplicativo - SDK (libzt)

Para resumir tudo isso, eu diria que o ZeroTier é uma ferramenta excelente e rápida para combinar seus recursos físicos, virtuais ou em nuvem em uma rede local comum, com a possibilidade de dividi-lo em VLANs e a ausência de um único ponto de falha.

Nele, com uma parte teórica no formato do primeiro artigo sobre ZeroTier para Habr - provavelmente tudo! No próximo artigo, pretendo demonstrar na prática a criação de uma infraestrutura de rede virtual baseada no ZeroTier, em que o VDS com um modelo de GUI de código aberto privado será usado como um controlador de rede.

Caros leitores! Você usa a tecnologia ZeroTier em seus projetos? Caso contrário, quais ferramentas você usa para combinar seus recursos em uma rede comum?

Source: https://habr.com/ru/post/pt484178/


All Articles