如何使用ZeroTier更有效地杀死僵尸



您在床底下有一台服务器,在乡下有一栋智能房子,在车库里有一台IP摄像机。如何将它们整合到一个网络中以访问所有设备?在这种情况下,习惯上使用VPN,但是有一个更有效的解决方案-ZeroTier。它在设备之间创建点对点(P2P)网络,而配置它比VPN简单得多。

我们已经发布了一系列有关组织P2P网络以提供远程用户支持的文章。在其中,我们考虑了使用ZeroTier构建分散式虚拟网络的选项。与传统的VPN解决方案不同,ZeroTier缺少中央管理服务器,并且直接在设备之间建立连接。

我经常在两种情况下使用ZeroTier:连接到客户端设备以提供支持并杀死射手中的僵尸。比较本地网络上的替代连接方式对我来说变得很有趣。

如果您想了解ZeroTier的原理,关于这一点,我们发布了一篇详细的文章并进行了分析

RDP连接以提供远程支持


几乎每天,我都必须与客户建立联系,以抑制机器起义以帮助解决问题。在大流行中,这些是在家工作的同事。 

为了使用公司的内部服务,需要从公司网络进行身份验证,并且很长时间以来,办公室路由器上都已经建立了VPN,以防您需要在某处进行远程操作。 

对我来说,连接到它并在系统中注册几个路由并不困难,但是对于普通用户而言,这很麻烦。因此,一旦出现了对简单解决方案的需求,该解决方案将允许受影响的用户轻松访问其计算机。

由于限制和成本,我什至没有考虑使用Teamviewer或Radmin。另外,我是Orthodox RDP的支持者,而不是第三方实用程序。我希望解决方案在实现过程中尽可能简单,并且此人需要自己采取最少的措施。而且,由于我不仅担心我心爱的本地公司的员工,有时甚至还会帮助第三方角色,因此使用公司VPN服务器是错误的。

我与ZeroTier比较了什么


在网络上,您可以找到用于实现虚拟网络的几种简单解决方案:

  • 调节不再有效;
  • 与Player.me合并的Evolve;
  • machi町
  • Radmin VPN
  • 还有ZeroTier,我们在市场上都有

我计划要求客户端安装上述软件之一,下载并执行以下脚本以启用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


用于评估每个程序的参数


我通过参数评估了所有解决方案:

  • 通过局域网传输文件的速度;
  • 易于安装,配置和使用;
  • 成本和限制;
  • 功能性
  • 游戏(最后更多)。

我对每个参数的评估都是主观的,值得批评。因此,我专注于可以通过测试测量的参数。

羽町


在撰写本文时,最新版本的LogMeIn Hamachi for Windows 2.2.0.633程序已于2019年3月发布。免费版最多只能同时连接5个网络。完整版的价格为每年49美元起。

要开始使用,您需要:

  • 注册服务;
  • 安装软件
  • 通过图形应用程序创建或连接到完成的网络。

为了估算文件传输的速度,我使用了CrystalDiskMark,在以前为本地网络共享的文件夹中执行读/写测试,并简单地复制了大文件。

考虑到所有测试都是在具有相同配置的两台PC上执行的(在每个测试中相同的驱动器,相同的系统设置等),CrystalDiskMark结果应该可以使您了解数据传输速度。

注意:撰写本文后,我怀疑是否选择了最佳的测试解决方案。我认为在评论中会建议一种更好的方法。

时间结果:复制9 Gb文件仅花费了21分钟。



CrystalDiskMark结果。



PC之间的Ping不超过10毫秒。



Radmin VPN


最新版本的“ Radmin VPN 1.1.3969.3”已于2019年12月发布。这是一个完全免费的应用程序,具有简约的设计,甚至不需要注册。

所有你需要的是:

  • 下载;
  • 安装;
  • 连接到网络;
  • 吃一个甜甜圈。

文件传输速度明显低于Hamachi。9Gb传输了43分钟。



CrystalDiskMark结果也低于Hamachi。



Ping:10-11ms。



也许如果不是吃甜甜圈,结果会有所不同。通过RDP连接时,没有特殊问题。

零层


这是一个独特的开源项目:

  • 它可以作为公共云解决方案使用;
  • 由SaaS模型提供;
  • 他有四个订阅计划。

此外,我将考虑第三方开发商提供的开源解决方案:ZeroTier网络控制器用户界面

我们已经详细研究其工作原理这篇文章。我将仅列出使它变得如此有趣的主要功能:

1.由于我们正在谈论的是P2P网络,因此流量不会经过我们提出的节点,而是直接从设备到设备。初始连接专门需要该节点。此外,他不参与工作。节点可以完全关闭,连接不会断开。仅在重新连接时才需要。

2.该节点不需要资源。它在我们最便宜的VPS上安静地运行为130羽每月(或30卢布,如果您设法获得相同的关税)。

3.用户和网络的数量没有限制:您可以连接整个大学流,并在“反恐精英”中安排一次同学会议。

要创建一个节点,我们需要在应用程序的服务器端提高VPS。前面也已经描述了该过程

ZeroTier One的客户端部分具有简约的设计和非常适度的参数集。我们只需要向用户发送节点的ID并对其进行授权。



9Gb飞行了20分钟。比Hamachi快一点。



CrystalDiskMark也显示稍高的值。



像其他任何地方一样,Ping跳了大约10ms。



案例二:如何在办公室薄弱的PC 尽情享受文化放松


ZeroTier提供了另一个机会-现在流行的将游戏流式传输到另一台设备的方式(例如GeForce Now)。ZeroTier可以使用三种替代方法:RDP,Parsec和Moonlighrt。让我们测试一下。

▍RDP


不幸的是,不适合这样做。我测试过的大多数游戏都只是拒绝正常运行。由于视频驱动程序不兼容而崩溃,或者只是没有响应控件。

▍差距


这是一款专门的免费软件,旨在在PC之间传输视频,重点是超低延迟。与Teamviewer或Radmin不同,Parsec能够以相对舒适的方式在FullHD图像中传输稳定的60 FPS(以免一次又一次出现龙纹)。



为了舒适使用,建议主机的电缆连接速度至少为30 Mbps。

在绝大多数游戏中,您都可以舒适地进行游戏而不会出现高输入延迟,但是不幸的是,图像质量会受到影响。由于采用了压缩方法,图像在对比元素上被划分为像素,对眼睛的伤害很大。依赖FPS的游戏(例如射击游戏)无法以适当的舒适度进行游戏。输入滞后虽然很小,但有时会出现图像的一些抖动,尽管这不会干扰枪法,但却很烦人。

Parsec真正超越其他解决方案的是本地合作社。由于Parsec仅允许您共享监视器的图像,因此可以在任何区域内畅玩合作游戏而不会出现问题。而且,你们之间的距离并不重要。我很喜欢和来自新西伯利亚的朋友一起玩Cuphead,并且在反应方面没有遇到任何问题。

Parsec也擅长日常工作。与Teamviewer相比,它速度更快,传输的图像更好,并且对远程桌面的数量没有任何限制。但是,出于这种目的,我始终将RDP,corny用于内置操作系统以及转发本地驱动器的功能。

▍月光


这是开源的,完全免费的远程游戏解决方案。
我会引用他们的网站:
Moonlight(以前称为Limelight)是NVIDIA GameStream协议的开源实现。我们实现了NVIDIA Shield使用的协议,并编写了一组第三方客户端。

Moonlight最明显和最主要的成就是能够以120 FPS或更高的FPS广播4K视频而完全没有任何延迟。

仅当主机安装了Nvidia卡时,Moonlight才起作用。这是由于该项目模拟NVIDIA Shield并直接与驱动程序一起使用。这样一来,您就可以在本地网络中无延迟地广播4K 120FPS。

此外,Moonlight的第二个缺点是无法在没有铃鼓的情况下跳舞而无法在Internet上播放。

▍月光+町


不幸的是,我没有采集卡,而我根本无法在手机上取下显示器。因此,您要么必须相信我的话,要么独立测试每种解决方案。Hamachi的带宽足以在2K 60-120FPS中进行舒适的游戏。随着分辨率的提高,微冻变得明显更强。

可以玩依赖于FPS的游戏,但是游戏可能会停滞四分之一秒。在最大程度地减少延迟方面,Parsec仍然表现得更好。但是,它会降低图像质量。在这里,由您决定哪个更重要:最小的输入滞后和图像伪像或完美的图像,但是微带状?

light月光+ Radmin VPN


Radmin VPN的行为与人工合成的行为相同。播放起来相对舒适,结果只有FullHD和60FPS。上面的分辨率导致了无法忍受的幻灯片显示。有时,图片完全冻结了2秒钟,不幸的是,事实证明这是最糟糕的情况。

▍月光+ ZeroTier


现在我们到了一对美味的夫妇。不用说,官方的Moonlight存储库建议ZeroTier专门用于建立P2P连接。从字面上看,我无法将远程启动的游戏与本地PC上的游戏区分开。所有声明的Moonlight功能均有效。可惜的是,我来自新西伯利亚的朋友拥有一张AMD卡,不得不在同一城市进行测试,称呼他的兄弟(这是莫斯科的北部和南部)。

图像的分辨率高达4K,没有任何刹车。对按下的反应是即时的,您可以像这样玩射击游戏。也许此捆绑包是云游戏的最佳选择。

发现


ZeroTier也许是快速构建对等网络的最佳可负担解决方案。是的,它的功能不允许您构建复杂的网络,也无法访问经典L2TP / IPsec的所有设置。但这对于简单的任务并不总是必需的。

Parsec可能是支持本地合作或拆分屏幕的远程玩游戏的唯一选择(我立即记得《危险时空》中的情人)。它与物理设备的特定技术无关,并且不需要其他网络设置。但是,它会严重挤压图像质量。在无法使用常规方法连接到远程PC的情况下,它适用于快速的计算机帮助。

月光-如果在游戏PC上安装了Nvidia卡,则Moonlight + ZeroTier是远程游戏的理想选择。ZeroTier解决了简单优雅地建立虚拟网络的问题。借助Nvidia Shield的仿真,Moonlight可以让您立即传输出色的图像。它不允许远程PC配置,但是我在上面介绍了其他解决方案。


All Articles