Como matar zumbis com mais eficiência com o ZeroTier



Você tem um servidor embaixo da cama, uma casa inteligente no país e uma câmera IP na garagem. Como unir todos eles em uma rede para ter acesso a todos os dispositivos? Em tais situações, é habitual usar uma VPN, mas existe uma solução mais eficaz - o ZeroTier. Ele cria uma rede ponto a ponto (P2P) entre dispositivos, enquanto a configuração é muito mais simples que uma VPN.

Já publicamos uma série de artigos sobre a organização de uma rede P2P para suporte remoto ao usuário. Nele, consideramos a opção de construir uma rede virtual descentralizada usando o ZeroTier. Diferentemente das soluções VPN tradicionais, o ZeroTier não possui um servidor de gerenciamento central e uma conexão é estabelecida diretamente entre os dispositivos.

Costumo usar o ZeroTier para dois casos: conectar-se a dispositivos clientes para fornecer suporte e matar zumbis nos atiradores. Tornou-se interessante para mim comparar formas alternativas de conexão em uma rede local.

Se você deseja entender o princípio do ZeroTier, lançamos um artigo detalhado com análise .

Conexão RDP para suporte remoto


Quase todos os dias, tenho que me conectar com um cliente para suprimir uma rebelião de máquinas e ajudar a resolver alguma coisa. Em uma pandemia, esses são colegas trabalhando em casa. 

Para trabalhar com os serviços internos da empresa, a autenticação é necessária a partir da rede corporativa e uma VPN foi criada no roteador do escritório por um longo tempo, caso você precise fazer algo remotamente em algum lugar. 

Para mim, conectar-se a ele e registrar algumas rotas no sistema não é difícil, mas para o usuário médio foi trabalhoso. Assim, quando surgiu a necessidade de uma solução simples que permitisse ao usuário afetado acessar facilmente seu computador.

Eu nem considerei o Teamviewer ou o Radmin por causa de limitações e custos. Além disso, sou um defensor da RDP ortodoxa, não de utilitários de terceiros. Queria que a solução fosse o mais simples possível na implementação e a pessoa precisasse de um mínimo de ação da parte dele. E como eu não me preocupo apenas com os funcionários da minha amada empresa nativa e, às vezes, eles ajudam personagens de terceiros, seria errado usar um servidor VPN corporativo.

O que eu comparei com o ZeroTier


Na rede, você pode encontrar várias soluções simples para implementar uma rede virtual:

  • Tunngle que não funciona mais;
  • Evolve, que se fundiu com o Player.me;
  • Hamachi;
  • Radmin VPN
  • E o ZeroTier, que temos no mercado .

Planejei pedir ao cliente para instalar um dos softwares acima, baixar e executar o seguinte script para ativar o RDP:

# Execute with Administrator rights
$path = $MyInvocation.MyCommand.Path
if ($args[0] -ne $null) {
$path = $args[0]
}
$path = Split-Path -Path $path

$windowsID = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$windowsPrincipal = New-Object System.Security.Principal.WindowsPrincipal($windowsID)
$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator
if ($windowsPrincipal.IsInRole($adminRole)) {
$Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Elevated)"
$Host.UI.RawUI.BackgroundColor = "DarkBlue"
clear-host
}
else {
$newProcess = New-Object System.Diagnostics.ProcessStartInfo "PowerShell";
$newProcess.WorkingDirectory = $path;
$newProcess.Arguments = $myInvocation.MyCommand.Definition;
$newProcess.Verb = "runas";
[System.Diagnostics.Process]::Start($newProcess);
exit
}

# Set RDP enabled
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" –Value 0

# Create firewall rule
New-NetFirewallRule -DisplayName "Remote Desktop Allow TCP" -Program "%SystemRoot%\system32\svchost.exe" -Action Allow -Protocol TCP -LocalPort 3389 -Direction Inbound -Enabled True
New-NetFirewallRule -DisplayName "Remote Desktop Allow UDP" -Program "%SystemRoot%\system32\svchost.exe" -Action Allow -Protocol UDP -LocalPort 3389 -Direction Inbound -Enabled True

# Add user to RDU group
$User = $env:USERNAME
Add-LocalGroupMember -SID "S-1-5-32-555" -Member $User


Parâmetros para avaliar cada programa


Avaliei todas as soluções por parâmetros:

  • A velocidade da transferência de arquivos em uma rede local;
  • Fácil de instalar, configurar e usar;
  • Custo e limitações;
  • Funcional;
  • Jogo (mais sobre isso no final).

Minha avaliação para cada parâmetro é subjetiva e merece críticas. Portanto, foquei nos parâmetros que podem ser medidos através de testes.

Hamachi


No momento da redação deste artigo, a versão mais recente do programa LogMeIn Hamachi para Windows 2.2.0.633 foi lançada em março de 2019. A versão gratuita possui um limite de 5 conexões simultâneas à mesma rede. O custo da versão completa começa em US $ 49 por ano.

Para começar, você precisa:

  • Registre-se no serviço;
  • Instalar software
  • Crie ou conecte-se à rede finalizada através de um aplicativo gráfico.

Para estimar a velocidade da transferência de arquivos, usei o CrystalDiskMark, realizando testes de leitura / gravação em pastas anteriormente compartilhadas para a rede local e cópia simples de um arquivo grande.

Considerando que todos os testes são realizados em dois PCs com a mesma configuração (em cada teste, a mesma unidade, as mesmas configurações do sistema etc.), os resultados do CrystalDiskMark devem fornecer uma idéia da velocidade de transferência de dados.

Nota: depois de escrever o artigo, duvidei que tivesse escolhido a melhor solução para o teste. Eu acho que nos comentários uma melhor abordagem será sugerida.

Resultado do tempo: copiar um arquivo de 9 Gb levou exatamente 21 minutos.



Resultados do CrystalDiskMark.



O ping entre PCs não excedeu 10ms.



Radmin VPN


A versão mais recente do "Radmin VPN 1.1.3969.3" foi lançada em dezembro de 2019. Este é um aplicativo totalmente gratuito, com um design minimalista e nem exige registro.

Tudo o que você precisa é:

  • Baixar;
  • Instalar;
  • Conecte-se à rede;
  • Coma um donut.

A velocidade de transferência de arquivos é significativamente menor que a do Hamachi. 9Gb transferiram bons 43 minutos.



Os resultados do CrystalDiskMark também são inferiores aos do Hamachi.



Ping: 10-11ms.



Talvez, se não fosse a rosquinha comida, os resultados seriam diferentes. Ao conectar via RDP, não houve problemas especiais.

ZeroTier


Este é um projeto de código aberto exclusivo:

  • Está disponível como uma solução de nuvem pública;
  • Fornecido pelo modelo SaaS;
  • Ele tem quatro planos de assinatura.

Além disso, considerarei uma solução de código aberto de um desenvolvedor de terceiros: a interface de usuário do controlador de rede ZeroTier .

Já examinamos em detalhes o princípio de seu trabalho neste artigo . Vou listar apenas os principais recursos que o tornam tão interessante:

1. Como estamos falando de uma rede P2P, o tráfego não passa pelo nó que criamos, mas diretamente de dispositivo para dispositivo. O nó é necessário exclusivamente para a conexão inicial. Além disso, ele não está envolvido no trabalho. O nó pode ser completamente desligado, a conexão não será desconectada. Será necessário apenas se reconectar.

2. O nó não exige recursos. Funciona silenciosamente no nosso VPS mais baratopara 130 p. por mês (ou 30 rublos, se você conseguiu pegar a mesma tarifa).

3. Não há limite para o número de usuários e redes: você pode conectar todo o fluxo da universidade e marcar uma reunião de colegas no Counter-strike.

Para criar um nó, precisamos aumentar o VPS com o lado do servidor do aplicativo. O processo também foi descrito anteriormente .

A parte do cliente do ZeroTier One tem um design minimalista e um conjunto de parâmetros muito modesto. Precisamos enviar ao usuário apenas o ID do nosso nó e autorizá-lo.



9Gb voou por 20 minutos. Um pouco mais rápido que Hamachi.



O CrystalDiskMark também mostrou valores um pouco mais altos.



Ping, como em qualquer outro lugar, saltou cerca de 10ms.



Caso dois: Como se deliciar com um relaxamento cultural em um escritório com PC fraco


O ZeroTier oferece outra oportunidade - a maneira agora popular de transmitir o jogo para outro dispositivo (à la GeForce Now). Existem três alternativas ao ZeroTier para isso: RDP, Parsec e Moonlighrt. Vamos testá-los.

▍ RDP


Infelizmente, não adaptado para isso. A maioria dos jogos que testei simplesmente se recusou a funcionar normalmente. Falha devido à incompatibilidade do driver de vídeo ou simplesmente não respondeu ao controle.

▍ Parsec


Este é um software gratuito especializado, projetado para transferir vídeo entre PCs, com ênfase na latência ultra baixa. Diferente do Teamviewer ou Radmin, o Parsec é capaz de transferir 60 FPS estáveis ​​em imagem FullHD com relativo conforto (para não obter repetidamente um drakefey).



Para uso confortável, é recomendável que o host tenha uma conexão a cabo com uma velocidade de pelo menos 30 Mbps.

Na grande maioria dos jogos, você pode jogar confortavelmente sem sofrer um alto atraso de entrada, mas, infelizmente, a qualidade da imagem sofre. Devido aos métodos de compactação, a imagem é dividida em pixels em elementos contrastantes e machuca muito os olhos. Jogos dependentes de FPS, como atiradores, não podem ser jogados com o nível adequado de conforto. O atraso de entrada, embora seja baixo, mas de tempos em tempos é perceptível algum tremor na imagem, o que, embora não interfira na pontaria, é irritante.

O que a Parsec supera exatamente outras soluções é uma cooperativa local. Devido ao fato de o Parsec simplesmente permitir que você compartilhe a imagem do monitor, é possível jogar um jogo cooperativo em qualquer local sem problemas. Além disso, a distância entre você não importa. Gostei de jogar Cuphead com um amigo de Novosibirsk e não tive nenhum problema com a reação.

Parsec também é bom no trabalho diário. É mais rápido, transfere uma imagem melhor em comparação com o Teamviewer e não possui limites no número de áreas de trabalho remotas. No entanto, para esses fins, eu sempre uso RDP, brega para o sistema operacional interno e a capacidade de encaminhar unidades locais.

▍ Luar


Este é o código-fonte aberto, uma solução totalmente gratuita para jogos remotos.
Vou citar o site deles:
Moonlight (anteriormente Limelight) é uma implementação de código aberto do protocolo NVIDIA GameStream. Implementamos o protocolo usado pelo NVIDIA Shield e escrevemos um conjunto de clientes de terceiros.

A conquista mais óbvia e principal do Moonlight é a capacidade de transmitir vídeo em 4K a 120 ou mais FPS com uma completa ausência de atrasos.

O Moonlight funciona apenas se a máquina host tiver uma placa Nvidia instalada. Isso se deve ao fato de o projeto emular o NVIDIA Shield e funcionar diretamente com o driver. É isso que permite transmitir 4K 120FPS sem demora em uma rede local.

Além disso, a segunda desvantagem do Moonlight é a incapacidade de tocar na Internet sem dançar mais com um pandeiro.

▍ Luar + Hamachi


Infelizmente, não tenho uma placa de captura e simplesmente não consigo remover o monitor no telefone ... Portanto, você precisará acreditar nas minhas palavras ou testar independentemente cada solução. A largura de banda de Hamachi é suficiente para um jogo confortável em 2K 60-120FPS. Com o aumento da resolução, os microfreezes se tornam significativamente mais fortes.

É possível jogar jogos dependentes do FPS, mas aqui e ali o jogo pode congelar por um quarto de segundo. O Parsec ainda está se saindo melhor em termos de minimização de atrasos. No entanto, perde na qualidade da imagem. Cabe a você decidir o que é mais importante: o atraso mínimo de entrada e os artefatos de imagem ou a imagem perfeita, mas os micro-frisos?

▍ Moonlight + Radmin VPN


O Radmin VPN se comportou da mesma maneira que nos sintéticos. Relativamente confortável de jogar, acabou apenas em FullHD e 60FPS. A resolução logo acima levou a uma apresentação de slides insuportável. De tempos em tempos, a imagem congelava completamente por 2 segundos.Infelizmente, esse grupo se mostrou o pior.

▍ Luar + ZeroTier


E agora chegamos a um casal delicioso. Desnecessário dizer que o repositório oficial Moonlight aconselha o ZeroTier especificamente para construir uma conexão P2P. Eu literalmente falhei em distinguir a jogabilidade de um jogo lançado remotamente do lançamento em um PC local. Todos os recursos declarados do Moonlight funcionam. É uma pena que meu amigo de Novosibirsk tenha uma placa AMD e tenha que testar na mesma cidade, ligando para seu irmão (este é o norte e o sul de Moscou).

A imagem tem resolução suave de até 4K e fica sem freios. A resposta à pressão é instantânea, você pode jogar atiradores como este. Talvez este pacote seja a melhor opção para jogos na nuvem.

achados


O ZeroTier é talvez a melhor solução acessível para a construção rápida de redes ponto a ponto. Sim, sua funcionalidade não permitirá a criação de redes complexas e não dará acesso a toda a variedade de configurações clássicas de L2TP / IPsec. Mas isso nem sempre é necessário para tarefas simples.

O Parsec é provavelmente a única opção para jogar remotamente que suporta uma cooperativa local ou tela dividida (lembrei-me imediatamente de Amantes em um espaço-tempo perigoso). Não está ligado a uma tecnologia específica de equipamento físico e não requer configurações de rede adicionais. No entanto, pode prejudicar seriamente a qualidade da imagem. Na ausência da capacidade de conectar-se ao PC remoto usando métodos regulares, é adequado para assistência rápida ao computador.

Luar- Se a sua placa Nvidia estiver instalada no seu PC para jogos, o Moonlight + ZeroTier é o par ideal para jogos remotos. O ZeroTier resolve o problema de configurar uma rede virtual de maneira simples e elegante. O Moonlight, graças à emulação do Nvidia Shield, permite transferir fotos impressionantes sem demora. Ele não permite a configuração remota do PC, mas descrevi outras soluções acima.


All Articles