春节将至,去年被疫情打了个措手不及的各位,经过近一年的摸索和适应,相信和我一样都对远程办公这件事有了新的认识。虽然远程视频会议、线上办公协作平台等等工具的出现解决了大部分新常态办公需求。

但对特定行业、特定工作从业者而言,将办公平台放在这些基于公有云/混合云的第三方服务上始终不太合适。基于保密、内网安全的考虑,这类团队往往需要使用办公室的内网网络资源来完成业务和工作,包括内网的文件存储、传输,内网 ERP、OA 系统访问等等。

如果你的团队并没有购买、搭建专业的内网服务,有没有一种办法能够将异地同事的计算机或者内网服务器等设备组建成一个「虚拟局域网」,让身处各地的同事依然可以像在同一办公室网络环境内协作呢?

智能组网:把办公室搬到云上

通过「智能组网」这种形式,我们就可以将家中的电脑和办公室的电脑/服务器连接起来。具体而言,智能组网通过类似虚拟局域网的形式组成一个内网,这个内网中的计算机并不再局限于是否处于同一地理位置或者处于同一交换机下,它可以实现和办公室内网互相访问基本相同的效果——所以即便我们离开了办公室,也可以借助智能组网继续访问内网文件服务器或者是直接访问内网的 ERP 等关键业务。

从原理上来看,智能组网通过一个软件层的管理端对设备进行管理,管理端负责设置虚拟的内网网段并提供虚拟路由和交换,同时管理局域网内的设备,设备端则通过专用的客户端通过「虚拟软网卡」和管理端连接,管理端通过对设备端网络情况进行判断来为其提供不同的连接形式。

例如设备处于一个没有公网 IP 的内网环境中,则这台设备和虚拟内网其他设备的连接就必须通过中继服务器进行,形式上和我们此前普遍使用的 内网穿透 类似,访问速度也受限于中继服务器的网络速度;而如果设备拥有公网 IP,则可以通过类似 P2P 连接形式和虚拟内网中其他有公网 IP 的设备进行连接,访问速度则和设备当前网络环境的上传带宽速度有关。

不难看出,智能组网只是基于软件层面的虚拟路由器和交换机,来实现设备管理和虚拟网络地址再分配。这也在一定程度上更适合当前的远程办公场景——毕竟相比物理组网上,软件层的虚拟组网要更简单也更容易进行操作。

下面简单介绍两款主流的「智能组网」服务,希望可以在春节期间帮助到需要远程办公的你。

方案一:量大质优的 ZeroTier

首先是这个名为 ZeroTier 的智能组网服务,一句话评价就是设置简单,上手容易,限制也很少且免费版本就可以满足大多数需求,设备支持上也几乎覆盖了我们可能遇到了所有设备(包括各种 NAS)。

想要使用 ZeroTier 来组建虚拟内网网络其实主要分为两步,注册管理账号并创建虚拟网 ID,然后安装客户端并将设备加入到虚拟网络中。

首先登录 ZeroTier 并注册账号,也可以通过授权登录的形式来注册 ZeroTier 账号。

登录完成之后点击 「Create A Network」来创建你的虚拟网络,然后在这个 Network 网络中进行设置,比如名称、设备的加入方式以及内网网段等。

之后我们下载 App 并将其加入到这个新创建的虚拟网络中。首先我先将我在办公室的 Windows 电脑加入到网络中。

下载并安装对应的客户端,运行后在系统托盘处找到 ZeroTier one 并右击选择「Join network」,然后在弹出的输入框中输入前面在网页管理端创建的 16 位字符的 Network ID。

如果输入正确,系统会自动生成一个虚拟网络并提示你是否加入,点击加入之后就算是正式加入到这个虚拟局域网中了。

当然你也可以通过 在 Windows 终端中输入 ipconfig 来检查你加入的这个虚拟网络下对应的内网 IP 地址。

以此类推,这里我还为家中的 NAS 也安装了对应的客户端。虽然 ZeroTier 针对不同的 NAS 提供了专门的客户端,但考虑到通用性我直接通过 Docker 镜像来安装。

首先打开群晖的 Docker 套件,在注册表栏中输入「ZeroTier」来搜索相关的镜像,然后选择「henrist/zerotier-one」这个镜像并下载。

打开「映像」找到刚才下载的 zerotier-one 镜像,双击后在创建容器中勾选「使用高权限执行容器」,然后在「高级设置」中勾选上「启动自动重新启动」,在「网络」选项卡中勾选「使用与 Docker Host 相同的网络」。

切回到「卷」中,点击「添加文件夹」来保存数据,在「文件/文件夹」中定位到存储数据的文件夹(比如 docker/zerotier-one),然后右侧「转载路径」输入 /var/lib/zerotier-one,然后点击应用使得容器生效。

容器运行后,在「容器」中选中 「zerotier-one」并点击详情,我们接下来需要输入 Network ID 来将 NAS 加入到虚拟内网中,这里在 zerotier-one 中找到「终端机」选项卡,然后点击「新增」-「通过命令启动」,然后输入一个 ash 并点击确定。

紧接着在 ash 这个选项卡的后面输入加入网络 ID 的终端命令:

zerotier-cli join [你的虚拟内网 ID]

看到终端显示 200 OK 则表示加入成功了。

这时候在回到 控制 zerotier 管理端并刷新,应该可以看到 NAS 设备也已经顺利加入到虚拟内网中并顺利被分配了一个内网 IP 地址。

此时可以通过 ping 地址的方式来测试连通情况,在 Windows 上打开终端然后输入:ping [对应设备的 虚拟内网 IP]

如果两个设备都有对应的公网 IP,那么从 ping 的延迟就能看到其实是非常小的,这样设备之间的连接可以不通过服务器桥接的形式,所以访问上也会更加顺畅。

至此虚拟内网就已经顺利搭建完成了,你可以像访问内网文件服务器那样,通过 SMB 协议来访问这个千里之外的服务器。如果访问内网服务器中关键业务,则可以直接通过内网 IP 的方式进行访问,再也不需要通过端口映射的方式来进行访问了。

内网访问网站项目

Zerotier 支持 100 台以内设备进行免费的虚拟内网的组建,超过的部分需要另外收费。由于没有公网 IP 的设备则需要依赖其部署在海外中继服务器转发访问,相对而言速度上就要有所影响,当然 Zerotier 也支持自建中继服务器来加速访问,如果你的设备都能获取到公网的 IP,那么 Zerotier 虚拟组网是最为适合的。

方案二:稳定性更强的蒲公英

考虑到国内的网络环境,如果遇到需要转发那么必然需要通过服务器进行转发,上面提到的 Zerotier 的中继服务器的稳定性就要打上不小的折扣。如果你介意网络稳定性,国内的虚拟组网服务「蒲公英」是另一个选择。

原理类似,同样你需要在蒲公英的管理控制台注册并创建网络,这里使用体验版服务就只能选择「对等网络」,然后输入网络名字来创建。

创建完成之后就是下载客户端了,和 Zerotier 一样,蒲公英支持几乎所有的主流的桌面以及移动系统,并且还加入了 Docker 客户端来实现对 NAS 这一类设备的支持。首先我们依旧从最常用的 Windows 客户端开始。

下载客户端并安装后,使用之前注册的蒲公英账号密码登录后,系统会自动将当前的设备绑定到此前创建的网络中,这里不像 Zerotier 需要输入虚拟网络号。不过和 Zerotier 不同的是,体验版账号下并不能手动选择网段,只能随机进行分配,并且免费版本设备数也有所限制。

对于 NAS 设备,蒲公英的解决方案就是通过 Docker 镜像来实现,不过相比 Zerotier 在操作上要麻烦一些,原因是需要单独在终端中安装一个虚拟网卡驱动来实现。

在群晖的 Docker 中在侧边栏找到「注册表」,然后搜索蒲公英的官方镜像「pgyvpn」并双击下载。

双击下载完成之后先不要立即安装,这里首先在群晖中打开「控制面板」-「终端机和SNMP」,然后勾选「启动 SSH 功能」,为了安全考虑你可以自己改一个端口。

接下来我需要通过局域网来远程通过 SSH 来访问群晖,这里我使用 Xshell 创建一个访问来连接,然后输入一下命令来确定是否安装了虚拟网卡驱动:

lsmod |grep tun

如果没有任何显示 tun 的信息,则需要安装虚拟网卡,输入以下命令(如 root 权限登录则不需要输入 sudo -i):

sudo -i insmod /lib/modules/tun.ko

安装完成之后,我们使用终端命令来创建并启动容器:

sudo -i docker run -d --net host --cap-add NET_ADMIN --env PGY_USERNAME=“此处填写Oray帐号或UID” --env PGY_PASSWORD=“此处填写帐号密码” bestoray/pgyvpn

这里会再次要求你输入 NAS 的登录密码进行验证,完成之后会返回一个容器的 ID 值,选中并将其复制下来。

如果需要进入到容器,则通过以下命令进入:

sudo -i docker exec -it 容器ID值 bash

然后找容器中输入 pgyvpn 来访问蒲公英的控制面板。

实际上至此我们已经顺利在 NAS 上启动蒲公英并且将其加入到创建的虚拟内网中,在蒲公英客户端界面中也可以看到对应的几台设备的内网 IP,只不过群晖设备显示为转发,即需要通过中间的转发服务器来实现访问。

当然这样操作也使得文件访问操作等都要受制于转发的中继服务器,蒲公英体验版只能有三台设备,加上转发带宽只有 1M,唯一的优势就是中继转发服务器在国内,稳定性肯定会优于 ZeroTier。

结语

相比此前我经常使用的内网穿透,使用虚拟组网的形式来实现跨物理区域的设备互访无论是配置上还是访问速度上都有着不小的保证。在可以获得公网 IP 的情境下,由于无需通过第三方服务器就可以直接互访,因此在大文件传输,以及内网 Web 服务访问上使用也更方便。

考虑到接下来春节前后可能会持续的「远程办公」状态,希望这篇文章能为你和你的团队带来一些参考。

> 下载少数派 客户端、关注 少数派公众号,新常态工作从容应对 🎉

> 特惠、好用的硬件产品,尽在 少数派 sspai 官方店铺 🛒