前言
在上一篇文章中说到我已经做了frp和反向代理把内网部分端口映射到公网,也都添加了ssl证书。但是始终有一个很让人头疼的事情——我的小水管只有5M,这个限制有时候就比较头疼(应证了那句:我可以不用,但不能没有)
很早之前就了解到 Zerotier
需求:公网环境中访问内网服务
解决方案:
- 申请公网IP DDNS 端口映射直接访问
- 优点:啥都好
- 缺点:基本申请不到frp等类似工具通过一台有公网ip的VPS转发所有的流量
代码语言:txt复制- 优点:基于自己的水管稳不稳
- 缺点:小水管不是速度受限就是流量限制,把内网服务映射到公网,还得添加ssl证书,不过也可以给添加泛域名证书Zerotier可以将不同设备添加到一个同一个虚拟局域网里
代码语言:txt复制- 优点:速度基本不受限,服务也没有映射到公网,不用每次开一个服务都需要去解析,做反向代理
- 缺点:每台设备都要装Zerotier软件
安装
记录一下,相关教程网上也很多,更多相关的资料,请登陆官方网站
官网注册
首先去官网注册登录创建一个NetWork
就会得到一个Network ID
,保持Access Control
为Private
群晖端安装Zerotier
由于Synology 的 DSM 7 不允许第三方应用程序以 root 用户身份运行。所以DSM7以上的版本将只能使用docker的方式来安装zerotier
首先可以使用下面lsmod
命令查看tun
模块是否已载入系统,若没有则进行后面的步骤
# 检查tun.ko是否存在
lsmod | grep tun
代码语言:javascript复制ssh username@nas-ip
sudo -i
# 创建一个 /usr/local/etc/rc.d/tun.sh 脚本 到 /dev/net/tun 目录下:
echo -e '#!/bin/sh -e ninsmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh
# 给tun脚本可执行权限
chmod x /usr/local/etc/rc.d/tun.sh
# 执行
/usr/local/etc/rc.d/tun.sh
# 检查一下 TUN
ls /dev/net/tun
/dev/net/tun
系统加载TUN模块以后
安装镜像创建容器,就直接在终端进行了
代码语言:javascript复制# 创建宿主机目录
mkdir /volume1/docker/zerotier-one
# 下载 zerotier/zerotier-synology 最新镜像
docker pull zerotier/zerotier-synology:latest
# 创建 zerotier/zerotier-synology 容器
docker run -d
--name zt
--restart=always
--device=/dev/net/tun
--net=host
--cap-add=NET_ADMIN
--cap-add=SYS_ADMIN
-v /volume1/docker/zerotier-one:/var/lib/zerotier-one zerotier/zerotier-synology:latest
- 查看节点状态
docker exec -it zt zerotier-cli status
- 加入您的网络
docker exec -it zt zerotier-cli join `你的NetworkID`
- 授权网络上的 NAS 然后查看网络状态
docker exec -it zt zerotier-cli listnetworks
- 查看节点信息
docker exec -it zt zerotier-cli listpeers
添加成功以后则要登录Zerotier控制台,即可看到网络列表多了一条未授权加入的网络,给个名字区分设备,勾选允许其加入即可
上面安装方法来自 —— 官方群晖安装Zerotier文档
windows端安装
- 先去官网下载对应设备的Zerotier客户端
- 不知道是不是最新版的问题,UI没有加入虚局域网的选项(2022-04-25),直接使用
CMD
执行命令即可,更多可查看官方文档:
#查看
zerotier-cli status
#加入虚拟局域网
zerotier-cli jion `你的NetworkID`
#查看网络状态
zerotier-cli listnetworks
完成以上步骤后,需登录Zerotier控制台,允许设备加入
至此,windows就可以通过Zerotier控制台中群晖设备的虚拟局域网IP访问群晖设备。
其他设备安装
- 其他设备可去官网下载 Zerotier下载
- 添加虚拟局域网ID
- 控制台允许
搭建Moon节点
Zerotier Moon的目的是加速Zerotier的连接,让虚拟网络更稳定的运行,主要是为了加速连接,SMZDM有介绍: 如果设备间桥接网络延迟超过30ms且时断时续就表示设备间之间的P2P隧道没有打通,一般移动网络与电信或者联通之间使用UDP穿透会失败。这时候就需要自建Moon节点进行中专加速。
先看下有无moon节点的前后延迟对比
- 我是选择我的国内小水管,同样是选择docker安装
#下载镜像
docker pull jonnyan404/zerotier-moon
#创建宿主机目录
mkdir -p /opt/docker/zerotier-moon
#创建容器(最后为云主机的公网IP,同时开放9993端口)
docker run --name zerotier-moon -d --restart always -p 9993:9993 -p 9993:9993/udp -v /opt/docker/zerotier-moon:/var/lib/zerotier-one jonnyan404/zerotier-moon -4 47.98.103.241
- 随后在
/opt/docker/zerotier-moon
目录下将moons.d
下载下来保存 - 最后在群晖和Windows上分别添加moon节点
- 群晖上比较简单:将保存的
moons.d
目录放到群晖Zerotier宿主机的目录下后重启容器即可
- windows添加moon节点,首先在moon服务器服务器获取
moon_id
,其实就是保存的moons.d
目录下的文件名去除前6个0的字符串undefined也可以通过下面的命令查看moon_id
docker logs zerotier-moon
Cmd或者Terminal中输入
代码语言:javascript复制#添加moon节点
zerotier-cli orbit moon_id moon_id
#查看
zerotier-cli listnetpeers
总结
简单测试了一下,基本能跑满带宽,不过目前实际使用的不多,问就是隔离居家办公,后续有啥心得体会再来掰扯掰扯。
- 4G
- 有线连接
参考
- 轻松实现无公网IP高速远程访问NAS!zerotier从原理到实践
- 黑群晖(DSM7)使用docker挂载zerotier one实现内网穿透
- docker一键搭建zerotier-moon节点
- 远程办公:ZeroTier异地组网及私有Moon转发节点搭建
本文作者:ZGGSONG
本文链接:https://cloud.tencent.com/developer/article/2101040
版权声明:本站所有未注明转载的文章均为原创,并采用CC BY-NV-SA 4.0授权协议,转载请注明来源