背景
在没有公网ip的情况下,自建Zerotier Planet服务器来实现异地组网,但是在每个设备上都安装Zerotier客户端太繁琐,所以通过在路由器端安装Zerotier来实现下级设备的访问。
⚠️如果使用Zerotier官方服务器,省去2.1、2.2步骤。
二、具体操作
整体思路就是:先在公网搭建一个Zerotier Planet服务,然后下载生成的 planet
文件准备后续使用;然后在immortalwrt上安装Zerotier Clinet,替换 Planet
文件,并加入我们自建的局域网;最后登录Planet服务器,配置实现局域网地址访问下级设备。
2.1、安装Zerotier
1、公网搭建Zerotier Planet服务
找一个公网服务器,通过docker compose安装,具体代码如下:
# filename: docker-compose.yaml
services:
ztplanet:
image: xubiaolin/zerotier-planet:latest
container_name: ztplanet
ports:
- 9994:9994
- 9994:9994/udp
- 3443:3443
- 3000:3000
environment:
- IP_ADDR4=xx.xx.xx.xx
- IP_ADDR6=xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
- ZT_PORT=9995
- API_PORT=3442
- FILE_SERVER_PORT=3001
volumes:
- ./data/zerotier/dist:/app/dist
- ./data/zerotier/ztncui:/app/ztncui
- ./data/zerotier/one:/var/lib/zerotier-one
- ./data/config:/app/config
restart: unless-stopped
⚠️IP_ADDR4/IP_ADDR6中的xxxx替换成你自己服务器的公网ip。
在 docker-compose.yaml
文件所在文件夹执行如下命令,就可以启动planet服务:
docker compose up -d
然后在 dist
目录下找到我们需要的 planet
文件,下载下来,后续需要导入到客户端。
2、op安装配置Zerotier
登录路由器,在【系统】→【软件包】菜单下,点击【更新列表】,等待更新结束,在过滤器输入 zerotier
,安装如图所示的三个软件,安装完成后不着急启动,我们先替换 planet
文件。

2.2、配置zerotier
1、替换Planet文件
通过 ssh
连接路由器,登陆后找到 /etc/zerotier/
文件夹,将路径下的 planet
替换城我们之前下载好的文件即可。
2、配置网络
先进入你的planet服务器,根据2.1.1节的 docker-compose
文件的配置,访问 http://公网ip:3443
端口,进入网页配置生成一个网络,复制下来你的 NetWork ID
。

然后进入路由器的【VPN】→【Zerotier】菜单,点击最下方“网络配置”中的的【编辑】,将“网络 ID”替换成你刚才创建的网络的,然后如下图勾,路由器就配置完成了。

然后进入你的planet网站,点击刚才创建的网络,勾选【Authorized】和【Active bridge】,网络就通畅了。

2.3、配置下级设备访问
目前为止,已经实现了路由器加入Zerotier局域网,但是暂时只能访问我们的路由器,对于下级设备还无法访问, 我们再次打开Planet服务器,进入刚才创建的为网络,点击上方的【Routes】,在“Target”中输入路由器在家庭局域网中的地址的网段,比如路由器的地址是 192.168.1.1
,则输入 192.168.1.0/24
,在“Gateway”中输入路由器在Zerotier网路中的地址,保存即可。

三、效果展示
假设家庭局域网中有一台NAS的地址是 192.168.100.231
,现在在另一台已经加入Zerotier网络的电脑**问该地址,即可进入该设备。
四、总结
Zerotier实现异地组网,实现家庭局域网地址对下级设备的访问的核心在于勾选 Active bridge
,和后续 Route
的配置。