ZeroTier:你自己的虛擬骨干網
自動化是現在的一個熱門話題。在我作為網站可靠性工程師(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?
? 來獲得連接和可用節點的列表,改變網絡設置,以及離開網絡。
Image of Setting up a New Node
在加入一個網絡后,你必須批準該節點的訪問,可以通過網絡控制臺或調用應用程序編程接口(API)。這兩種方法在 ZeroTier 網站上都有文檔說明。連接兩個節點后,無論你身在何處或位于防火墻的哪一側,你都可以相互連接,就像你們在同一個建筑的同一個網絡中。我的主要用例之一是 ??遠程訪問我的家庭助理環境??,而不需要打開防火墻端口或將其暴露在互聯網上(關于我的家庭助理設置和相關服務的更多信息,見后文)。
我自己做的一件事是為內部 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 提供者??? 和一個 ??很棒的 Zerotier 資源?? 清單。到今天為止,我正在使用 ZeroTier 連接四個物理站點的機器,其中三個在 NAT 防火墻后面。Zerotier 的設置很簡單,而且管理起來幾乎完全不費力。