Zerotier连接局域网的两种方式

很早以前折腾过一次zerotier,但当时的折腾是因为LEDE上没有预装,梅林上也没有现成包,都要手动安装的折腾。安装好以后,发现能访问了,就算折腾成功了。

先说一个悲伤的故事,公司有一位同事阳了,于是所有人员都成了密接,然后就进方舱的进方舱,进酒店的进酒店。作为密接者,我也要5+3,5天酒店,3天居家。

远程工作期间,需要访问公司的NAS。公司路由器用的梅林,自带华硕的DDNS,也自带OPENVPN服务端,所以就设置了OPENVPN给大家用。但很奇怪,我今天用Mac访问不了,但又很着急的想要去NAS找千川的视频做投放,所以就又想起了zerotier。

好在之前做了准备,公司的路由器开了WEB远程访问,所以可以正常进Router操作。经过各种学习,把公司的Zerotier搞定了。然后又一想,家里也有这个需求,家里是LEDE路由器,把家里也搞定了。但在研究过程中,了解到Zerotier不止可以用NAT的模式,还能用桥接的模式,又重新来了一遍,把家里的搞成了桥接模式,这样理论上网络拓扑结构就更简单,在同一个网络下了。

下面记录一下主要的操作。记录下理解,具体命令就不写了,可见参考文章。

NAT模式和桥接模式

所谓NAT模式或者桥接模式,其实都很好理解。

假设现在有一个家庭网络A(有路由器a),一个办公网络B(有路由器b),还有外出的电脑设备x,想用一个zerotier网络C把AB能够连接起来,且A、B其中的各种设备都能相互访问。那解决办法有两个:

  • A是一个子网,比如192.168.3.1/24,B也是一个子网,比如192.168.100.1/24。C这个zerotier网络可以设成第三个独立的子网比如10.147.17.1/24,连接a/b/x,然后在a和b上分别设定NAT。a就是A和C的接口,b就是B和C的接口。所以两个路由器就分别翻译就好了。
  • 把A、B、C全部组成一个大网M,统一都设定为192.168.4.1/22,大家都在一个子网里面,没有NAT的存在,就是桥接起来。

NAT模式的操作

正常安装zerotier啥的就不说了,只说核心的设置。

  1. a/b/x正常连上zerotier网络C
  2. zerotier端,在Managed Routes里设定好规则。比如要想实现x访问A网络里的各种节点,a作为翻译官需要承担这个NAT功能。设定为Destination<192.168.3.1/24>via<a的zerotier IP地址>。这样x或者b访问A网络设备的地址请求就会发给a,由a完成翻译工作。b的设置类似。
  3. 路由器端,
    • a要给zerotier的网络新开一个interface,对应的硬件网络就是zerotier生成的网卡(应该是z打头的一串数字)。
    • 然后给它建一个防火墙区域比如叫做zerotier-zone,包含这个interface,设定它和LAN可以互访就可以了。

桥接模式的操作

这个参考的资料少,但其实更简单一些

  1. 首先规划网络。比如上面的例子,三个网络都是用192.168.4.1/22,这样他们在一个大网里。
    • 但是A,B,C都分别分配不同的IP地址段。比如A分配192.168.4.1-254,B分配192.168.5.1-254,C分配192.168.6.1-254
  2. zerotier里a和b的设定那里,都勾选Allow Ethernet Bridging,这样zerotier就知道它要把这三个网接起来
  3. 路由器端,
    • 一样设定一个新interface
    • 不用设防火墙了,直接把这个interface绑定到LAN(一般是br-lan)这个桥接接口上。

发现设备

连接到一个网络以后,会碰到一个不完美的情况,就是连接NAS和其他设备的时候,是可以通过IP地址连接上,但不会和真的在家里一样,自动显示在网络里。经过查找,发现这也是可以解决的,参考网址6/7。

问题就是mDNS在不同VLAN之间断了,解决办法就是连起来。我的OpenWRT自带了avahi-daemon,就没有安装帖子上他们提到的avahi-nodbus-daemon。

修改完设置enable-reflector,并且打开防火墙允许mDNS包(UDP packets to 224.0.0.251)。

然后电脑上就可以看到家里的NAS设备和Google Nest设备了。

参考文章

  1. 桥接参考看这个最简单
  2. Zerotier Openwrt的官方说明:
  3. 操作比较详细的三篇文章:
  4. 从这篇入门的:
  5. 这篇也有参考
  6. 请问 Zerotier 连接的两个局域网内设备如何互相投屏和网络发现?
  7. Resolving mDNS across VLANs with Avahi on OpenWRT
Zerotier连接局域网的两种方式