ZeroTier 是一个基于 UDP 的异地组网工具,支持多平台,开箱即用。首次连接时,客户端需要与转发服务器通信,建立连接后,则可以直接在两个客户端间通过 UDP 通信,流量不再需要经过转发服务器。
ZeroTier 安装和配置的教程已有很多,但使用 ZeroTier 进行异地组网的教程却非常少,因此本文就不再赘述其安装和配置的过程,主要讨论如何实现异地组网,以达到两个不同区域的内网中的设备可以互相访问的目的,网络架构如下图所示。
图中的左右两个内网均各需要一台设备始终在线,承担着流量转发的作用,以保证两个内网时刻可以互通,在图中左侧的内网(10.10.10.x)中,由一台装有 Ubuntu 系统的服务器来承担上述工作,在图中右侧的内网(192.168.31.x)中,由一台装有 OpenWrt 系统的二级路由来承担上述工作。
在 Ubuntu 和 OpenWrt 中安装好 ZeroTier 后,我们就可以进行异地组网啦!
那么,我们开始吧!
01 配置路由表等
首先,在 ZeroTier 官网配置好路由表:
并将相关设备设置为Allow Ethernet Bridging
:
02 Ubuntu 系统下的配置
开启内核转发:
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sudo sysctl -p
查看网口信息:
ifconfig
根据 IP 地址可以看出,在 Ubuntu 上enp123s0f0
用来接入真实物理网络,zt7u3fcxwr
用来接入 ZeroTier 的虚拟局域网络,一定要注意后续命令中使用的网口名称噢~
使用 iptables
启用 enp123s0f0
的网络地址转换和 IP 伪装:
sudo iptables -t nat -A POSTROUTING -o enp123s0f0 -j MASQUERADE
允许流量转发和跟踪活动连接:
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
接下来设置从zt7u3fcxwr
到 enp123s0f0
流量转发:
sudo iptables -A FORWARD -i zt7u3fcxwr -o enp123s0f0 -j ACCEPT
由于 iptables 规则在重新启动后就会失效,需要将上面设置保存为配置文件。安装 iptables 配置存储工具:
sudo apt-get install iptables-persistent
保存 iptables 配置到文件:
sudo netfilter-persistent save
sudo iptables-save
这样的话, iptables 配置文件会被保存在 /etc/iptables/
路径下,重启就不会再丢失配置啦。
03 OpenWrt 系统下的配置
设置并启用插件:
添加以ZeroTier
为名称的网络接口:
创建并分配以ZeroTier
为名称的防火墙区域:
配置防火墙:
一般来说,这样就可以啦!
如果还是不行的话,可以去网络
->防火墙
->自定义规则
里添加如下规则:
iptables -I FORWARD -i zt2lrwm2qj -j ACCEPT
iptables -I FORWARD -o zt2lrwm2qj -j ACCEPT
iptables -t nat -I POSTROUTING -o zt2lrwm2qj -j MASQUERADE
其中,与上节相同,zt2lrwm2qj
为用来接入 ZeroTier 的虚拟局域网络,可以在网络
->接口
中查看。