原文链接:https://www.jianshu.com/p/77abb0a64a82
内网设备<——>中转服务器<———>网络设备(手机、电脑)
弊端:
1.中转服务器需要一定的费用进行支撑,如果是外网的服务器还可能存在被墙的风险。
2.中转服务器直接决定了中转的“速度”,而这个“速度”越快其对应的服务器带宽就越大,通常来说价格也就越高。
3.需要一定的知识储备来搭建内网穿透的服务端,虽然目前由于各种脚本的出现,门槛越来越低,但同时也会出现各种各样的问题,对于某些人来说解决起来较为繁琐、头疼。(比如我~hh)
内网设备<——>移动、PC设备(手机、电脑)
通常情况下是端到端的传输,如果网络环境差的话也会借助中转服务器进行传输数据。
优势:
1.操作极其简单,大体可以分为:
创建账号—>创建访问密钥——>需要互通的设备安装zerotier客户端——>输入刚刚创建的访问密钥——>结束
2.正常情况下不依赖服务器进行中转传输文件,端到端连接,理论可以达到满带宽。
3.个人使用可以不需要额外的服务器费用开支,免费版本下可以支持一百个设备(不同或者相同网络环境)同时连入软件所创建的虚拟局域网,从而实现局域网内各个设备之间的无限制的访问。
要想外网/公网上访问家里的群晖,大致方案有两个:一个是动态域名+公网IP+端口映射。相关文章也很多,限于本文主题就不涉及了。另一个就是内网穿透了,网上常见的方案有很多,比如frp,ngrok,n2n等等,说实话都是没听过的名字(虽然算是相关专业从业人员,但也是很久没有折腾各种黑科技了)。
由于之前有使用hamachi的经验,所以第一个念头就是使用hamachi,搜了一圈发现这个软件已经淡出市场了,而且好像还在墙外,于是就放弃了,不禁还有些唏嘘。搜索新近的方案,如上述那些一看到要搭建各种服务器就本能的孩怕,没有去仔细研究了。
内心还是倾向于找类似hamachi的方案。也就是点对点,只用安装客户端,就可以秒互联。因为我的主要需求是自己在外面拿个手机连自己家里的群晖,也不用对大众提供服务,所以这种点对点的方式最适合我。更重要的,我也并不希望家里的机器暴露在公网上,而基于的方案恰好能提供这方面的安全性。这么一来就选中了ZeroTier。
ZeroTier One的原理跟hamachi基本一样,就是虚拟出一块网卡,连上一个虚拟网络,安装了ZeroTier One客户端的设备可以连入这个网络,经过授权连接成功之后彼此都在同一网段,可以像在局域网一样互相访问,例如访问共享文件夹,web server,ftp server,联机游戏(例如打星际),当然也就包括访问群晖。所以如果你的群晖和你的手机连上了这个网络,不论两台设备具体在哪里,都像同一局域网内,从而实现内网穿透,达到从外网访问内网群晖的目的。
主机1可以是群晖主机,主机2可以是手机或平板。只要主机1和主机2都能连到互联网,安装上ZeroTier One的客户端后,就会在本机虚拟出一块网卡,并获得对应IP,图例中是172.28.x.x网段。经过网络所有人授权后(后面会详细讲解),这两个主机就可以通过172.28.x.x网段互相访问了,由于就像在局域网一样,所以基本没有任何限制,任何基于TCP/IP的网络服务都可以访问到,自然也就可以访问到群晖了。
注:图中省掉了公网IP,因为公网IP多少不重要,只要主机能上公网,能连上ZeroTier,就能获得172网段IP了,也就可以互联互通了。
相比其他流行方案,ZeroTier One有这么几个优势:
免费版支持客户端多。连入同一个网络的客户端不超过100个就都免费
速度快,p2p模式。客户端联通之后流量基本不经过服务端/superNode而是点对点传输,传输速度取决于你设备所在宽带上行带宽以及手机端4g上网的速度
管理配置简单。不要被全英文的界面吓到,明白原理之后安装配置极其简单
最重要的是支持多种平台。支持win、mac、安卓、苹果,以及多种发型版Linux,比如群晖系统(这也是选择ZeroTier One的重要原因),如下图,可以下载spk文件直接在群晖中部署(这里有一个大坑,后面会说到)
前文提到安装好ZeroTier One后会虚拟出一块网卡,得到一个虚拟网络网段IP,那么如何让两台或者多台客户端连入同一虚拟网络呢,这就需要先申请一个虚拟网络了。事实上申请这个网络先于安装ZeroTier One的客户端,这是和hamachi不同的地方。
你需要在ZeroTier One网站注册一个账号,注册了账号即可获得这个虚拟网络,然后在网站的网页上即可管理访问权限,许可那些客户端可以访问你的虚拟网络。
由于ZeroTier 网站做的实在不太友好,尤其对英文不太好的同学来说简直就是灾难,所以这个部分会讲解的比较详细。不求甚解的话照做即可,不用去管网站上大量的英文说明信息。
首先访问ZeroTier网站 ,如果你是百度搜ZeroTier,首先会访问到这里。是不是找不到创建账号的地方?然后往下拉就会越看越犯怵。不用看了,直接点击右上login,或者访问这里
此时就会出现登录/注册页面,点击Create An Account(为了写这篇文章我创建了一个新的账号),到如下注册页面,填入邮箱,密码。点击创建账户(Create An Account按钮)。
之后会进入下图所示页面。什么都不用改,重点的两个信息我圈出来了:一个是你的内部ID(Internal ID,此例中是 f7578543-394a-489a-a7be-ef08d1850b75,基本用不到;另一个就是下面订阅选项,默认免费(Free)即可。免费的最多支持100个客户端,应该够用了。
接下来直接点击最上面菜单中的Network,然后点击Create,即可创建前述之虚拟网络——也就是一串id号
所谓ZeroTier网络/虚拟网络,就是后面你的群晖以及手机等设备要连入的虚拟网络。连到同一个网络的客户端互相可以直接访问。这一串数字id就是这个网络的本体,上面那个furious_rosenbaum是随机生成的网络名,用来描述网络,当你有多个网络的时候方便记忆和识别。
注:上图中右侧蓝色的数字即表示当前连入这个网络的客户端数量。新建网络没有客户端连接,所以是零。
点击My Networks,进入如下页面
理论上这里也是不用修改任何地方,几处重点信息也圈出来了:
网络id就是这个网络的唯一标识,后面客户端要加入网络时就是填入这个id号;
访问控制(Access Control)默认私有,也就是需要授权才能访问(后面客户端安装配置的部分会讲);
IP自动分配,也就是只要连入这个网络的客户端,自动获得此网段IP。
此页面也是管理和监控页面,也就是后面添加或删除客户端,控制那些客户端能加入此网络都可以在此处完成。任何可以联网的设备只要有用户名和密码即可登录ZeroTier One,然后进入此页面对网络进行管理,比如手机,平板,从任何位置都可以访问管理。
注:所谓“客户端”即安装了ZeroTier One客户端软件的设备。本文到目前为止还没有涉及到客户端安装,也就是说,创建自己的帐号/创建虚拟网络不依赖于具体客户端设备或软件安装,以及之后的权限管理也都不涉及特定客户端,任何一个可以联网的系统都可以操作。这个在你实际使用之后会发现非常有用且方便
将页面拉到下面,圈出的部分便是监控和管理的主要操作区域。当前没有客户端连接的时候如下图
详细解释如下,因为刚刚创建网络还没有客户端加入,所以显示“No devices have joined this network",当有客户端加入之后便会在此处看到状态,离线,在线,离线时间等等;后面Manually Add Member就是加入其他成员,也就是一开始注册账号时,你得到的那个内部ID可以用来加入其他人创建的网络,或者邀请其他人加入你的网络。其他的部分都可以忽略掉,不用看,没用,越看越晕。
注:ZeroTier的世界主要有两个概念,一个是用户一个是网络,都是一串数字表示。一个用户可以加入多个网络,多个用户可以加入一个网络。在本文应用实例中,是只有一个人一个网络,所有的设备都是我用自己账号登录ZeroTier后加入自己的网络而连接在一起的。
为了演示方便我先在PC电脑上下载ZeroTier的windows客户端安装,然后加入上面创建的网络。
回到ZeroTier网站顶端,点击最上面菜单第一项Download,进入下载页面
找到windows客户端下载,点击ZeroTier One.msi下载安装文件到本地。大约12M
一路按默认设定安装即可(我只好又装了一遍)
安装软件的过程可以看做往系统插了一张新网卡,并把网卡连了一根网线,此网线通往ZeroTier的专有网络,逻辑上独立于你当前局域网之外。如果弹出如下窗口,点击是。
然后查看系统设备会看到新出现的虚拟网卡ZeroTier One Virtual Port
安装好后,从菜单运行,不会出主程序窗口,而是在任务栏出现ZeroTier One的小图标,右键点击会出现弹出菜单,在此处点击Join Network...加入刚刚申请的网络
注:因为我这台Windows主机已经安装过ZeroTier One,所以已已经有节点信息,和曾经加入的网络(id号),为了安全起见就涂抹掉了(我尝试过卸载重装还是会有这些信息,暂时不管了),但不影响你加入新的网络。在此例中就是新申请的网络 1d7193******63d387
点击 Join Network...会弹出一个小窗,填入新申请这个网络id号,再点击Join即可
重点来了,此时回到页面 刷新一下(或者直接从客户端系统栏图标上右键点出菜单,点击"ZeroTier Central"进入此页面),将页面拉下来,此时就会看之前No Devices have joined this network的地方出现这个客户端,显示online
但是别急,此时客户端并未连上这个虚拟网络,需要进一步授权。在此管理页面勾选前面的复选框(auth?列),此时这个客户端就终于连上这个网络了。
可以看到,勾选之后,左侧虚线变成了绿色实线,表示客户端已经连上这个网络(1d7193******63d387)。另外客户端在此虚拟网络中的IP也已经得到,为10.147.18.99。中间short name和description的部分,我也填入了相应短名称和描述,这样方便在多个客户端连入后,明确知道各个客户端分别是什么。这个很有用,整个ZeroTier世界里面全是数字,就靠这个描述和名称来标识各个客户端了。
在网页端授权之后,用ipconfig查看一下,这个IP就是网页上那个IP。
方法:win+r,输入cmd,出现命令行终端,打“ipconfig"回车即可看到当前系统的网络配置情况。
详细说明在Windows的安装过程是为了大家理解ZeroTier One客户端的工作原理,网页管理配置的方法。