一些問題
可以用來干嘛?
- 異地組網,管理方便,A、B網段內的IP可以直接相互訪問
到底好不好用?
- 如果不搭建
MOON
節點,直接P2P
的話,速度確實讓人捉急,我感覺這個原因勸退了絕大多數人
和FRP的區別?
- 應用場景不同。
Zerotier One
更適合用來組網,可以把它理解成VPN
,可以直接通過局域網內IP互相訪問。而frp
特點是把內網的某個服務穿透出去,機器一多的話,你就需要記住不同端口號或子網域名。這里並不是說Zerotier One
比frp
更好用,需要根據自己的業務場景來看。比如你在家里部署了一個WEB服務,想要給你異地的朋友使用,你不可能讓你的朋友安裝Zerotier One
吧?直接用frp
把該服務反向代理映射出去,直接給他一個域名不是更方便?
開始使用
初級----安裝
- 賬號注冊(略),注意國內訪問速度很慢,這個自己解決一下
- 創建網絡,進入網絡管理頁面,點擊
Create A Network
后,自動創建一個網絡,點擊網絡ID右側的小圖標可以進行復制
- 客戶端安裝,推薦使用
docker
(1)拉取並運行:docker run -d --restart unless-stopped --name zerotier-one --device /dev/net/tun --net host --cap-add NET_ADMIN --cap-add SYS_ADMIN -v /var/lib/zerotier-one:/var/lib/zerotier-one henrist/zerotier-one
(2)將該客戶端A加入網絡:docker exec zerotier-one zerotier-cli join 8bd5124fd655f3bf
,注意最后的網絡ID,就是上面復制的,根據自己的進行替換,成功后會顯示200 join OK
字段
(3)進入該網絡的管理界面,授權該客戶端加入該網絡
(4) 重復上面步驟,加入另外的客戶端B
(5)根據圖(3)中分配的IP,A、B機器可以相互ping
通
(6)如果是Windows
,客戶端可以直接下載官方的安裝包,進行安裝,不需要使用Docker
(7)直接使用這種P2P
方式連接的話,速度較慢,一般至少有200m
s的延時
中級----使用MOON
加速
- 准備一台有公網IP的機器,放行
9993
端口
docker run --name zerotier-moon -d --cap-add NET_ADMIN --device /dev/net/tun --net host -p 9993:9993/udp --restart always -v ~/zerotier:/var/lib/zerotier-one seedgou/zerotier-moon:master -4 你的公網IP地址
- 根據
docker logs -f zerotier-moon
運行輸出的日志,在客戶端執行該命令添加該MOON
節點
- A、B機器再
ping
一下,查看網絡連接是否改善 docker exec zerotier-one zerotier-cli listmoons
可以查看加入的MOON
高級----組網
現在考慮一個場景:A機器所在的內網lan_A
有10台Server,B機器所在的內網lan_B
也有10台Server,怎么讓A、B機器直接訪問到對方其它Server?
在這20台Server上分別裝上客戶端,這個可以實現需求,不過管理上比較麻煩。
實際上只要分別在lan_A
、lan_B
的某台機器上安裝客戶端,開啟內核轉發,然后在Web管理頁面添加兩條路由就可以了。
最簡單的方法當然是分別在A、B機器上安裝客戶端就可以了,但前提是這兩台機器都是Linux
系統,因為需要開啟內核轉發功能。我在官網文檔並沒找到Windows
的配置方法。
如果A、B兩台機器都是Windows
系統的話,需要分別裝上客戶端。然后在各自的內網內找一台Server,安裝客戶端后,開啟內核轉發就可以了
添加路由
- 正常在兩台Server上安裝客戶端
- 兩台機器分別執行以下命令,開啟內核轉發:
Iface=`ifconfig | grep ^zt | awk '{print $1}'`
echo "net.ipv4.ip_forward=1">/etc/sysctl.conf
sysctl -p
PHY_IFACE=你的物理網卡名稱; ZT_IFACE=$Iface
iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT
#開啟防火牆配置生效
apt install iptables-persistent
netfilter-persistent save
- 登錄Web管理添加路由
盡力表示了,還看不懂的話看下文檔,按照這個方法,添加另外一條路由。
再來概括一下吧:通過Zerotier One
中分配的IP作為網關,跳到對應的網絡
K2P使用
以下內容搬運自恩山論壇csl0524的帖子,稍微做了些修改,如果侵權,請聯系刪除
open-zerotier.sh
腳本:
#!/bin/sh
download_ZT(){
if [ -e "/opt/bin/opkg" ];then
opkg update && opkg install zerotier
opkg remove zerotier
wget -P /tmp https://cdn.jsdelivr.net/gh/steinvenic/JSDELIVR_CDN/zerotier_1.4.6-5_mipsel-3.4.ipk
opkg install /tmp/zerotier_1.4.6-5_mipsel-3.4.ipk
if [ -d "/etc/storage/ZT" ]; then
zerotier-one -d
killall zerotier-one
sleep 5
cd /etc/storage/ZT
cp -rf authtoken.secret identity.public identity.secret /opt/var/lib/zerotier-one/
fi
zerotier-one -d
sleep 15
zerotier-cli join xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
zerotier-cli orbit mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
#上面的xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx改成自己的networkID
#上面的mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 改成自己的moon id(如果有的話)
# 添加防火牆規則
sleep 20
Iface=`ifconfig | grep ^zt | awk '{print $1}'`
iptables -I FORWARD -i $Iface -j ACCEPT
iptables -I FORWARD -o $Iface -j ACCEPT
iptables -I INPUT -i $Iface -j ACCEPT
#添加ZT路由表
#route add -net 172.16.64.0 netmask 255.255.240.0 gw 10.144.63.69 $Iface
#route add -net 192.168.41.0 netmask 255.255.255.0 gw 192.168.191.242 $Iface
#route add -net 192.168.13.0 netmask 255.255.255.0 gw 192.168.191.242 $Iface
#route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.191.105 $Iface
#route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.191.127 $Iface
fi
}
while [ ! -e "/opt/bin/zerotier-one" ]
do
download_ZT
sleep 600
done
-
保存open-zerotier.sh腳本,放入/etc/storage目錄下
-
自定義腳本中添加以下命令
killall open-zerotier.sh
/etc/storage/open-zerotier.sh > /tmp/zerotier_log.txt 2>&1 &
- 到zerotier后台看應該有設備連接上來了,在Auth項打勾授權
- 切換到/etc/storage目錄,在該目錄下新建一個ZT的文件夾,再打開
/opt/var/lib/zerotier-one/
目錄,復制authtoken.secret identity.public identity.secret
三個文件到剛才的ZT文件夾。這三個文件夾包含着本機zerotier的網絡號,每次開機zerotier自動安裝好后會把這三個文件恢復,不然每次開機zerotier會重新生成一個網絡號並且要后台重新授權