Cómo matar zombies de manera más eficiente con ZeroTier



Tiene un servidor debajo de la cama, una casa inteligente en el país y una cámara IP en el garaje. ¿Cómo unirlos a todos en una red para tener acceso a todos los dispositivos? En tales situaciones, es costumbre usar una VPN, pero hay una solución más efectiva: ZeroTier. Crea una red punto a punto (P2P) entre dispositivos, mientras que la configuración es mucho más simple que una VPN.

Ya hemos publicado una serie de artículos sobre la organización de una red P2P para soporte remoto de usuarios. En él, consideramos la opción de construir una red virtual descentralizada usando ZeroTier. A diferencia de las soluciones VPN tradicionales, ZeroTier carece de un servidor de administración central y se establece una conexión directamente entre dispositivos.

A menudo uso ZeroTier para dos casos: conectarme a dispositivos cliente para proporcionar soporte y matar zombies en los juegos de disparos. Me resultó interesante comparar formas alternativas de conexión en una red local.

Si desea comprender el principio de ZeroTier, sobre esto hemos publicado un artículo detallado con análisis .

Conexión RDP para soporte remoto


Casi todos los días, tengo que conectarme con un cliente para suprimir una rebelión de la máquina para ayudar a resolver algo. En una pandemia, estos son colegas que trabajan desde casa. 

Para trabajar con los servicios internos de la compañía, se requiere autenticación de la red corporativa y se ha establecido una VPN en el enrutador de la oficina durante mucho tiempo en caso de que necesite hacer algo de forma remota en algún lugar. 

Para mí, conectarse y registrar un par de rutas en el sistema no es difícil, pero para el usuario promedio fue laborioso. Entonces, una vez que surgió la necesidad de una solución simple que permitiera al usuario afectado acceder fácilmente a su computadora.

Ni siquiera consideré Teamviewer o Radmin debido a limitaciones y costos. Además, soy partidario de RDP ortodoxo, no de utilidades de terceros. Quería que la solución fuera lo más simple posible en la implementación y la persona necesitaba un mínimo de acción de su parte. Y dado que no solo me preocupo por los empleados de mi querida compañía nativa, y que a veces ayudan a personajes de terceros, sería un error usar un servidor VPN corporativo.

¿Qué comparé con ZeroTier?


En la red, puede encontrar varias soluciones simples para implementar una red virtual:

  • Tunngle que ya no funciona;
  • Evolve, que se fusionó con Player.me;
  • Hamachi
  • Radmin VPN
  • Y ZeroTier, que tenemos justo en el mercado .

Planeé pedirle al cliente que instale uno de los programas anteriores, descargue y ejecute el siguiente script para habilitar 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 evaluar cada programa.


Evalué todas las soluciones por parámetros:

  • La velocidad de transferencia de archivos a través de una red local;
  • Fácil de instalar, configurar y usar;
  • Costo y limitaciones;
  • Funcional;
  • Juego (más sobre eso al final).

Mi evaluación para cada parámetro es subjetiva y digna de crítica. Por lo tanto, me concentré en los parámetros que se pueden medir a través de pruebas.

Hamachi


Al momento de escribir este artículo, la última versión del programa LogMeIn Hamachi para Windows 2.2.0.633 se lanzó en marzo de 2019. La versión gratuita tiene un límite de 5 conexiones simultáneas a la misma red. El costo de la versión completa comienza en $ 49 por año.

Para comenzar, necesitas:

  • Registrarse en el servicio;
  • Instalar software
  • Cree o conéctese a la red terminada a través de una aplicación gráfica.

Para estimar la velocidad de transferencia de archivos, utilicé CrystalDiskMark, realizando pruebas de lectura / escritura en carpetas previamente compartidas para la red local y una simple copia de un archivo grande.

Dado que todas las pruebas se realizan en dos PC con la misma configuración (en cada prueba, la misma unidad, la misma configuración del sistema, etc.), los resultados de CrystalDiskMark deberían dar una idea de la velocidad de transferencia de datos.

Nota: después de escribir el artículo, dudé de haber elegido la mejor solución para las pruebas. Creo que en los comentarios se sugerirá un mejor enfoque.

Resultado de tiempo: copiar un archivo de 9 Gb tomó exactamente 21 minutos.



Resultados de CrystalDiskMark.



El ping entre PC no superó los 10 ms.



Radmin VPN


La última versión de "Radmin VPN 1.1.3969.3" se lanzó en diciembre de 2019. Esta es una aplicación completamente gratuita con un diseño minimalista y ni siquiera requiere registro.

Todo lo que necesitas es:

  • Descargar;
  • Instalar en pc;
  • Conectarse a la red;
  • Come una rosquilla.

La velocidad de transferencia de archivos es significativamente menor que la de Hamachi. 9Gb transfirieron unos buenos 43 minutos.



Los resultados de CrystalDiskMark también son inferiores a los de Hamachi.



Ping: 10-11ms.



Quizás si no fuera por el donut comido, los resultados serían diferentes. Al conectarse a través de RDP, no hubo problemas especiales.

ZeroTier


Este es un proyecto único de código abierto:

  • Está disponible como una solución de nube pública;
  • Proporcionado por el modelo SaaS;
  • Él tiene cuatro planes de suscripción.

Además, consideraré una solución de código abierto de un desarrollador externo : la interfaz de usuario del controlador de red ZeroTier .

Ya hemos examinado en detalle el principio de su trabajo en este artículo . Enumeraré solo las características principales que lo hacen tan interesante:

1. Dado que estamos hablando de una red P2P, el tráfico no pasa por el nodo que generamos, sino directamente de un dispositivo a otro. El nodo se necesita exclusivamente para la conexión inicial. Además, él no está involucrado en el trabajo. El nodo se puede apagar completamente, la conexión no se desconectará. Solo será necesario si se vuelve a conectar.

2. El nodo es poco exigente con los recursos. Funciona silenciosamente en nuestro VPS más baratopor 130 p. por mes (o 30 rublos, si logró obtener la misma tarifa).

3. No hay límite en la cantidad de usuarios y redes: puede conectar toda la transmisión de la universidad y organizar una reunión de compañeros de clase en Counter-strike.

Para crear un nodo, necesitamos elevar el VPS con el lado del servidor de la aplicación. El proceso también se ha descrito anteriormente .

La parte del cliente de ZeroTier One tiene un diseño minimalista y un conjunto de parámetros muy modesto. Necesitamos enviar al usuario solo la ID de nuestro nodo y autorizarlo.



9Gb voló durante 20 minutos. Ligeramente más rápido que Hamachi.



CrystalDiskMark también mostró valores ligeramente más altos.



Ping, como en todas partes, saltó unos 10 ms.



Caso dos: Cómo disfrutar de un descanso cultural en una PC débil en la oficina


ZeroTier ofrece otra oportunidad: la forma ahora popular de transmitir el juego a otro dispositivo (a la GeForce Now). Para esto hay tres alternativas a ZeroTier: RDP, Parsec y Moonlighrt. Probémoslos.

▍ RDP


Lamentablemente, no está adaptado para esto. La mayoría de los juegos que probé simplemente se negaron a funcionar normalmente. O se bloqueó debido a la incompatibilidad del controlador de video, o simplemente no respondió al control.

▍ Parsec


Este es un software gratuito especializado diseñado para transferir video entre PC con énfasis en latencia ultra baja. A diferencia de Teamviewer o Radmin, Parsec es capaz de transmitir 60 FPS estables en imagen FullHD con relativa comodidad (para no tener una cara de drake una y otra vez).



Para un uso cómodo, se recomienda que el host tenga una conexión de cable con una velocidad de al menos 30 Mbps.

En la gran mayoría de los juegos, puedes jugar cómodamente sin experimentar un alto retraso de entrada, pero, desafortunadamente, la calidad de la imagen se ve afectada. Debido a los métodos de compresión, la imagen se divide en píxeles en elementos contrastantes y lastima mucho los ojos. Los juegos dependientes de FPS, como los juegos de disparos, no se pueden jugar con el nivel adecuado de comodidad. Retraso de entrada, aunque bajo, pero de vez en cuando se nota cierta contracción de la imagen, lo que, aunque no interfiere con la puntería, es molesto.

En lo que Parsec supera exactamente otras soluciones es en una cooperativa local. Debido al hecho de que Parsec simplemente le permite compartir la imagen del monitor, es posible jugar un juego cooperativo en cualquier lugar sin problemas. Además, la distancia entre ustedes no importa. Disfruté jugando Cuphead con un amigo de Novosibirsk y no tuve ningún problema con la reacción.

Parsec también es bueno en el trabajo diario. Es más rápido, transfiere una mejor imagen en comparación con Teamviewer y no tiene límites en la cantidad de escritorios remotos. Sin embargo, para tales fines siempre uso RDP, cursi para el sistema operativo incorporado y la capacidad de reenviar unidades locales.

▍ luz de la luna


Esto es de código abierto, una solución completamente gratuita para juegos remotos.
Citaré su sitio:
Moonlight (anteriormente Limelight) es una implementación de código abierto del protocolo NVIDIA GameStream. Implementamos el protocolo utilizado por NVIDIA Shield y escribimos un conjunto de clientes de terceros.

El logro más obvio y principal de Moonlight es la capacidad de transmitir video 4K a 120 o más FPS con una ausencia total de retrasos.

Moonlight solo funciona si la máquina host tiene instalada una tarjeta Nvidia. Esto se debe al hecho de que el proyecto emula NVIDIA Shield y funciona directamente con el controlador. Esto es lo que le permite transmitir 4K 120FPS sin demora en una red local.

Además, el segundo inconveniente de Moonlight es la incapacidad de jugar en Internet sin bailar adicional con una pandereta.

▍ Luz de luna + Hamachi


Desafortunadamente, no tengo una tarjeta de captura, y simplemente no puedo quitar el monitor del teléfono ... Por lo tanto, tendrá que creer mis palabras o probar de forma independiente cada solución. El ancho de banda de Hamachi es suficiente para un juego cómodo en 2K 60-120FPS. Con una resolución creciente, las microfreezes se vuelven significativamente más fuertes.

Es posible jugar juegos dependientes de FPS, pero aquí y allá el juego puede congelarse durante un cuarto de segundo. Parsec todavía está mejor en términos de minimizar los retrasos. Sin embargo, pierde calidad de imagen. Aquí depende de usted decidir qué es más importante: el retraso de entrada mínimo y los artefactos de imagen o la imagen perfecta, pero ¿micro frisos?

▍ Moonlight + Radmin VPN


Radmin VPN se comportó igual que en los sintéticos. Relativamente cómodo de jugar, resultó solo en FullHD y 60FPS. La resolución justo arriba condujo a una presentación insoportable. Y de vez en cuando, la imagen se congeló por completo durante 2 segundos. Desafortunadamente, este grupo resultó ser el peor.

▍ Moonlight + ZeroTier


Y ahora llegamos a una pareja deliciosa. No es necesario decir que el repositorio oficial de Moonlight aconseja a ZeroTier específicamente para construir una conexión P2P. Literalmente no pude distinguir la jugabilidad de un juego lanzado remotamente del lanzamiento en una PC local. Todas las características de Moonlight declaradas funcionan. Es una pena que mi amigo de Novosibirsk tuviera una tarjeta AMD y tuviera que probar en la misma ciudad, llamando a su hermano (este es el norte y el sur de Moscú).

La imagen tiene una resolución suave de hasta 4K y no tiene frenos. La respuesta a presionar es instantánea, puedes jugar tiradores como este. Quizás este paquete sea la mejor opción para juegos en la nube.

recomendaciones


ZeroTier es quizás la mejor solución asequible para construir rápidamente redes punto a punto. Sí, su funcionalidad no le permitirá construir redes complejas y no le dará acceso a toda la variedad de configuraciones del clásico L2TP / IPsec. Pero esto no siempre es necesario para tareas simples.

Parsec es probablemente la única opción para jugar de forma remota juegos que admiten una cooperativa local o una pantalla dividida (inmediatamente recordé Lovers in a Dangerous Spacetime). No está vinculado a una tecnología específica de equipos físicos y no requiere configuraciones de red adicionales. Sin embargo, puede pellizcar severamente la calidad de la imagen. En ausencia de la capacidad de conectarse a la PC remota utilizando métodos regulares, es adecuado para la asistencia rápida de la computadora.

luz de la luna- Si su tarjeta Nvidia está instalada en su PC para juegos, entonces Moonlight + ZeroTier es un par ideal para juegos remotos. ZeroTier resuelve el problema de configurar una red virtual de manera simple y elegante. Moonlight, gracias a la emulación de Nvidia Shield, le permite transferir imágenes impresionantes sin demora. No permite la configuración remota de PC, pero describí otras soluciones anteriormente.


All Articles