更新:
因直接使用 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 配置参考:
共享服务器加入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 再点启动就行:
B办公室的 openwrt 配置 zerotier
创建 zerotier 的 网络接口
创建 ZeroTier 的接口,绑定 ZeroTier 创建的虚拟网卡。具体如下面的图片。
网络—接口—添加新接口…
创建 zerotier 防火墙
先开启所有防火墙的转发:
之后添加防火墙:网络—防火墙—添加。具体配置如下图:
这里注意下,如果你的openwrt没有WAN口,则指向LAN口。
zerotier路由设置
进入 zerotier 后台的network设置,来到 Settings 中的 Advanced部分,在这里添加路由,实现各网络的内网互相连接。
具体配置如下图:
测试
B办公室openwrt下面的任意一个电脑尝试ping或直接访问共享服务器
搭建 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、待补充