組網神器Zerotier One使用


一些問題

可以用來干嘛?

  • 異地組網,管理方便,A、B網段內的IP可以直接相互訪問

到底好不好用?

  • 如果不搭建MOON節點,直接P2P的話,速度確實讓人捉急,我感覺這個原因勸退了絕大多數人

和FRP的區別?

  • 應用場景不同。Zerotier One更適合用來組網,可以把它理解成VPN,可以直接通過局域網內IP互相訪問。而frp特點是把內網的某個服務穿透出去,機器一多的話,你就需要記住不同端口號或子網域名。這里並不是說Zerotier Onefrp更好用,需要根據自己的業務場景來看。比如你在家里部署了一個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方式連接的話,速度較慢,一般至少有200ms的延時

中級----使用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_Alan_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會重新生成一個網絡號並且要后台重新授權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM