我是Circaboy,废话不多说,本篇文章就是介绍从零开始搭建一个属于自己的虚拟局域网,目的就是把我手里的几台电脑和NAS都统一到一个虚拟局域网下面,以便于我实现异地管理文件。
本文面向的对象是那些没有IPv6地址,没有公网IP地址但是有内网穿透需求的用户。
目前我手里的设备:Surface Pro3,SurfaceBook一代顶配版,高性能自组装主机两台,威联通TS453Dmini一台,威联通。
Surface Pro3是4G+256G i5-4300U,加了个Docker当远程轻主机用。SurfaceBook1是16G+2T nvme i7-6600U,当我主力码字的设备用。高性能自组装主机A是32G+512G SATA SSD i7-8700K 1080Ti+Titans RTX,当远程服务器跑训练任务。高性能自组装主机B是16G+1T nvme SSD R5-3400G 1080Ti,当高性能备份主机用。威联通TS453Dmini是8G内存,加了个480G的固态以及2T的机械当数据备份盘用。威联通TVS951N是4G内存,加了两块2T的三星SATA SSD以及两块西数的8T组RAID1做深度学习数据储存用。
这些设备都分散在两个地方,所以需要我把他们连在同一个局域网内部,以便于我在任意一个地点的时候都能无障碍访问所有的设备以及对其进行管理。
目录:
1.准备事项:zerotier账号,腾讯云轻主机(用于自建Zerotier的moon服务器),Windows电脑一台。
2.zerotier账号注册与配置踩坑
3.腾讯云主机注册与配置踩坑
4.Zerotier的Moon服务器搭建配置踩坑
5.NAS与Windows设备加入Moon服务器踩坑
6.基于内网穿透的应用踩坑:RDP远程登陆教程,基于腾讯云主机的Q-WAN教程,
正文开始:
Zerotier账号是用于组件虚拟局域网的,腾讯云轻主机是用于用于自建Zerotier的moon服务器,也能白搞一个公网IP,其余的设备都要保证正常联网使用。
之前我写过一个zerotier注册账号的教程,在这里我就再发一遍:
Zerotier设置与问题解决部分:
ZeroTier 这一类 P2P VPN 是在互联网的基础上将自己的所有设备组成一个私有的网络,可以理解为互联网连接的局域网。最常见的场景就是在公司可以用手机直接访问家里的 NAS,而且是点对点直连,数据传输并不经由第三方服务器中转。所以安全性非常有保障。
Zerotier 在多设备之间建立了一个 Peer to Peer VPN(P2PVPN) 连接,如:在笔记本电脑、台式机、嵌入式设备、云资源和应用。这些设备只需要通过 ZeroTier One ( ZeroTier 的客户端) 在不同设备之间建立直接连接,即使它们位于 NAT 之后。连接到虚拟 LAN 的任何计算机和设备通常通过 NAT 或路由器设备与 Internet 连接,ZeroTier One 使用 STUN 和隧道来建立 NAT 后设备之间的 VPN 直连。简单一点说,Zerotier 就是通过 P2P 等方式实现形如交换机或路由器上 LAN 设备的内网互联。
第一步是注册Zerotier的账号。
这个是邮箱注册,注册完之后免费使用设备数量是50个,对于99%的人来说是够了。毕竟我这样的手里常年一大堆电子设备的人,能同时使用的路由器加电脑加起来也不超过十台。
第二步:登录和创建网络
注册完之后就直接登录网站,按照下面的指示创建网络就行。我是把我的网络名能用中文就用中文,这样看起来方便一点。
创建网络:创建一个新的网络之后,我们得到一个 Network ID,这个在后面的设备连接时需要用到,点击刚刚创建的网络我们可以设置更多选项。默认的设置就可以用了,右边 IPv4 的设置就是分配设备内网 IP 网段,其他的设置可以在 Setting help 里看到说明,不了解的不建议乱设置,如果不小心把自己的网络暴露在外部,会相当危险。
第三步:把手里的设备加入这个网络。
我现在手里的设备都是Windows10设备,所以在他们主页上下载相应的平台安装包就行,安装包后缀是msi结尾。
下载之后双击安装,一直按next直到它安装成功。
装成功之后,你的任务栏部分会出现一个Zerotier的图标,右键点一下鼠标,选择join Network。
有了这个窗口之后,我们再打开我们前面已经登录了的zerotier页面,然后在Network标签下可以看到我们创建的网络的基本信息,我给我的网络取的名字是“家庭内网”,我们要把我用椭圆部分圈出来的一串代码,也就是NETWORK ID下面的一串代码,复制,然后粘贴到上一步Join a Network弹出来的窗口中,我建议把所有的都勾选上,以免遗漏。
然后你的几台电脑都加入我创建的“家庭内网”之后,我们还需要进这个网络后台把这些设备的权限都打开。就点这个NODES,然后它会自动跳转到“家庭内网”的后台管理页面。
然后往下拉页面,就会看到自己的设备,我现在的设备都是Auth下面打勾了,代表这些设备被授权了,如果没打勾,就代表这个设备加入了你的网络,但是不能访问你的网络。
要着重关注的是Managed IPs下面的IP地址,这个地址就代表了你现在设备在Zerotier的“家庭网络”里面的虚拟IP地址,旁边的Last Seen下面代表你这个设备现在的在线状态,比如我现在手里的两台设备都在线,显示的就是ONLINE。
到这一步之后,就可以进行下一步了。
我上面的设备中,SurfaceBook1-7是发起端,地址是192.168.192.190,也就是我平时拿着在外面跑的笔记本,MacAir是接收端,地址是192.168.192.97,也就是我平时扔在家里当服务器的笔记本。
一直到这一步都是很顺畅的,但是之后可能会有人出现新的问题,那就是我从SurfaceBook1-7上访问MacAir的时候会显示连接失败。死活找不到解决方案。
因此,建议在拿到两个设备的“家庭内网”IP地址之后,先在CMD命令行窗口Ping一下地址,看能不能Ping通,如果能Ping通的话就走下一步RDP连接部分,如果不能Ping通的话,建议看看后面我是怎么解决的:
现在我查到的解决方案是一个大佬写的:问题的关键在新建的Zerotier网络虽提供了一组 Flow Rules 流控规则,初次启动时却不会自动应用。
就是在Flow Rules最后一行加一个空格,然后保存就行。这就让Rules启用了。
问题的原因是:
所以我也是采用了这个解决方案之后,就顺利解决了我zerotier网络下各个设备不互通的问题。
买腾讯云轻主机部分:
买云主机有两个目的:一个是获得公网IP,一个是有个搭建Zerotier Moon服务器的稳定环境。
其实买腾讯,买阿里,或者买华为云都行,还有一堆小的云主机服务商也能买,但是我建议买大家耳熟能详的品牌,最建议买腾讯和阿里的,因为现在国内买这样的云主机需要实名认证,而大家的腾讯和阿里系的账号基本都是实名认证过的,不需要额外的认证。
不过我买腾讯云的核心理由就是它便宜:
我买的三年,1核加2G内存,6Mbps的宽带,以及1000G流量包,三年只要219。后续续费肯定是飞天一般的贵,但是三年后再看吧。
至于我为什么没买阿里的?因为阿里的比这个贵一点吧。
单核,2G内存,装个Debian,给我跑一下服务,就够了,后期加点什么自动签到打卡的脚本上去,它也不是不能用。
进入腾讯云界面,然后点购买,扫码登录你的微信(我也不知道为什么腾讯一定要所有的服务都用微信登录),然后会自动进入微信小程序,然后你就授权登录了。网页端进入服务器配置界面:
地域:选择与您最近的一个地区,选一个地理位置距离自己最近的地方就行。
机型:选择您需要的云服务器机型配置。这里我们选择 “入门设置(1核1GB)”,因为这个最便宜。
镜像:选择您需要的云服务器操作系统。这里我选择的是Debian,不过选别的也都行,每个系统选好之后都会给你预装好。
公网带宽:勾选后会为您分配公网 IP,默认为 “1Mbps”,不过轻主机这个已经固定死了,就是6Mbps。
购买数量:默认为 “1台”。 购买时长:默认为 “1个月”,我选了三年。
买完服务器之后,腾讯会让你先重置密码,然后你进入腾讯的服务器-轻量服务器-控制台,就可以看到自己的主机了。其中是默认绑定了一个公网IP地址,相当于你花两百多买了三年的公网IP。
你可以选择在网页端打开命令行界面管理,也可以在本地用SSH登录进行管理。
建议使用MobaXterm作为远程管理服务器的软件,这个软件支持记录你的登录设置,特别是还有图形化文件管理界面,很适合新手使用。
上面说的Zerotier虽然可以互相访问,但是由于流量还是走的zerotier的官方服务器,在高峰期或者说跨宽带运营商的情况下,网络质量实在是堪忧,最直接的体现就是ping值忽高忽低或者掉包,如果是用来长期使用,这网络质量还是有点不行。正好腾讯云有台5M带宽的服务器,zerotier又支持自建中转服务器,腾讯云的BGP网络用来中转流量再合适不过了。
我的腾讯云服务器安装的是最新的Debian,作为zerotier的中转服务器(moon),zerotier的安装方式如下:
但是Zerotier作为moon,还需要再执行几行命令,相关命令如下。
生成moon模板配置文件:
cd /var/lib/zerotier-one zerotier-idtool initmoon identity.public >> moon.json
编辑生成的moon模板配置文件:
vim moon.json #
修改这行: "stableEndpoints": ["1.2.3.4/9993"]
不过其实更建议用MobaXterm的图形化文件管理修改这个文件,双击打开,然后直接保存更新,就不用学vim命令行了,vim的操作逻辑很烦。
注意需要将上面的1.2.3.4替换成实际的公网IP地址,不能是内网地址。
要注意的一点是,在配置之前,还得先看看自己的网络网关开启9993端口没有,如果没有的话,建议先开启了再去配置。
并且,如果服务器本身开启了防火墙,需要将9993端口进行放行;同时,服务器安全组也需要放行9993端口,比如我的腾讯云轻量云服务器安全组设置截图:
然后根据模板文件生成最终的moon文件:
zerotier-idtool genmoon moon.json
执行完成之后,会在当前目录生成一个名称为000000xxxxxx.json的文件。
创建对应目录,将生成的配置文件放置进去:
mkdir moons.d mv 000000xxxxx.moon moons.d
重启服务: systemctl restart zerotier-one
客户端加入自定义的moon 步骤也很简单,Linux及macOS直接在终端执行,Windows需要使用管理员权限在PowerShell或者cmd执行,命令如下:
zerotier-cli orbit 0000000xxxxxxxx 0000000xxxxxxxx
如果加入成功,会有如下提示: 200 orbit OK
要注意的的是,这个命令行后面你的“0000000xxxxxxxx”要打两次,这样才能正常执行加入。
查看是否加入moon:
在非moon设备上执行如下命令:
zerotier-cli listpeers
如果出现了对应的公网服务器IP及9993端口,
说明数据是走moon中转的。
按道理来说,在Windows和NAS设备上装了Zerotier之后,再去加入Moon服务,也就是说执行了zerotier-cli orbit 0000000xxxxxxxx 0000000xxxxxxxx这个命令行之后,它就会自动加入Moon服务器,你就有自己的中转服务器了。
如果你一直获取不了moon服务器的地址,比如这样:
中间MOON结尾的图并没有完美获取公网IP地址,
如果加成功的话,应该是这样的。
出现获取不了地址的原因,我排查出来有几个解决方案:
1.就是9993端口的问题,首先确认自己的9993端口是否开放。
2.是自己zerotier客户端设置问题:
打开zerotier客户端,点击“show networks…”,如下:
再把下图红框中的几个对勾打上,重启服务"ZeroTier One"和客户端。就会发现现在可以连接上moon了。
zerotier打洞使用p2p传输
其实zerotier是支持p2p打洞流量传输的,并不是自建了moon所有流量就经过moon服务器中转的,如图这是我从我电信宽带的设备远程连接到移动宽带内网的设备,在移动宽带内网的设备的带宽统计截图:
稍微有点惊喜的是,我腾讯云公网服务器带宽是5M,经过zerotier打洞之后使用p2p协议,两台设备之间的带宽可以达到10M,不知道是不是能达到其中一方的带宽上传上线。
在组建完Moon服务器之后,我们就可以愉快地在虚拟内网环境下对各个设备进行互访管理了。
最基础的:输入我NAS的内网地址,我就能在外网环境下管理我的NAS服务了,以及把我的NAS硬盘映射成Windows的本地硬盘。
比如我在办公室的电脑上的浏览器上输入我放在家里的那台TS453Dmini的虚拟内网地址的,
比如我在办公室的电脑上映射的我放在家里的那台TS453Dmini的硬盘,实现本地化管理异地硬盘。
有了虚拟局域网之后,就能完成异地远程办公室主机和家里的主机互访了,只需要点开Windows自带的远程桌面,然后输入虚拟内网地址,再点一下连接,然后就可以啦。
哦对了,还有一些很有意思的方面,我不敢写太多,就简单提一下吧,比如在自己的NAS上面装一个CDN服务,回收一下电费,在NAS上面装一个宝塔面板实现京东京豆自动打卡领,一个月一万多个京豆不是梦。
但是这些服务都需要及时维护,所以先做一个内网穿透实现异地流畅访问那是必须的。
总体来说,整个过程磕磕绊绊,还是把它写下来了,踩坑也踩了很多。
……