ZeroTier 是一个基于 UDP 的异地组网工具,支持多平台,开箱即用。首次连接时,客户端需要与转发服务器通信,建立连接后,则可以直接在两个客户端间通过 UDP 通信,流量不再需要经过转发服务器。
**需要特别说明的是,本文中提到的“异地组网”专指在两个不同区域的内网中的设备间实现互相访问,类似于蒲公英的组建异地虚拟局域网,但相对于蒲公英,ZeroTier 胜在免费、大带宽。
ZeroTier 安装和配置的教程已有很多,但使用 ZeroTier 进行异地组网的教程却非常少,因此本文就不再赘述其安装和配置的过程,主要讨论如何实现异地组网,以达到两个不同区域的内网中的设备可以互相访问的目的,网络架构如下图所示。
图中的左右两个内网均各需要一台设备始终在线,承担着流量转发的作用,以保证两个内网时刻可以互通,在图中左侧的内网(10.10.10.x)中,由一台装有 Ubuntu 系统的服务器来承担上述工作,在图中右侧的内网(192.168.31.x)中,由一台装有 openwrt 系统的二级路由来承担上述工作。
通过本文的操作,实际上可以达到的效果是,在图中右侧的内网(192.168.31.x)中的任意设备均可访问左侧的内网(10.10.10.x)中的任意设备,在图中左侧的内网(10.10.10.x)中的装有 ZeroTier 的 Ubuntu 系统的服务器可以访问图中右侧的内网(192.168.31.x)中的任意设备,如果图中左侧的内网(10.10.10.x)中的其它设备需要访问图中右侧的内网(192.168.31.x)中的设备的话,需要另装 ZeroTier 客户端(原因是图中左侧的内网(10.10.10.x)中的装有 ZeroTier 的 Ubuntu 系统的服务器并未作为内网的网关来使用),你可以把右侧的内网想象成家里的局域网,把左侧的内网想象成公司里的局域网,这样的话,回家后就可以继续加班了呢~🙄
在 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 的虚拟局域网络,可以在网络
->接口
中查看。
暂无评论内容