利用zerotier将多个外网组成局域网

本文最后更新于 2021年9月30日 17:58 可能会因为没有更新而失效。如已失效或需要修正,请留言

更新:

因直接使用 zerotier 的节点,有时候速度会比较慢,故增加 moon 节点。

刚好 2021.8.23 阿里云做新用户活动,用 60元/年 拿下了 2核2G 5M 的深圳服务器(后面3年每年续费99元),这不就是专门用来做 moon 的么!

前提:

公司拆分成2个办公室,网络分开了,原来一起用的共享服务器就只能放在其中一边。

如何能让另外一个办公室的同事访问共享服务器呢?一般来说就是用VPN的方式了,利用VPN将多个外网连在一起,形成局域网,这样资源就能互相共享了。

还没来得及用传统的openvpn,zerotier就来到了我面前。我试用了一下,感觉非常易用,这就将它部署起来试用了。

环境:

A办公室,用的软路由(爱快+openwrt),有windows共享服务器

B办公室,用的软路由(爱快+openwrt)

目标:

B办公室访问A办公室的共享服务器

思路:

1、共享服务器直接在本机安装 zerotier 客户端,利用 NETWORK ID 加入局域网;

2、B办公室在openwrt上面运行 zerotier 客户端加入局域网,之后该 openwrt 下面的客户端都能直接访问A办公室的共享服务器。

 

下面是实操部分。

因为网上的教程很多了,这里只讲核心部分。

 

创建zerotier账号并建立network

访问 https://zerotier.com/ 进行注册,注册完点击 Create A Network。

Network 配置参考:

Zerotier

Zerotier

共享服务器加入network

打开 官方下载页面 下载windows客户端(需要.net 4.5)

安装很简单,装完在开始菜单找到 zerotier,打开后输入 NETWORK ID  加入局域网。

 

B办公室的 openwrt 安装 zerotier

现在很多 openwrt 都自带了 zerotier,自行安装也非常简单,安装过程就不细说了。

opkg update
opkg install zerotier

安装完成后,编辑配置文件

vi /etc/config/zerotier

需要修改的地方只有两处:

1、option enabled 0 将 0 改为 1;

2、list join '8056c2e21c000001' 改为自己的 NETWORK ID

之后启动:

/etc/init.d/zerotier start

查看网络:

zerotier-cli listnetworks

如果你的openwrt自带了 zerotier,那么就更简单了,直接输入 NETWORK ID 再点启动就行:

Zerotier

B办公室的 openwrt 配置 zerotier

创建 zerotier 的 网络接口

创建 ZeroTier 的接口,绑定 ZeroTier 创建的虚拟网卡。具体如下面的图片。

网络—接口—添加新接口…

Zerotier

Zerotier

创建 zerotier 防火墙

先开启所有防火墙的转发:

zerotier

之后添加防火墙:网络—防火墙—添加。具体配置如下图:

Zerotier

Zerotier

这里注意下,如果你的openwrt没有WAN口,则指向LAN口。

zerotier路由设置

进入 zerotier 后台的network设置,来到 Settings 中的 Advanced部分,在这里添加路由,实现各网络的内网互相连接。

具体配置如下图:

Zerotier

测试

B办公室openwrt下面的任意一个电脑尝试ping或直接访问共享服务器

Zerotier

 

搭建 moon 节点

moon 节点配置:阿里云轻量 2核 2G 5M 深圳(本地到该服务器延时 5-6ms)

要使用 moon 加速的包含:路由器端openwrt 以及所有需要加速的 zerotier 客户端

VPS安装 zerotier

curl -s https://install.zerotier.com/ | sudo bash

安装完成后,记录下获得的网络ID,后面需要用到。

加入 network

zerotier-cli join 网络ID

执行命令后,到网页后台允许加入,做好标记等等。

生成 moon 配置文件

cd /var/lib/zerotier-one/
zerotier-idtool initmoon identity.public > moon.json

编辑 moon 配置文件

nano /var/lib/zerotier-one/moon.json

替换id、增加公网IP及zerotier默认端口

"id": "325664****", id 替换为你安装完之后分配的网络ID

"stableEndpoints": ["替换为你的公网IP/9993"]

生成 moon 文件

zerotier-idtool genmoon moon.json

移动 moon 文件到 moons.d 文件夹

mkdir moons.d
mv 000000325664****.moon moons.d/

重启 zerotier,让 moon 生效

systemctl restart zerotier-one.service

据说最好要重启 vps

这样,一个 moon 节点就搭建好了。将刚才生成的 moon 文件(000000325664****.moon)下载到本地。

下面就让客户端使用 moon 节点来加速。

其他客户端使用 moon 加速

我使用的客户端,主要是 openwrt 、Windows,这里重点说。

openwrt 加入 moon

加入的方法,其实就是将 moon 文件放到指定的位置,然后重启 zerotier 即可。但 openwrt 里配置所在的位置一旦重启数据就会重置,所以我们要在 zerotier 的执行脚本做一些修改。

具体操作:

1、在 openwrt 的网页端,上传 moon 文件(会上传到 /tmp/upload )

2、在 root文件夹 创建存放 moon 文件的文件夹:

mkdir -p /root/moons.d

3、将 moon 文件 复制到 moons.d 文件夹

cp /tmp/upload/000000325664****.moon /root/moons.d/

4、编辑 zerotier 执行文件

nano /etc/init.d/zerotier

在 add_join() { 前插入2行代码:

if [ -n "$secret" ]; then
        echo "$secret" > $CONFIG_PATH/identity.secret
        # make sure there is not previous identity.public
        rm -f $CONFIG_PATH/identity.public
fi

mkdir -p $CONFIG_PATH/moons.d  
cp /root/moons.d/* $CONFIG_PATH/moons.d/

add_join() {
        # an (empty) config file will cause ZT to join a network
        touch $CONFIG_PATH/networks.d/$1.conf
}

增加之后保存,重启 zerotier:

/etc/init.d/zerotier restart

查看 是否加入 moon:

zerotier-cli listpeers

如显示的结果中,有 moon 出现,即表示成功加入 moon 节点。

Windows 加入 moon 节点

在 C:\ProgramData\ZeroTier\One 文件夹下新建 moons.d 文件夹,将 moon 文件放入。

在 服务 里找到 zerotier的服务项 ZeroTier One,选择重启。这样 Windows 的 zerotier客户端就加入 moon 了。

查看是否加入 moon:

用管理员模式的命令提示符 CMD 进入到 C:\ProgramData\ZeroTier\One 执行:

zerotier-one_x64.exe -q listpeers

所示结果如有 moon 字样,即表示成功加入 moon。

 

Zerotier使用的一些经验

1、在使用路由功能的时候,加入网络的各个设备或者节点,它们的内网IP段最好是不同的,不然容易导致路由错误;

2、openwrt中的 “”功能,可以让其他zerotier用户访问openwrt下面的客户端;

3、如果加入网络后出错,或者总是获取不到IP,可以先停止zerotier,然后删除 /var/lib/zerotier-one/identity.*下面的文件,再重启zerotier再次加入网络;

4、待补充

 

打赏
欢迎转载,请注明出处:轻时代 » 利用zerotier将多个外网组成局域网

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

打赏一下作者,鼓励他发表更多的精彩文章

支付宝扫一扫打赏

微信扫一扫打赏