穿越防火墙的秘籍,打造个人专属内网穿透网络

  之前的一篇文章中我们介绍了一款高性能、开源的内网穿透工具FRP,但是对于很多小白用户来说,上手的成本比较高,既要配置服务端又需要客户端,还需要各种配置文件;因此本文给大家带来一款新的内网穿透组网工具Zerotier,五分钟让大家更轻松的实现摸鱼;最后分享搭建自己的服务器进行私有化部署教程,拒绝摸鱼中有任何的延迟。

  经常搞打洞穿透的小伙伴都知道,FRP是一个穿透工具,是专门用来穿透到内网的,实现点对点、设备到设备的穿透功能;而这次介绍的Zerotier则加了一个组网的关键词,那么什么是组网呢?它是如何来组网的呢?

  所谓的组网,其实就是构建了一个虚拟局域网,简单来说就是将处于异地不同网络中的设备,跨网络组建在同一个虚拟局域网中,从而实现基于内网IP的设备间的互相访问。

  这么说起来有点枯燥无聊,如果我们装了Zerotier之后打开电脑的网络连接,就可以看到一个新的虚拟网络:

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

虚拟局域网

  这里我们就看到它创建了一个新的网络Zerotier One,不过这个网络在物理上并不存在,因为它不是一张网卡也不是一根网线连接的,只是一个虚拟的网络;同时你可以将不同的设备(比如pad、phone等)都安装软件后,添加到这个局域网,通过IP的方式互相访问,下图是组网示意图:

Zerotier网络示意图

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

  因此我们发现Zerotier的内网穿透方式和FRP有着本质的不同,FRP依赖于公网IP,对单个设备特定端口号进行隧道穿透,适合部署网站服务、ssh连接等少量固定端口的办公环境;而Zerotier适合多设备间多端口号之间组网,常见的情况例如访问家里的nas设备,同时我们在nas上运行了多个服务,需要开放多个端口,这个时候通过Zerotier就可以让我们在异地通过手机、电脑等多种设备都能够访问到nas中的服务。

  同时Zerotier没有直接暴露内网设备的端口,避免了设备被大量网络扫描到,更类似FRP的stcp模式。

  好了,话不多说,我们下面就来看下它是如何安装配置的。

客户端安装配置

  Zerotier支持多种客户端的接入,我们可以在它的官网下载页面,找到常见的Windows、MacOS、Linux下载软件,还有不常见的如OpenWRT系统、FreeNAS和群晖等不同的nas系统;下面我们看下几种常用系统是如何来安装的。

笔者将本文所有的安装软件都整理上传了,需要的直接跳转到文末自取。

Windows环境

  首先我们需要去官网注册开通一个免费的网络Network,打开官网注册地址,点击SIGN UP,填写一系列信息后,重新登录进去,到我们的网络页面;点击Create A Network就可以新建网络:

创建网络

  在网络页面,我们可以看到我们有多少网络和多少设备,如果是免费用户的话最多只能创建3个网络和连接10个设备;记住我们新创建网络的ID,下面需要用到。

  然后下载我们ZeroTierOne.msi的安装包,双击安装后我们桌面右下角就会出现Zerotier图标,右击出现一个操作框:

加入网络

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

  点击Join New Network,出现一个弹框,将我们上面的网络的ID复制粘贴进去,这样我们就加入这个网络了;但是加入网络后还需要对该设备进行认证,我们点击网络详情页面,找到该设备中Edit按钮,在出现的弹框最上面点击Authorized,然后点击Save即可。

加入网络

  这样我们的设备就认证通过了,我们可以通过Managed IPs分配的IP访问到该设备下的服务。

Linux环境

  Linux下安装Zerotier则相对容易,Zerotier提供了一键安装的脚本,我们只需要在Linux环境下输入如下的命令即可:

1
curl -s https://install.zerotier.com | sudo bash

  最后看到如下的提示就安装成功了。

1
Success! You are ZeroTier address

  我们也需要通过命令加入网络:

1
sudo zerotier-cli join <NETWORK ID>

  看到如下加入成功的提示即可:

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

1
200 join OK

  加入成功后也需要对设备进行认证。

  还有一些nas设备会自带的ZeroTier插件,我们切到设备面板,然后输入网络ID,点击启用按钮,即可实现nas设备的接入网络;比如下面就是笔者家中的一台安装iStore的nas设备的配置界面:

iStore

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

  还有Macos和安卓环境的安装也都很简单,这里不再赘述了。

自建planet服务器

  我们上面创建和加入的网络都是官方的,但是由于众所周知的原因,官方的网络延迟比较大,使用起来体验可能不是很友好;因此有自己服务器并且对延迟要求比较高的小伙伴就可以愉快的搭建私有服务器进行玩耍了。

  这里推荐一下笔者目前在用的阿里云服务器,专门用来部署我自己的planet服务器;滑到下面找到99月一年的ECS实例服务器购买,它不仅性价比极高,而且性能稳定可靠,完全能够满足个人和小型企业的日常需求;无论你是想要搭建个人网站、进行小型项目开发,还是作为学习实践的平台,这款服务器都是一个绝佳的选择;笔者都已经续费到26年了,这样的羊毛不薅更待何时。

服务器实例

  除了服务器之外,这里需要用到一个开源的仓库:docker-zerotier-planet,我们将其克隆到服务器后后执行部署的脚本:

1
2
3
4
5
git clone https://github.com/xubiaolin/docker-zerotier-planet

cd docker-zerotier-planet/

./deploy.sh

docker部署

  部署成功后,我们需要去开放端口,开放9994/tcp9994/udp3443/tcp3000/tcp4个端口;然后访问http://[公网ip]:3443,进入控制页面,默认账号/密码为:admin/password,修改初始密码。

  然后再次登录,点击Add Network,然后输入网络名称,创建一个新的网络,这里我们会得到一个网络的id:

创建网络

  选中easy setup,输入默认的ip地址范围,提交即可:

setup

  创建网络后,对于我们加入网络的设备,勾选Authorized选项框即可通过认证:

加入网络

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

  上面脚本运行成功后,我们会看到在./data/zerotier/dist目录下生成planetmoon配置文件,保存这两个文件,后面需要进行替换操作。

替换文件

  我们服务器安装好后,还需要对不同客户端进行配置文件替换,将客户端中的配置替换成我们上面服务生成的配置文件;在Windows中,将plant文件覆盖粘贴到C:\ProgramData\ZeroTier\One目录下:

Windows替换文件

需要注意的是,ProgramData目录是一个隐藏文件夹,需要允许查看隐藏目录才可打开。

替换后需要重启ZeroTier。

  对于Linux环境,执行wget命令覆盖plant文件,然后重启网络即可:

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

1
2
3
cd /var/lib/zerotier-one
sudo wget -O planet http://[your ip]:3000/planet?key=[your key]
sudo service zerotier-one restart

安卓客户端

  对于安卓客户端,自建服务就不能直接用官方的客户端了;这里我们下载一个第三方的开源客户端:ZerotierFix.apk,点击右上角三个点,然后入轨 => 从文件导入,导入从服务器下载的moon文件:

安卓客户端的安装包笔者也已经整理好了,在文末自取。

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

入轨

  入轨后,点击底部的加号,还是老样子,输入网络ID,我们就可以在主界面看到一条新建的网络了,点击右边的switch开关即可开启网络:

ZerotierFix连接上网络

总结

  这里进行一个简单的总结,笔者在日常生活中也体验过很多的内网穿透工具,每家的穿透工具在功能和使用上各有侧重,像基于开源FRP衍生的主要商业化工具ngrok、NATAPP、Cpolar都侧重端口映射,在流量、域名、隧道条数上进行收费,比较适用于部署网站、搭建服务等办公场景下的应用。

  而笔者在日常生活中会选择Zerotier的原因,是因为体验下来是一款非常适合家用组网的工具软件,它可以帮助我们十分方便的访问家里的各种设备,以及设备的不同端口;同时Zerotier在软件上对于设备的支持程度也是相当丰富的,Windows、Linux、Macos、安卓和iPhone等常见的系统都能够支持到,甚至我们也能看到Zerotier还支持一些nas版的软件;因此哪怕是在外出的环境下,我们通过身边的手机或平板,也能够很方便的穿透到内网环境。

甚至笔者在服务器上安装VSCode网页版后,实现了通过手机远程回公司改代码。

  而且通过本文的安装教程我们也能看到,只需要让设备安装软件然后加入网络即可,安装组网十分便捷,设备会自动获取IP地址;Zerotier官方在设备数量和网络数量上也有限制,但是对于有公网服务器的同学来说,通过自建服务器可以绕开数量的限制,同时也可以极大降低延迟。

本文所有软件敬请关注公众号【前端壹读】,后台回复关键词【Zerotier】即可获取。

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里


本网所有内容文字和图片,版权均属谢小飞所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。如需转载请关注公众号【前端壹读】后回复【转载】。