自动化是目前的热门话题。在我的日常工作中,作为一名站点可靠性工程师 (SRE),我的部分职责是尽可能自动化重复性任务。但是,我们有多少人在日常的非工作生活中这样做呢?今年,我专注于自动化消除繁琐的工作,以便我们可以专注于重要的事情。
在自动化一切的过程中,我在远程站点遇到了一些困难。我不是网络人员,所以我开始研究我的选择。在研究了各种虚拟专用网络 (VPN)、硬件端点、防火墙规则以及支持多个远程站点的所有内容后,我感到困惑、脾气暴躁,并对这一切的复杂性感到沮丧。
然后我找到了 ZeroTier。ZeroTier 是一个加密的虚拟网络骨干,允许多台机器像在同一网络上一样进行通信。代码都是开源的,您可以自托管控制器,也可以使用 ZeroTierOne 服务,该服务提供免费或付费计划。我现在正在使用他们的免费计划,它非常强大、稳定且非常一致。
因为我使用的是 Web 服务,所以我不会详细介绍如何运行控制器和根服务。ZeroTier 在他们的 文档 中提供了关于如何做到这一点的完整参考,而且写得非常好。
在 Web 用户界面中创建我自己的虚拟网络后,客户端安装几乎是微不足道的。ZeroTier 提供了 APT、RPM、FreeBSD 和许多其他平台的软件包,因此让第一个节点上线几乎毫不费力。
安装完成后,客户端连接到控制器服务,并为节点生成唯一的 ID。在 Linux 上,您可以使用 zerotier-cli
命令加入网络,使用 zerotier-cli join NETWORKID
命令。
$ sudo zerotier-cli info
200 info 469584783a 1.x.x ONLINE
您还可以使用 zerotier-cli
获取已连接和可用节点的列表、更改网络设置以及离开网络。

(Kevin Sonney, CC BY-SA 4.0)
加入网络后,您确实需要批准节点的访问权限,可以通过 Web 控制台或调用应用程序编程接口 (API) 来完成。ZeroTier 网站上记录了这两种方法。在您连接了两个节点之后,无论您身在何处,或者您可能位于任何防火墙的哪一侧,彼此连接都完全符合您在同一栋建筑物中的同一网络上的期望。我的主要用例之一是远程访问我的 Home Assistant 设置,而无需打开防火墙端口或将其暴露于互联网(稍后会详细介绍我的 Home Assistant 设置和相关服务)。
我自己设置的一件事是用于内部 DNS 的 Beta ZeroNDS 服务。这为我节省了管理我自己的名称服务或为所有私有主机和 IP 地址创建公共记录的许多复杂性。我发现这些说明非常简单明了,并且能够在 5 分钟左右为我的私有网络启动并运行 DNS 服务器。每个客户端都必须允许 Zerotier 设置 DNS,这在 GUI 客户端中非常简单。要在 Linux 客户端上启用它,请使用
$ sudo zerotier-cli setNETWORKID allowDNS=1
当您添加和删除主机时,无需进行其他更新,并且它“开箱即用”。
$ sudo zerotier-cli info
200 info 469584845a 1.x.y ONLINE
$ sudo zerotier-cli join
93afae596398153a 200 join OK
$ sudo zerotier-cli peers
200 peers
<ztaddr> <ver> <role> <lat> <link> <TX> <RX> <path>
61d294b9cb - PLANET 112 DIRECT 7946 2812 50.7.73.34/9993
62f865ae71 - PLANET 264 DIRECT 7946 2681 50.7.76.38/9993
778cde7190 - PLANET 61 DIRECT 2944 2901 103.195.13.66/9993
93afae5963 1.x LEAF 77 DIRECT 2945 2886 35.188.31.177/41848
992fcf1db7 - PLANET RECT 79124 DI47 2813 195. 181.173.159/9993
我在这里几乎没有触及到这些功能的表面。ZeroTier 还允许 ZeroTier 网络之间的桥接、高级路由规则以及更多功能。他们甚至有一个 Terraform 提供程序 和一个 Awesome Zerotier Things 列表。截至今天,我正在使用 ZeroTier 连接跨越四个物理站点的机器,其中三个站点位于 NAT 防火墙后面。Zerotier 设置简单,管理几乎完全无痛。
评论已关闭。