|
這篇中階教程從這個(gè)網(wǎng)絡(luò)拓?fù)鋱D說(shuō)起。

本文教大家如何通過(guò) ZeroTier 讓拓?fù)鋱D中的 兩臺(tái) PC、兩臺(tái) Router、兩臺(tái) Server、iPhone 之間可以互相訪問(wèn)。
初階方案
如果讀過(guò)初階教程,那一定能想得到最容易的方法:在所有的設(shè)備上都安裝 Zerotier 就可以實(shí)現(xiàn)互相訪問(wèn)的目的。但這也是最麻煩的方法,畢竟要在所有設(shè)備上安裝 ZeroTier。
正確的做法是什么?
只需要在兩臺(tái) Router上安裝 ZeroTier 并正確配置 路由表 和 防火墻 即可。
正式開(kāi)始
- 在 Router1 上安裝 Zerotier,并填寫(xiě) network ID 加入 ZeroTier 網(wǎng)絡(luò)
- 假設(shè) ZeroTier 為 Router1 分配的 IP 為 10.10.10.11
- 在 ZeroTier 官網(wǎng)設(shè)置 Managed Routes 選項(xiàng) 如下圖填寫(xiě):

- 點(diǎn)擊加號(hào),等待生效。
- 配置 Router1 的防火墻(以 OPENWRT 路由器為例)
# 其中 zt0 是 ZeroTier 的物理接口,可以使用 zerotier-cli listnetworks 命令查看,其中 zt0 在其他平臺(tái)可能是 其他名字
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
- 為了測(cè)試 iPhone 安裝并運(yùn)行 ZeroTier 并加入 ZeroTier 網(wǎng)絡(luò)
如此 Router1 下的所有設(shè)備和 iPhone 可以互相訪問(wèn)了,也就是說(shuō) iPhone、Router1、PC1、Server1 任意兩個(gè)之間都可以 ping 通。
比如在 iPhone 上 ping 10.10.10.11(Router1)、192.168.10.1(Router1)、192.168.10.100(PC1)、192.168.10.200(Server1) 都是沒(méi)問(wèn)題的。
更進(jìn)一步
將 Router2 網(wǎng)絡(luò)加入 ZeroTier,過(guò)程和 Router1 類似。
- 在 Router2 上安裝 Zerotier,并填寫(xiě)相同 network ID 加入 ZeroTier 網(wǎng)絡(luò)
- 假設(shè) ZeroTier 為 Router2 分配的 IP 為 10.10.10.12
- 在 ZeroTier 官網(wǎng)設(shè)置 Managed Routes 選項(xiàng) 如下圖填寫(xiě):

- 點(diǎn)擊加號(hào),等待生效。
- 配置 Router2 的防火墻(以 OPENWRT 路由器為例)
#其中 zt0 是 ZeroTier 的物理接口,可以使用 zerotier-cli listnetworks 命令查看,其中 zt0 在其他平臺(tái)可能是 其他名字
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
至此,拓?fù)鋱D上的所有設(shè)備都可以互相訪問(wèn)了。而 Router1 和 Router2 所在的兩個(gè)網(wǎng)絡(luò)被無(wú)縫連接在了一起,如果兩個(gè)網(wǎng)絡(luò)在異地,那就是所謂的異地組網(wǎng)了。
ZeroTier 的 Managed Routes 功能
按上面教程設(shè)置后, Managed Routes 如下圖, 對(duì)于熟悉路由表的朋友應(yīng)該沒(méi)什么難度,但對(duì)于對(duì)于網(wǎng)絡(luò)了解很少的朋友可能會(huì)有些困難。
這里簡(jiǎn)單說(shuō)明下:
- networks/bits:填寫(xiě)需要被訪問(wèn)的網(wǎng)段
- (lan):網(wǎng)絡(luò)中接入 ZeroTier 的設(shè)備被分配的 IP
所以前面的教程例子很容易理解了,以 Router1 為例:
- 需要被訪問(wèn)的是 Router1 下的設(shè)備,就是 Router1 的 lan IP 段,拓?fù)鋱D上可以看出 Router1 lan IP 段為 192.168.10.1/24
- 這部分網(wǎng)絡(luò),接入 ZeroTier 的是 Router1 ,被分配的 IP 為 10.10.10.11
- 所以 networks/bits 為 192.168.10.1/24,(lan)為 10.10.10.11
用相同的思路分析 Router2 的網(wǎng)絡(luò),也能得到:networks/bits 為 192.168.5.1/24,(lan)為 10.10.10.12
ZeroTier 會(huì)根據(jù)你的設(shè)置,自動(dòng)(智能)下發(fā)路由表到設(shè)備中,從而實(shí)現(xiàn)多個(gè)網(wǎng)段互聯(lián)互通。感興趣的朋友可以按照教程組網(wǎng),然后查看設(shè)備上路由表。
需要注意
- 組網(wǎng)的多個(gè)局域網(wǎng),IP 段不能沖突,
- 如拓?fù)鋱D中 Router1 192.168.10.1/24 和 Router2 192.168.5.1/24 是不沖突的。
- 防火墻的配置可能因設(shè)備而異
- 主要的目的是放行 ZeroTier 的數(shù)據(jù)包和 SNAT 轉(zhuǎn)換。
|