基本概念
ZeroTier is a smart Ethernet switch for planet Earth.
通俗來講就是 Peer to Peer (P2P) ,ZeroTier 根服務器記錄請求路徑來做類似於DNS的解析。主要功能,就是可以把多個不同網絡的設備連接在一起,用來就像在一個局域網下 如下圖
ZeroTier 配置一個虛擬網段172.12.0.0/16,在家中加入這個網絡中,即可訪問位於公司172.12.0.101
專有名詞
Zerotier 定義了幾個專業名詞:
PLANET 行星服務器,Zerotier 根服務器
MOON 衛星服務器,用戶自建的私有根服務器,起到代理加速的作用
LEAF 網絡客戶端,就是每台連接到網絡節點。
開始使用
注冊 zerotier 服務
https://my.zerotier.com/
創建網絡
內網目標機器安裝客戶端
Linux
curl -s https://install.zerotier.com | sudo bash
其他操作系統
下載地址:https://www.zerotier.com/download/
客戶端加入創建的網絡
Linux
zerotier-cli join 17d7123456c1ed14b #上圖創建網絡生成的16位ID
windows
或者是cmd 后出入跟 linux一樣
zerotier 同意客戶端接入
點擊第二部創建的網絡,進入網絡詳情 ,同意客戶端
如上圖,給客戶端分配 的局域網 IP, 當然網段可以通過 本頁Advanced 調整。
確定網絡聯通(下圖是moon后連接圖)
建立國內中轉服務
建立中轉服務器 moon Zerotier 的官方服務器在國外,國內客戶端使用時延遲較大,網絡高峰期時甚至各個客戶端節點之間訪問不了。此時 moon 中轉服務器就顯得非常重要,它的主要功能是通過自定義的服務器作為跳板加速內網機器之間的互相訪問。
准備
搭載moon(衛星級服務器,用戶自建的私有根服務器,起到中轉加速的作用)
機器 A(這里選用了雲服務器)
內網機器
機器 B跟 C (兩筆記本)
設置教程
1. 生成及修改 moon.json
首先登陸到機器 A 上,前往路徑 /var/lib/zerotier-one。運行命令
zerotier-idtool initmoon identity.public >>moon.json
此命令會在當前目錄下生成一個文件 moon.json,文件內容如下:
{ "id": "9d2456s2d7", "objtype": "world", "roots": [ { "identity": "9d255ee2d7:0:7f36dcd6a7ef8ee21a0cf801e194a72ef36780b4c8578ff51fjsghfae23fc26da8c1803e7dfd17699226516ece92e752d3999bd14fb23065cf78762cb699bab", "stableEndpoints": [] } ], "signingKey": "8060e833f6f0f46068dfdc97545f8c9b1b1a9358fdcf664c64ee9078f5088c48a7806c82e75cbddad898129485444cc7e83db6344d1f2e518b9b9d132c327986", "signingKey_SECRET": "e70cbfefddac12yh67506f3e54d376bb4c6830d6960e7a153ed0cb9aa6f4af2ecd8d423d4cae59195d2ab0398ede0673cf67h633bce5ec4140493d37d6a50ab9", "updatesMustBeSignedBy": "8060e833f6f0f46068dfdc97545f8c9b1b1a9358fdcf664c64ee9078f5my6d48a7806c82e75cbddad898129485444cc7e83db6344d1f2e518b9b9d132c327986", "worldType": "moon" }
其中 id 為機器 A 在 ZeroTier 中的 id,本文為 9d2456s2d7。
修改 “stableEndpoints” 為機器 A 的公網的 ip。如:
"stableEndpoints": [ "1.2.3.4/9993","2001:abcd:abcd::1/9993" ]
若公網機器沒有 IPv6 地址,則將其修改為
"stableEndpoints": [ "1.2.3.4/9993" ]
2. 生成簽名文件
修改完 moon.json 后,執行命令
zerotier-idtool genmoon moon.json
此命令會生成一個簽名文件在當前目錄下,文件名如 0000009d2456s2d7.moon (機器 A 的 id 為 9d2456s2d7)
3. 將 moon 節點加入網絡
在機器 A 中的 ZeroTier 目錄中建立子文件夾 moons.d
不同系統下的 ZeroTier 目錄位置:
Windows: C:\ProgramData\ZeroTier\One Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中應為 /Library/Application\ Support/ZeroTier/One) Linux: /var/lib/zerotier-one FreeBSD/OpenBSD: /var/db/zerotier-one
將在機器 A 生成的 0000009d2456s2d7.moon 拷貝進 moons.d 文件夾中,並重啟
ZeroTier(此步好像有些許 bug,重啟電腦為佳)
4. 將內網機器連接上 moon 節點
方法一
在機器 B、機器 C 中的 ZeroTier 目錄中建立子文件夾 moons.d
不同系統下的 ZeroTier 目錄位置:
Windows: C:\ProgramData\ZeroTier\One Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中應為 /Library/Application\ Support/ZeroTier/One) Linux: /var/lib/zerotier-one FreeBSD/OpenBSD: /var/db/zerotier-one
方法二
在機器 B、機器 C 上執行
zerotier-cli orbit 9d2456s2d7 9d2456s2d7
查看是否連接
在其他機子執行以下命令將會顯示該moon服務器:
zerotier-cli listpeers
如果出現下面情況說明連接上
原文鏈接:https://blog.csdn.net/dingjianjin/article/details/104235222