此處均以linux環境為準
1.安裝 moon,zerotier官方提供了比較方便的安裝方式,一條命令即可完成:
curl -s https://install.zerotier.com/ | sudo bash
2.生成moon配置檔案
cd /var/lib/zerotier-one #安裝好zerotier後,自動會安裝到此目錄 sudo zerotier-idtool initmoon identity.public > moon.json #該命令將id檔案轉換為能用於配置的json
- 修改配置檔案moon.json,主要是新增公網IP,修改內容如下, 9993是預設埠
"stableEndpoints": [ "23.23.23.23/9993" ]
注:23.23.23.23為公網ip, 一定要配置正確,Zerotier依靠此配置去連線moon.後面的埠若沒有改變則預設都是9993埠, 且是UDP協議的, 此處在防火牆上需要開放UDP,否則是連線不上Moon的.
該配置裡面,有一個id欄位,10個字元,如: ["id": "18fasd2319"], 就是moon的id, 在客戶端連線時,需要用到它.
4.生成moon檔案
sudo zerotier-idtool genmoon moon.json
執行該命令後,會在在/var/lib/zerotier-one目錄下生成一個類似00000018fasd2319.moon的檔案..這個檔案非常重要,所有的客戶端要連線上moon都是依靠該檔案關聯的..
5.使moon配置檔案生效:
在/var/lib/zerotier-one目錄下,新建一個 moons.d 資料夾,並將剛生成的moon配置檔案放到該資料夾下
mv 00000018fasd2319.moon moons.d/
- 重新啟動moon伺服器,由於使用命令安裝時會自動註冊為服務,所以可以依靠以下命令完成啟動或重啟
service zerotier-one restart #(服務重啟命令) /etc/init.d/zerotier-one restart #(服務重啟命令) service zerotier-one start #(服務啟動命令) zerotier-one -d #或直接程式啟動
經過以上配置,伺服器上的moon即配置並應用完畢.
客戶端連線並使用伺服器上的Moon
接下來就需要在各客戶端zerotier上配置,並連線此伺服器,
有兩種方法可以完成.
方法1.
Linux: 直接在zerotier目錄下,建立moons.d資料夾,並且將生成的00000018fasd2319.moon檔案拷入,並重啟服務即可.
Windows(10):由於大部分人常用環境都是windows,所以此處著重對在windows環境下的配置說明下:
開啟服務程式services.msc, 找到服務"ZeroTier One", 並且在屬性內找到該服務可執行檔案路徑,我的環境下為C:\ProgramData\ZeroTier\One\zerotier-one_x64.exe, 開啟該資料夾, 並且在其下建立moons.d資料夾,然後將moon伺服器下生成的000xxxx.moon檔案,複製到此資料夾內..再重啟該服務即可..
(注,此處重啟的是該項服務,不是電腦右下角的圖示程式..網上大多資料都沒法特別說明,或者含糊沒說清,甚至重啟電腦之類的說法都說出來了,比較馬虎..右下角工作列程式路徑是在C:\Program Files (x86)\ZeroTier\One目錄下,而服務路徑卻並非在該路徑,若將moons.d資料夾放不對位置,是無法連上Moon伺服器的.)
方法2.
只需執行此命令即可,此處需要輸入兩遍id:
zerotier-cli orbit 18fasd2319 18fasd2319
(此種方法依賴zerotier的根伺服器,若根伺服器連線不上,則會無效,由於不確定性, 所以本人更喜歡方法1..這個看個人情況而定,適用就好...)
要驗證是否moon生效,只需要在客戶端zerotier程式目錄下,執行以下命令即可:
zerotier-cli listpeers
若有類似地址,即可證明moon連線成功
200 listpeers 18fasd2319 23.23.23.23/9994;4242;4038 224 1.2.12 MOON
附錄:
由於很多人對配置服務端的moon都會有修改埠的需求,筆者也不例外, 翻了官網不少文件最後才找到方法..在此處一併記錄下來..以供大家參考:
在執行程式同級目錄下建立local.conf檔案:
檔案內容配置如下,primaryPort即為想要配置的埠:
{ "settings": { "primaryPort":9994 } }
local.conf 完整配置示例如下:
{ "physical": { /* Settings that apply to physical L2/L3 network paths. */ "NETWORK/bits": { /* Network e.g. 10.0.0.0/24 or fd00::/32 */ "blacklist": true|false, /* If true, blacklist this path for all ZeroTier traffic */ "trustedPathId": 0|!0 /* If present and nonzero, define this as a trusted path (see below) */ } /* ,... additional networks */ }, "virtual": { /* Settings applied to ZeroTier virtual network devices (VL1) */ "##########": { /* 10-digit ZeroTier address */ "try": [ "IP/port"/*,...*/ ], /* Hints on where to reach this peer if no upstreams/roots are online */ "blacklist": [ "NETWORK/bits"/*,...*/ ] /* Blacklist a physical path for only this peer. */ } }, "settings": { /* Other global settings */ "primaryPort": 0-65535, /* If set, override default port of 9993 and any command line port */ "portMappingEnabled": true|false, /* If true (the default), try to use uPnP or NAT-PMP to map ports */ "softwareUpdate": "apply"|"download"|"disable", /* Automatically apply updates, just download, or disable built-in software updates */ "softwareUpdateChannel": "release"|"beta", /* Software update channel */ "softwareUpdateDist": true|false, /* If true, distribute software updates (only really useful to ZeroTier, Inc. itself, default is false) */ "interfacePrefixBlacklist": [ "XXX",... ], /* Array of interface name prefixes (e.g. eth for eth#) to blacklist for ZT traffic */ "allowManagementFrom": "NETWORK/bits"|null, /* If non-NULL, allow JSON/HTTP management from this IP network. Default is 127.0.0.1 only. */ "allowTcpFallbackRelay": true|false /* Allow or disallow establishment of TCP relay connections (true by default) */ } }