本文博客園地址:https://www.cnblogs.com/Zhou-Tx/p/17713078.html,非VIP用戶可前往免費閱讀。
零、引言
眾所周知,Zerotier-One是一個非常好的組建虛擬局域網(wǎng)的工具,可以以p2p的方式穿透NAT網(wǎng)絡(luò)進行連接。但是在使用中也仍然存在著一些瑕疵,主要就是以下兩點:
- 因為Zerotier官方提供的中心節(jié)點(planet節(jié)點)全部都在國外,所以更新路由表的時候,通常會消耗較長的時間,甚至可能失??;
- 官方免費版本最多只支持1個管理員和25個節(jié)點。
我這篇博客主要就是針對以上兩個問題的解決做了一些記錄。
一、加速節(jié)點(moon節(jié)點)
在原本的使用中,我們每次更新路由表,都是需要連接官方的planet節(jié)點,因此我們希望使用一種類似鏡像的方式,將路由表緩存到一個能夠快速查詢的地方,也就是下面所說的moon節(jié)點。
moon節(jié)點可以理解為多級緩存,當需要更新路由表時,leaf節(jié)點會首先請求moon節(jié)點查詢,如果失敗再去planet節(jié)點查詢;而moon節(jié)點會將最新的路由表信息返回,如果沒有最新緩存則會再去請求上級節(jié)點(moon或者planet)并返回。
創(chuàng)建moon節(jié)點的方式很簡單,只需要在一臺擁有公網(wǎng)ip的服務(wù)器上使用命令生成即可,步驟如下:
1、安裝zerotier
# 使用官方提供的腳本一鍵安裝
curl -s https://install.zerotier.com | sudo bash
2、生成moon配置文件
cd /var/lib/zerotier-one
zerotier-idtool initmoon identity.public > moon.json
3、在配置文件中添加公網(wǎng)IP地址
在moon.json
文件中,roots
下有一項stableEndpoints
,在里面加入自己的公網(wǎng)ip和zerotier端口(9993),例如:
{
"stableEndpoints": ["47.102.205.100/9993"]
}
注意點1:填的一定是公網(wǎng)IP,IPv4和IPv6均可,端口默認為9993不需要更換。
注意點2:服務(wù)器防火墻需要開放9993端口(注意是UDP)。
4、使用moon配置文件生成moon簽名文件
cd /var/lib/zerotier-one
zerotier-idtool genmoon moon.json
這一步會生成一個*.moon
格式的文件,例如0000000ac535316c.moon
。
5、將moon文件移動到moons目錄下,并重啟zerotier-one服務(wù)
mkdir /var/lib/zerotier-one/moons.d
mv /var/lib/zerotier-one/*.moon /var/lib/zerotier-one/moons.d/
systemctl restart zerotier-one.service
至此,moon節(jié)點就算搭建好了
6、在leaf節(jié)點中導(dǎo)入moon
將上述生成的*.moon
文件下載至本地,放到對應(yīng)目錄下,并重啟zerotier-one服務(wù)。
Windows 系統(tǒng) 放在
C:\ProgramData\ZeroTier\One\moons.d\
Linux 系統(tǒng) 放在/var/lib/zerotier-one/moons.d/
在管理員模式下使用命令行查看
sudo zerotier-cli peers # 此命令 Windows 和 Linux 相同
就可以看到自己新創(chuàng)建的moon節(jié)點了(role為MOON, path為自己的公網(wǎng)IP)
二、搭建私有服務(wù)器
官方免費版本最多只支持1個管理員和25個節(jié)點,前者倒不是很重要,但后者對于我們這些經(jīng)常自己搭私服玩游戲的人來說就有點不太夠用了,因此只能自建私有服務(wù)器來解決。
1、Restful API / Sockets API
Zerotier本身提供了Restful API 和主流程序語言的sdk,有興趣的可以自行查閱文檔https://docs.zerotier.com
2、使用ztncui圖形化用戶界面控制
ztncui
(ZeroTier Network Controller User Interface)是由key-networks
開源的zerotier圖形化用戶界面。倉庫地址:https://github.com/key-networks/ztncui,有興趣的可以自行編譯部署。
3、使用容器部署ztncui
與大多數(shù)編譯安裝的應(yīng)用類似,編譯部署ztncui也需要先安裝其必備的環(huán)境、配置各項參數(shù),并不方便。因此,我選擇了云原生方式,使用Docker
容器部署ztncui。倉庫地址:https://github.com/key-networks/ztncui-containerized
3.1、拉取鏡像
docker pull keynetworks/ztncui:latest
這里我們使用latest
版本號,因為與zerotier-one
一樣,zerotier
也仍在不斷迭代新版本。文章來源:http://www.zghlxwxcb.cn/news/detail-633418.html
3.2、啟動容器
因為我們只需要使用ztncui這一個進程,所以我們將entrypoint
修改為/start_ztncui.sh
。文章來源地址http://www.zghlxwxcb.cn/news/detail-633418.html
docker run -itd \
到了這里,關(guān)于使用ztncui配置私有化zerotier服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!