ZeroTier:不折腾路由器,把几台设备拉进同一个虚拟局域网
NAS、公司电脑、父母家的机器,装个客户端加入同一个网络 ID,之后互相用内网 IP 访问,像插在同一台交换机上。
ZeroTier 和 Tailscale 是同一类东西:组一个虚拟局域网。区别在实现——ZeroTier 的根服务器更独立,国内直连的成功率高一些。
飞牛应用中心里能装,装完 NAS 就有了一个固定的虚拟 IP。
装
services:
zerotier:
image: zerotier/zerotier:latest
container_name: zerotier
network_mode: host
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
volumes: ["./zerotier:/var/lib/zerotier-one"]
restart: unless-stopped
network_mode: host 是必须的——它要操作宿主机的网络栈,桥接模式下建不了虚拟网卡。
加入网络:
docker exec zerotier zerotier-cli join <你的网络ID>
网络 ID 在 my.zerotier.com 建一个 Network 之后就有,16 位字符。
后台要做的事
登录 ZeroTier 官网(免费版支持 25 个设备):
- Create A Network,得到一个 16 位 ID;
- 进去之后能看到"成员列表",新加入的设备会显示为未授权;
- 勾选前面的复选框,授权;
- 记下分配的 IP(通常是
10.147.17.x这种)。
之后其他设备装客户端、join 同一个 ID,就都在这张网里了。
用它干什么
一、远程访问 NAS
在外面用 10.147.17.5:5666 直接打开飞牛后台,不用穿透、不用域名。
二、多地点互连
父母家的电脑、你的 NAS、公司的笔记本,三方互相能 ping 通。传文件直接 SMB 挂载。
三、给设备一个固定地址
家里宽带换了 IP、换了运营商,虚拟 IP 不变。脚本里的地址不用改。
和 Tailscale 怎么选
说实话两者很像。几个实际差别:
- ZeroTier 在国内直连成功率略高,因为它有更多中继节点;
- Tailscale 的客户端生态更好(路由器插件、Docker 侧车多);
- ZeroTier 免费 25 设备,Tailscale 免费 100 设备;
- 两者都支持自建根节点(moon / headscale),但配置麻烦。
如果只是家里几台设备,选哪个都能用。 别在这上面纠结。
几个实用配置
Managed Routes
在后台加一条路由,比如 192.168.1.0/24 via 10.147.17.5,可以让其他设备访问 NAS 所在的整个局域网。前提是 NAS 上开了 IP 转发。
Flow Rules
默认允许全部互通。家里用够了;如果设备多,可以按 IP 限制谁能访问谁。
关闭自动分配
想手动指定 IP,后台里关掉 “Auto-Assign”,自己填。
会踩的坑
join 之后一直 OFFLINE 后台没授权。去 my.zerotier.com 勾上。
能 ping 通但访问不了服务 防火墙拦了。宿主机的 iptables/firewalld 要放行对应端口。
速度很慢
走了中继(relay)。用 zerotier-cli peers 看 DIRECT 还是 RELAY。RELAY 说明打洞失败,看看是不是双 NAT。
重启后网络掉了
cap_add 和 /dev/net/tun 没配。缺这两样,容器里的 ZeroTier 建不了网卡。
免费版够不够 25 台设备、100 个成员?家庭用远远够。只有超过才需要付费。
它适合谁
- 有 NAS,想在外面直接访问内网的;
- 几个地点之间要互通(自己家 + 父母家 + 办公室);
- 不想折腾穿透、DDNS、端口映射的。
不适合:只是偶尔访问一次 NAS(飞牛自带的远程访问够了);对"经过第三方根服务器"有顾虑的(那自己搭 WireGuard)。
最后
这类工具的价值在于把复杂的网络问题变成一次配置。
配好之后,你的设备之间就没有"局域网/外网"的区别了——它们只是同一个网里的不同 IP。
有问题留言。
留言