前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅尝 Zerotier

浅尝 Zerotier

作者头像
ZGGSONG
发布2022-09-09 10:51:20
5K0
发布2022-09-09 10:51:20
举报
文章被收录于专栏:日志

前言

在上一篇文章中说到我已经做了frp和反向代理把内网部分端口映射到公网,也都添加了ssl证书。但是始终有一个很让人头疼的事情——我的小水管只有5M,这个限制有时候就比较头疼(应证了那句:我可以不用,但不能没有)

很早之前就了解到 Zerotier

需求:公网环境中访问内网服务

解决方案:

  • 申请公网IP+DDNS+端口映射直接访问
代码语言:txt
复制
- 优点:啥都好
- 缺点:基本申请不到frp等类似工具通过一台有公网ip的VPS转发所有的流量
代码语言:txt
复制
- 优点:基于自己的水管稳不稳
- 缺点:小水管不是速度受限就是流量限制,把内网服务映射到公网,还得添加ssl证书,不过也可以给添加泛域名证书Zerotier可以将不同设备添加到一个同一个虚拟局域网里
代码语言:txt
复制
- 优点:速度基本不受限,服务也没有映射到公网,不用每次开一个服务都需要去解析,做反向代理
- 缺点:每台设备都要装Zerotier软件

安装

记录一下,相关教程网上也很多,更多相关的资料,请登陆官方网站

官网注册

首先去官网注册登录创建一个NetWork就会得到一个Network ID,保持Access ControlPrivate

群晖端安装Zerotier

由于Synology 的 DSM 7 不允许第三方应用程序以 root 用户身份运行。所以DSM7以上的版本将只能使用docker的方式来安装zerotier

首先可以使用下面lsmod命令查看tun模块是否已载入系统,若没有则进行后面的步骤

代码语言:javascript
复制
# 检查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
  • 查看节点状态
代码语言:javascript
复制
docker exec -it zt zerotier-cli status
  • 加入您的网络
代码语言:javascript
复制
docker exec -it zt zerotier-cli join `你的NetworkID`
  • 授权网络上的 NAS 然后查看网络状态
代码语言:javascript
复制
docker exec -it zt zerotier-cli listnetworks
  • 查看节点信息
代码语言:javascript
复制
docker exec -it zt zerotier-cli listpeers

添加成功以后则要登录Zerotier控制台,即可看到网络列表多了一条未授权加入的网络,给个名字区分设备,勾选允许其加入即可

上面安装方法来自 —— 官方群晖安装Zerotier文档

windows端安装

  • 先去官网下载对应设备的Zerotier客户端
  • 不知道是不是最新版的问题,UI没有加入虚局域网的选项(2022-04-25),直接使用CMD执行命令即可,更多可查看官方文档
代码语言:javascript
复制
#查看
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安装
代码语言:javascript
复制
#下载镜像
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宿主机的目录下后重启容器即可
  1. windows添加moon节点,首先在moon服务器服务器获取moon_id,其实就是保存的moons.d目录下的文件名去除前6个0的字符串undefined也可以通过下面的命令查看moon_id
代码语言:javascript
复制
docker logs zerotier-moon

Cmd或者Terminal中输入

代码语言:javascript
复制
#添加moon节点
zerotier-cli orbit moon_id moon_id

#查看
zerotier-cli listnetpeers

总结

简单测试了一下,基本能跑满带宽,不过目前实际使用的不多,问就是隔离居家办公,后续有啥心得体会再来掰扯掰扯。

  • 4G
  • 有线连接

参考

本文作者:ZGGSONG

本文链接:https://cloud.tencent.com/developer/article/2101040

版权声明:本站所有未注明转载的文章均为原创,并采用CC BY-NV-SA 4.0授权协议,转载请注明来源

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 安装
    • 官网注册
      • 群晖端安装Zerotier
        • windows端安装
          • 其他设备安装
          • 搭建Moon节点
          • 总结
          相关产品与服务
          容器镜像服务
          容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档