爱极客专注分享-好玩的docker应用-源码分享

ZeroTier 异地组网

ZeroTier 是一个基于 UDP 的异地组网工具,支持多平台,开箱即用。首次连接时,客户端需要与转发服务器通信,建立连接后,则可以直接在两个客户端间通过 UDP 通信,流量不再需要经过转发服务器。

**需要特别说明的是,本文中提到的“异地组网”专指在两个不同区域的内网中的设备间实现互相访问,类似于蒲公英的组建异地虚拟局域网,但相对于蒲公英,ZeroTier 胜在免费、大带宽。

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 官网配置好路由表:

ZeroTier 异地组网

并将相关设备设置为Allow Ethernet Bridging

ZeroTier 异地组网

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

接下来设置从zt7u3fcxwrenp123s0f0 流量转发:

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为名称的网络接口:

ZeroTier 异地组网
ZeroTier 异地组网

创建并分配以ZeroTier为名称的防火墙区域:

ZeroTier 异地组网

配置防火墙:

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 的虚拟局域网络,可以在网络->接口中查看。

© 版权声明
THE END
喜欢就支持一下吧
点赞7赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容