ZeroTier 中级教程

這篇中階教程從這個網絡拓撲圖説起。

ZeroTier 中階教程

本文教大家如何通過 ZeroTier 讓拓撲圖中的 兩台 PC、兩台 Router、兩台 Server、iPhone 之間可以互相訪問。

初階方案

如果讀過初階教程,那一定能想得到最容易的方法:在所有的設備上都安裝 Zerotier 就可以實現互相訪問的目的。但這也是最麻煩的方法,畢竟要在所有設備上安裝 ZeroTier。

正確的做法是什麼?

只需要在兩台 Router上安裝 ZeroTier 並正確配置 路由表 和 防火牆 即可。

正式開始

  1. 在 Router1 上安裝 Zerotier,並填寫 network ID 加入 ZeroTier 網絡
  2. 假設 ZeroTier 為 Router1 分配的 IP 為 10.10.10.11
  3. 在 ZeroTier 官網設置 Managed Routes 選項 如下圖填寫:

    ZeroTier 中階教程
  4. 點擊加號,等待生效。
  5. 配置 Router1 的防火牆(以 OPENWRT 路由器為例)
    1
    2
    3
    4
    5
    6
    7
    8
    # 其中 zt0 是 ZeroTier 的物理接口,可以使用  zerotier-cli listnetworks 命令查看,其中 zt0 在其他平台可能是 其他名字
    root@LEDE:~# zerotier-cli listnetworks
    200 listnetworks <nwid> <name> <mac> <status> <type> <dev> <ZT assigned ips>
    200 listnetworks xxxxxxxxx MarIxs xx:xx:xx:xx:xx:xx OK PRIVATE zt0 10.10.10.11/20
    #配置防火牆
    root@LEDE:~# iptables -I FORWARD -i zt0 -j ACCEPT
    root@LEDE:~# iptables -I FORWARD -o zt0 -j ACCEPT
    root@LEDE:~# iptables -t nat -I POSTROUTING -o zt0 -j MASQUERADE
  6. 為了測試 iPhone 安裝並運行 ZeroTier 並加入 ZeroTier 網絡

如此 Router1 下的所有設備和 iPhone 可以互相訪問了,也就是説 iPhone、Router1、PC1、Server1 任意兩個之間都可以 ping 通。

比如在 iPhone 上 ping 10.10.10.11(Router1)、192.168.10.1(Router1)、192.168.10.100(PC1)、192.168.10.200(Server1) 都是沒問題的。

更進一步

將 Router2 網絡加入 ZeroTier,過程和 Router1 類似。

  1. 在 Router2 上安裝 Zerotier,並填寫相同 network ID 加入 ZeroTier 網絡
  2. 假設 ZeroTier 為 Router2 分配的 IP 為 10.10.10.12
  3. 在 ZeroTier 官網設置 Managed Routes 選項 如下圖填寫:

    ZeroTier 中階教程
  4. 點擊加號,等待生效。
  5. 配置 Router2 的防火牆(以 OPENWRT 路由器為例)
    1
    2
    3
    4
    5
    6
    7
    8
    #其中 zt0 是 ZeroTier 的物理接口,可以使用  zerotier-cli listnetworks 命令查看,其中 zt0 在其他平台可能是 其他名字
    root@LEDE:~# zerotier-cli listnetworks
    200 listnetworks <nwid> <name> <mac> <status> <type> <dev> <ZT assigned ips>
    200 listnetworks xxxxxxxxx MarIxs xx:xx:xx:xx:xx:xx OK PRIVATE zt0 10.10.10.12/20
    #配置防火牆
    root@LEDE:~# iptables -I FORWARD -i zt0 -j ACCEPT
    root@LEDE:~# iptables -I FORWARD -o zt0 -j ACCEPT
    root@LEDE:~# iptables -t nat -I POSTROUTING -o zt0 -j MASQUERADE

至此,拓撲圖上的所有設備都可以互相訪問了。而 Router1 和 Router2 所在的兩個網絡被無縫連接在了一起,如果兩個網絡在異地,那就是所謂的異地組網了。

ZeroTier 的 Managed Routes 功能

按上面教程設置後, Managed Routes 如下圖,

ZeroTier 中階教程

對於熟悉路由表的朋友應該沒什麼難度,但對於對於網絡瞭解很少的朋友可能會有些困難。這裏簡單説明下:

  • networks/bits:填寫需要被訪問的網段
  • (lan):網絡中接入 ZeroTier 的設備被分配的 IP

所以前面的教程例子很容易理解了,以 Router1 為例:

  • 需要被訪問的是 Router1 下的設備,就是 Router1 的 lan IP 段,拓撲圖上可以看出 Router1 lan IP 段為 192.168.10.1/24
  • 這部分網絡,接入 ZeroTier 的是 Router1 ,被分配的 IP 為 10.10.10.11
  • 所以 networks/bits 為 192.168.10.1/24,(lan)為 10.10.10.11

用相同的思路分析 Router2 的網絡,也能得到:networks/bits 為 192.168.5.1/24,(lan)為 10.10.10.12

ZeroTier 會根據你的設置,自動(智能)下發路由表到設備中,從而實現多個網段互聯互通。

感興趣的朋友可以按照教程組網,然後查看設備上路由表。

需要注意

  • 組網的多個局域網,IP 段不能衝突,

    • 如拓撲圖中 Router1 192.168.10.1/24 和 Router2 192.168.5.1/24 是不衝突的。
  • 防火牆的配置可能因設備而異

    • 主要的目的是放行 ZeroTier 的數據包和 SNAT 轉換。

其他 FAQ

  1. ZeroTier 一定要安裝路由器上才能實現組網嘛?

    • 不,只要能運行 ZeroTier 的設備加上正確的路由表都可以實現。只是在路由器(網關上)某些配置更加方便。
  2. 只能兩個局域網互相訪問嘛?
    • 當然可以更多
  3. 延遲如何?
    • 實測在 4G 網絡下十分不穩定。
    • 在固網(寬帶)的情況下很穩定
(0)

相关推荐