放弃moon节点,直接搭建Zerotier根服务器

2021-12-09 11:08:07 150点赞 1461收藏 100评论

外网访问家庭局域网方案

随着NAS、软路由的普及,越来越多的人产生了外网访问家庭网络的需求。当前访问家庭网络的方案主要分为三类:

1.公网ip

这一类当然是最方便的,也是花费较少的方案。可以通过ip地址直接访问家庭网络,即使是变动的公网ip,也只需购买域名配置DDNS即可。但随着政策的加严,获取ipv4公网ip的渠道越来越少,之前寄托了很多希望的ipv6现在看来也存在诸多问题。

2.隧道穿透

这一类是通过一台具有公网ip的机器(通常是一台云服务器)作为中转,在这台机器与家庭局域网内的机器建立隧道,借由公网下的服务器作为跳板访问家庭网络。这一类服务有自建的,如Frp、NPS等,也有商家提供服务的,如SakuraFrp、DDNSTO等。

3.虚拟局域网

这一类更适合私人或小团体使用,其原理是建立一个虚拟的广域网,并为加入这个虚拟网络的设备分配一个虚拟的ip,并在这个广域网内通过虚拟ip互访。最知名的代表就是Zerotier,也是我今天所要介绍的

Zerotier的优缺点

通俗来讲就是 Peer to Peer (P2P) ,ZeroTier 根服务器记录请求路径来做类似于DNS的解析。主要功能,就是可以把多个不同网络的设备连接在一起,用来就像在一个局域网下 。

Zerotier的优点在于其部署十分简便,只需在zerotier官网注册登陆并创建网络,在自己的设备安装客户端加入网络后,zerotier就会自动分配虚拟ip,无需了解ip、端口等配置。

但很可惜,zerotier的根服务器都在国外,我们到zerotier服务器需要经过层层的NAT中转,这导致我们通过zerotier网络互访时不仅存在较大的延迟,而且在网络高峰段非常容易断连。

在之前,对于这种情况,我们的解决方案是在国内的服务器上搭建一个zerotier的moon中转节点,作为zerotier根服务器的代理加速,但加速效果有好有坏(有的人说速度很快,但我的中转就很慢),而且这种方式的一个问题就是,安卓端的手机无法加入moon节点。这个问题很快就被解决了,kaaass大佬做了一个ZerotierFix的app,相比于官方增加了可以加入moon节点的功能。

Zerotier-planet

虽然大佬的app解决了安卓客户端不能加入moon节点的问题,但moon节点的搭建以及客户端的配置仍然不是一个比较简单的过程,又要配置服务器端又要配置客户端,zerotier便捷性的优点就体现不出来了。

前段时间,小众软件推荐的一分钟自建 zerotier-planet 行星服务器吸引了我,简单浏览了一下,发现过程是真的很简单。jonnyan404大佬的这个项目是基于另一个项目ztncui优化而来,简单而言就是用docker部署一个独立的zerotier虚拟网络。部署这个项目的全部准备只有在你的公网服务器上安装好docker和docker-compose。

jonnyan404大佬已经写好了zerotier-planet的docker配置脚本,我们只需登陆服务器执行以下几个命令

1. 从gitee仓库下载docker配置文件

git clone https://gitee.com/Jonnyan404/zerotier-planet

2. 进入下载的项目文件夹

cd zerotier-planet

3. docker安装zerotier-planet,如果服务器是Ubuntu系统,记得命令前加上 sudo

docker-compose up -d

4. 然后就可以访问 http://ip:4000 访问web界面了(记得防火墙开放4000端口)

默认用户名:admin 默认密码:mrdoc.fun

建议登陆后立即创建新用户,并切换到新用户登陆,删除默认的admin账户,以保证安全

接下来的操作与官方版的zerotier没有太大区别了,这里新建一个虚拟网络test,ID是

119c41e47a8a0433

zerotier-planetzerotier-planet

Private: 设置对设备的访问控制权,默认勾选上

PrivatePrivate

Easy setup: 设置虚拟广域网段,可以自己设置

Easy setupEasy setup

Routes: 设置路由,一般就只有一个默认的路由(也就是刚刚设置的网段),稍后介绍它的扩展用法

RoutesRoutes

Assignment Pools: ip地址分配,你可以指定该网段下虚拟ip可供分配的范围

Assignment PoolsAssignment Pools

接下来,只要在自己的设备上安装zerotier的客户端,然后通过ID加入网络,就可以在该页面刷新出设备列表了,为新设备勾选Authorized即可分配虚拟的ip地址了。

ip分配ip分配

基于zerotier网络可以实现许多功能,例如windows端的远程桌面连接,ssh连接linux服务器,访问个人服务器上的博客

应用扩展-允许openwrt客户端自动NAT

尽管zerotier已经支持相当多的平台了,但仍有一些设备不受支持,比如我升级到DSM 7.0的小猫盘。为了让这些无法安装zerotier客户端的设备也加入到这个虚拟网络中,我们需要一个支持zerotier的openwrt路由器。以我的R2S为例

zerotier设置

1. 首先将R2S也加入虚拟网络,在openwrt后台管理中填入虚拟网络ID,并允许客户端NAT。

R2S-OpenwrtR2S-Openwrt

2. 设置虚拟网络路由

R2S-虚拟ipR2S-虚拟ip

我的R2S分到的虚拟ip为10.81.33.114,在Routes我们再新建一个路由

新建路由新建路由

我这里已经设置过了,Target应根据路由器的网段来决定,比如我的R2S局域网访问地址为192.168.2.1,则Target则应填192.168.2.0/24Gateway则填R2S分配到的虚拟ip,这里是10.81.33.114

openwrt设置

除了zerotier上的设置,还要对openwrt进行设置,使得流量可以通过虚拟广域网传播

新建zerotier接口新建zerotier接口

我们在openwrt 网络>接口 里新增一个zerotier接口,系统会为其分配一个zt开头的物理接口,我的是zt6xtbbu66。对该接口进行设置,传输协议选择静态地址ipv4地址填分配的虚拟ip,ipv4子网掩码是默认的225.225.225.0,在防火墙设置创建/分配防火墙区域选择lan

接着在 网络>防火墙 里自定义防火墙规则,增加以下规则

iptables -I FORWARD -i zt6xtbbu66 -j ACCEPT

iptables -I FORWARD -o zt6xtbbu66 -j ACCEPT

iptables -t nat -I POSTROUTING -o zt6xtbbu66 -j MASQUERADE

记得将zt6xtbbu66换成你自己对应的物理接口,重启防火墙

测试

这个时候,R2S下的设备应当已经加入zerotier广域网了,以我的小猫盘为例,在局域网下它的访问地址为192.168.2.147:5000,在安卓手机上通过ZerotierOne连接zerotier广域网,并断开WiFi,在浏览器中访问192.168.2.147:5000

小猫盘小猫盘

访问成功,表明小猫盘已经通过R2S接入到局域网了

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
100评论

  • 精彩
  • 最新
  • 牵扯到公网就怕查水表。只要域名解析到群晖,不出半个月就收到北京电信提示短信,主旨就是非法使用网络,尽快整改,否则……怕了,搞的我还剩7年的域名不敢用

    校验提示文案

    提交
    因为国家禁止利用家庭宽带搭建网站

    校验提示文案

    提交
    买国外的域名解析就行了

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 请问终端之间的访问流量需要经过zerotier-planet中转吗?

    校验提示文案

    提交
    不用,zerotier的连接是一种P2P的形式,根服务器在其中的作用主要是作为DNS服务器进行路径解析

    校验提示文案

    提交
    兄弟,不能一概而论啊,首先要搞清楚网络结构,如果要穿透的两边Symetric NAT对称型NAT的话,那么几乎100%就是靠行星服务器转发两端的流量,Symetric NAT几乎是没有办法实现点对点内网穿透的,其他另外三种nat网络还有可能 [狂汗]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 我之前是用moon的,退出moon后,现在按lz你的方法搭建后,listpeers显示我的vpn是leaf而不是planet

    校验提示文案

    提交
    能跟我讲下listpeers是什么吗?怎么用的?我只是拿别人的项目来用,但很多东西其实也不是很懂

    校验提示文案

    提交
    就是字面上的意思 列出所有的peers出来 然后显示的planet并没有自建的那个 你可以输入管理员运行cmd看看zerotier-cli listpeers是否有你自建的服务器在

    校验提示文案

    提交
    收起所有回复
  • 群晖可以这样搭建Zerotier-planet吗?

    校验提示文案

    提交
    可以,这个项目是基于docker的,只要你有公网IP并且你的群晖支持docker就行

    校验提示文案

    提交
    用这个的原因就是因为没有公网IP,有公网IP谁还用这些呢?

    校验提示文案

    提交
    还有6条回复
    收起所有回复
  • 那这个zerotier-planet,在移动端是不是就不需要使用zerotierfix app了?直接用官网的app就可以了?

    校验提示文案

    提交
    没错,可以用zerotierone直连

    校验提示文案

    提交
    手机客户端不需要额外设置吗?

    校验提示文案

    提交
    收起所有回复
  • 动态公网ip可以吗

    校验提示文案

    提交
    动态公网IP按理说应该也可以,但动态IP用ddns应该更方便些吧

    校验提示文案

    提交
    收起所有回复
  • 这个不用公网吗。

    校验提示文案

    提交
    需要的,所有的内网穿透都必须有一台具有公网IP的机器提供服务

    校验提示文案

    提交
    收起所有回复
  • 无公网,如何穿透 [黑线] [尴尬]

    校验提示文案

    提交
    折腾了很多,目前看来最靠谱的是上闲鱼找个靠谱的卖家,租他们的frp服务

    校验提示文案

    提交
    收起所有回复
  • 其实还是需要一个有ipv4公网的设备,不管是某个家庭宽带里的nas还是服务器。咳….这纯ipv6和v4不能无缝互访,这真是人类进步史的一个巨大障碍….

    校验提示文案

    提交
    我提供了一个基于zerotier开源软件二次开发的国内根服务器,使用腾讯云100M带宽服务器,提供固定公网ipv6地址分配,欢迎大家下载使用,下载地址去看看

    校验提示文案

    提交
    收起所有回复
  • 你这并不是搭建planet服务器,只是搭了个控制器,连的还是官方的planet服务器,唯一的作用就是解除网络数量限制而已,没一点用

    校验提示文案

    提交
    请问您有没有方式能加速握手呢?我自己搞moon节点总不成功

    校验提示文案

    提交
    是的 显示该节点还是一个leaf 而且速度也跟之前一样差丢包严重,除非打通直连

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • tailscale感觉更方便好用

    校验提示文案

    提交
  • 这只是一个面板可以解除50设备的限制和优化手机连接,不能提升中转速度, 想要VPS中转提速可以看看这篇文章去看看

    校验提示文案

    提交
    现在有用了,官方免费限制25台设备终端了,破解数量也有用了。没想到啊。

    校验提示文案

    提交
    收起所有回复
  • 昨天刚好实践完成,配合zoneminder完成可视频监控远程查看。

    校验提示文案

    提交
    zoneminder的安装教程有么?

    校验提示文案

    提交

    校验提示文案

    提交
    收起所有回复
  • iOS 还是无解啊

    校验提示文案

    提交
    iOS没有zerotier客户端嘛?

    校验提示文案

    提交
    有,改app store国外区

    校验提示文案

    提交
    收起所有回复
  • 请问我客户端怎么知道去连我这个公网的服务器而不是zerotier自己的官网呢?

    校验提示文案

    提交
    需要去官方注册同步一次数据的,但是不需要官方的根服务规划路由表啦

    校验提示文案

    提交
    收起所有回复
  • [得意] 看了下文章,真的很赞,正好解决目前用国外版zerotier的痛点,已关注希望多出好文章。

    校验提示文案

    提交
  • 还是要有一个VPS啊 [皱眉] [皱眉] ,腾讯云之类便宜的VPS带宽都太小了,看不了电影啥的

    校验提示文案

    提交
    vps只做寻路使用,只要有公网能够访问就可以了,一旦寻路成功就是p2p直连了。直连以后就看你这边服务器的上行速度了。

    校验提示文案

    提交
    收起所有回复
  • 同类产品,不过我用的是tailscale,下载后用微软账号登陆一下就ok了,感觉更简单一点。

    校验提示文案

    提交
  • 都这么搞了,frp不更方便

    校验提示文案

    提交
  • 看起来就是一个可视化的moon的作用?planet也不是根,而是在根上注册的分支,不然你的ID是识别不了的。my.zerotier.com背后才是根

    校验提示文案

    提交
    plant上面还有star,star上面还有galaxy(♡ ὅ ◡ ὅ )ʃ♡

    校验提示文案

    提交
    感觉moon就够了,用了半年,挻稳定的,moon点是用过墙梯vps做的

    校验提示文案

    提交
    还有1条回复
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1.4K
扫一下,分享更方便,购买更轻松