当前位置: 首页 > 淘宝 > 正文

远程访问如此简单,通过 ZeroTier 和 Tailscale 轻松组建虚拟局域网,实现内网穿透。

这里的远程访问是指在局域网外通过网络访问局域网,用来实现屏幕共享、文件共享、远程桌面、远程联机等操作。比如远程办公,你可以在任何地点访问你在公司或家里的电脑,不但可以实现文件传输,还可以对电脑进行远程操控、屏幕共享;比如你搭建了家庭 NAS 服务器,通过远程访问可以在任何地点访问 NAS 上的内容;比如你在局域网内搭建了私人影音媒体库,可以通过远程访问在任何地点观看本地设备存储的音视频等内容;比如你可以和异地的朋友进行联机游戏等等。

实现远程访问有两种情况,有公网 IP 和没公网 IP。

如果有公网 IP 远程访问是非常简单的,可以通过公网 IP 直接访问,访问指定内容只要加上指定的端口即可。

但是由于全球 IPv4 资源枯竭,我国的家庭宽带一般都被分配了私网 IP,如果你需要公网 IP 可以向运营商提出申请,过去申请可能相对容易一些,现在相对困难,以四川电信为例,自 2022 年开始已经不提供免费的公网 IP 了,如果你需要公网 IP 要满足一定条件并支付每月 100 元的服务费,才能享受动态公网 IP 服务。当然各地的运营商服务有差别,大家可以先尝试向自己的运营商申请免费的公网 IP,如果申请成功请把你家的光猫改为桥接模式、关闭光猫的 DHCP 服务和无线网络,使用路由器拨号上网,这样就可以通过公网 IP 直接进行远程访问了。

如果你的网络支持并开启了 IPv6,你的路由器也支持 IPv6,那么你可以开启路由器的 IPv6 功能,使用 IPv6 获取的 IP 地址就是公网 IP,但这里有一个问题是大部分路由器都自配了防火墙,自动屏蔽了 IPv6 的远程访问,也就是说如果你无法关闭路由器对 IPv6 的限制,这个 IPv6 的公网 IP 也没什么用,要解决路由器防火墙的问题可能需要刷固件,并不是所有路由器都支持,所以这个办法其实更麻烦,或者你可以直接选择支持关闭 IPv6 防火墙的路由器。但 IPv6 现在并不普及,很多路由器和设备是不支持 IPv6 的,这样使用就会受到一些限制。

下面就来讲没有公网 IP 的情况,这种情况比较普遍。没有公网 IP 远程访问也有很多方式可以实现,今天主要分享两个完全免费且不限速的内网穿透解决方案。

通过 ZeroTier 或 Tailscale 可以进行内网穿透,轻松组建虚拟局域网/组网,就是可以把任意地点、任意网络的多台设备添加到一个虚拟的局域网/组网中,在这个虚拟局域网/组网下,这些设备可以实现局域网内网的所有功能,因为设备的物理位置没有限制,所以就实现了远程访问,不同网络的设备可以通过这个虚拟局域网/组网进行直接通信,传输速度由设备自身的网络带宽限制,当通信受到限制时也可以通过 ZeroTier 的服务器或者自建的云服务器进行中转。

接下来分别具体讲一下 ZeroTier 和 Tailscale 的操作步骤。

ZeroTier

  1. 在 ZeroTier 官网注册一个账号。
  2. 去注册邮箱里查看验证邮件并进行验证。
  3. 验证后刷新之前的网页即可进入 ZeroTier Central 管理中心。
  4. 点击「Create A Network」创建虚拟网络。
  1. 创建完成后会显示如下界面,红框中是 NETWORK ID,也就是你的虚拟网络 ID,其他设备加入虚拟网络都需要这个 ID,在红框这一栏任意位置单击进入网络设置。
  2. 在红框处修改虚拟网络名称,自定义即可,不改也行。默认为 Private 私人网络,加入网络需要授权,保持默认即可。下面的 IPv4 Auto-Assign 可选择你的虚拟局域网 IP 地址网段,加入虚拟局域网的各个设备都会在这个网段被分配一个虚拟 IP 地址,各设备之间互相访问就要用到这个虚拟 IP 地址,这个网段保持默认即可,也可以自己任选一个。

到这里你的虚拟局域网就已经搭设完成了,接下来就可以添加设备了。

  1. 右击「the downloads page」打开新的标签页为你的设备下载客户端,按照你的操作系统选择客户端下载并安装。(iOS 用户可在 App Store 直接搜索下载安装,需要美区账号,安卓用户可自行搜索安装包下载安装,设备端的 App 叫 ZeroTier One)
  2. 设备端是无需登录账号的,App 也很简单,各个系统操作基本一致,以 MacOS 为例,运行 ZeroTier 以后图标显示在菜单栏,点击图标选择「Join New Network…」,将前面创建的虚拟网络 ID 复制粘贴进来,点击「Join」即可,这样就连接上了,要断开连接点击「Disconnect」或直接退出程序即可。

以 iOS 为例,打开 ZeroTier One 后点击右上角的加号,点击「Accept」,将 Network ID 粘贴过来,点击打开「Enable Default Route」后面的开关,点击「Add Network」,虚拟网络就添加成功了,点击该网络后面的开关即可开启或关闭虚拟局域网,开启后顶部状态栏上会显示「VPN」图标。(过程中可能会请求系统授权,同意即可)

  1. 如果你想邀请其他人加入你的虚拟局域网,和他人的设备进行文件共享或远程访问,只要请他们在设备上安装 ZeroTier 或者 ZeroTier One 的客户端,然后参考上面的方式直接通过你的虚拟局域网 ID 即可加入你的虚拟局域网,你也可以继续添加自己的其他设备,每个虚拟局域网最多可以添加 25 个设备。
  2. 注意上方设备加入虚拟局域网后需要经过管理员也就是虚拟网络创建者的授权才可以进行访问,进入 ZeroTier Central 管理中心在 Members 部分可以看到已经加入网络的设备,设备前方显示红色虚线表示未对其授权,该设备无法访问虚拟局域网内的其他设备,点击勾选设备前方的方框可对其进行授权,授权后的设备前方显示绿色实线,扳手后方是设备的虚拟地址,可在「Name/Description」处为设备修改名称,后方的「Managed IPs」是设备在虚拟局域网内的虚拟内网 IP 地址,设备之间互相访问就是使用这个虚拟内网 IP 地址,支持指定 IP,一般使用默认即可,后方是上一次访问的时间,最后是物理 IP 地址。
  3. 以上图为例,在我授权 iPhone8 访问虚拟局域网后,假如我在局域网外要通过 iphone8 访问 iMac 的共享文件夹,只要使用 iphone8 在「文件」App 里通过 smb://192.168.195.173 连接服务器即可;如果我想访问 iMac 上的 Plex 服务器只要在浏览器访问 192.168.195.173:32400 即可;如果我想使用远程桌面操控家里的 iMac 只要在 iPhone8 打开 VNC Viewer 使用 192.168.195.173 连接这台 iMac 即可。总之你在局域网里能做的大部分工作通过虚拟局域网都可以实现,我这里用的是 iPhone,当然你也可以使用电脑或其他设备访问虚拟局域网内的设备,前提是设备开启了共享和远程访问。

同时 ZeroTier 也为有更多需求的用户提供了付费服务。

Tailscale

  1. Tailscale 仅支持通过谷歌、微软或 GitHub 账号授权登录,建议使用 GitHub 账号登录,若没有请先注册一个 GitHub 账号(微软账号可能需要用手机注册),然后登录 Tailscale。
  2. 登录后为如下界面,请根据自己的操作系统下载并安装客户端。(MacOS 及 iOS 需要美区账号,安卓用户可自行搜索安装包下载安装)
  3. 安装完成后请运行 Tailscale 客户端,点击「Get Started」,点击「Sign in to your network」,跳转网页登录你的账号,返回客户端点击「Yes, start on log in」,意思是开机启动,如果不需要开机启动请选择「No, I will manually start Tailscale」,在有需要的时候手动开启客户端,现在你的设备就已经成功加入你的虚拟网络了,点击「Close」关闭窗口,你会在菜单栏看到 Tailscale 图标。
  4. 此时回到引导设置页,设备已经出现在右侧了,前方是设备名称,后方是虚拟 IP 地址,Tailscale 是无需手动配置的,设备安装客户端并登录后会自动加入虚拟组网,接下来继续在其他需要远程访问的设备上安装客户端并登录即可。

以 iOS 为例,打开客户端点击「Get Started」登录你的账号,使用 GitHub 授权,登录后界面最上方是启用和关闭按钮,就是虚拟组网的开关,跟着是本机的名称和虚拟 IP,下方显示的是你的其他设备,格式也是名字在上,虚拟 IP 在下,接下来就可以通过其他设备的虚拟 IP 进行远程访问了。

  1. MacOS 通过菜单栏的图标可进行操作,最上面是虚拟组网的开关,跟着显示的是当前登录的账号,点击「Admin Console」可进入网页版管理中心,可以查看连接设备名称、虚拟 IP、操作系统、连接状态等信息,点击设备可以对其详情进行查看和管理。在菜单栏图标点击 Network Devices – My Devices 也可查看虚拟组网接入的设备,点击设备名称可直接复制设备的虚拟 IP。
  2. 若要与他人共享自己的设备请将鼠标移至设备最后方的三个小圆点上,会出现「Share…」按钮,点击弹出分享窗口,点击「Generate & copy invite link」可生成邀请链接,将链接发送给你的好友,好友接受邀请后你的这台设备就会出现在他的虚拟组网里,他就可以单向访问你的这台设备了,如果要实现双向访问你还需要通过他的设备的邀请链接将他的设备加入你的虚拟组网。(每个访问虚拟组网的设备都需要安装客户端并登录账号,每个虚拟组网初始最多可接入20个设备,每邀请一个人双方都会增加两个设备位)
  3. 上面讲到的都是给每个设备分配一个虚拟 IP,然后互相访问,如果在外面想访问本地局域网的设备还有一个方式,可以使用局域网内的一台设备做虚拟网关,设置一个虚拟路由,将你的本地局域网作为这个虚拟网关的子网,这样就可以通过虚拟网关访问本地局域网的所有设备,直接通过你的本地 IP 访问即可,就不需要为每个设备都安装客户端加入虚拟组网了。

不过这个设置有一点小门槛,如果对网络不太懂,可能设置起来会有些困难,但官方也有相应的指导说明,除此之外 Tailscale 还有很多高级功能和付费功能。对于个人用户来说,一般免费版本就可以满足需求了,如果是机构或者企业也可以选择付费的版本。

文章写的有点长,其实操作是非常简单的,ZeroTier 和 Tailscale 都是非常好的内网穿透解决方案,他们的原理都是搭建一个虚拟网络,设备经过授权连接到这个虚拟网络后就可以互相访问,就像在同一个局域网内一样。但实际上 ZeroTier 和 Tailscale 使用的技术并不相同,操作方式上也略有差别。

ZeroTier 只有虚拟网络创建者需要用账号登录,要访问虚拟网络的设备都需要安装客户端但不用登录;每个注册用户可以创建的虚拟网络没有上限,但每个虚拟网络最多只可接入 25 个设备;虚拟网络的管理员可以查看所有接入设备的信息,并对其进行管理,而接入网络的其他设备除了网络 ID 是无法获取虚拟网络的其他信息的;访问虚拟网络接入的其他设备需要管理员告知其他设备的虚拟 IP 并对其进行授权;数据传输正常情况下是两个设备直接加密通信,但是如果网络情况不好或者受到其他限制可能会通过 ZeroTier 服务器进行中转,如果不想使用 ZeroTier 的服务器也可以使用其他服务器进行中转。

Tailscale 的每个用户都需要使用账号登录,每个账号登录后会自动创建一个虚拟网络,不支持新建虚拟网络;使用账号登录后会自动加入虚拟网络,每个虚拟网络初始可添加 20 个设备,但是每邀请一个设备加入自己的网络就会新增 2 个设备位;支持一个虚拟子网,可把一个局域网设置为虚拟子网,这个局域网内的所有设备可以访问虚拟网络但不需要安装客户端也不用登录账号;如果是自己的设备可以直接通过虚拟 IP 互相访问,若要访问他人的设备需要通过邀请链接将他人的设备加入自己的虚拟网络,同理要把自己的设备共享给别人也需要通过邀请链接把自己的设备分享出去;数据传输是两个设备直接加密通信,也可以自建中转服务器。

简单说,如果自己个人使用,用 Tailscale 给自己的每个设备安装客户端并登录就可以了,用 ZeroTier 还需要给每个设备添加虚拟网络,但也不算麻烦;如果只是偶然需要与他人进行远程共享,使用 ZeroTier 只要对方安装客户端再添加虚拟网络就可以互相访问了,而 Tailscale 需要对方先注册账号,再通过你的邀请链接加入你的虚拟组网,这样对方才可以访问你的设备,如果你要访问他的设备还需要对方再邀请你加入他的虚拟组网,其实有点麻烦。

专业的术语我不太懂,但就使用体验上来看,ZeroTier 应该是搭建了虚拟局域网,所有设备的虚拟 IP 都在同一个网段,接入虚拟局域网的所有设备都可以使用虚拟 IP 互相访问,因为设备是不需要登录的,所以经过授权设备就直接进入虚拟局域网了。而 Tailscale 搭建的是虚拟组网,每个设备的虚拟 IP 都在不同的网段,但在同一个虚拟组网内的设备可以互相访问,可是 Tailscale 的分享邀请是单向的,因为每个账号都有一个独立的虚拟网络,我把我的设备分享给对方后,我的设备就被添加到了对方的虚拟网络中,但是对方的设备并不会出现在我的虚拟网络里,所以他可以通过他的虚拟网络访问我共享的设备,但是我无法访问他的设备,需要对方邀请后才可以将对方的设备加入我的虚拟网络。

这个差异你也可以说 Tailscale 更安全,你也可以说他更麻烦。因为虽然加入 ZeroTier 的虚拟局域网可以访问网内的所有设备,但是设备的虚拟 IP 只有管理员知道,即使邀请他人加入虚拟局域网,对方也不会知道虚拟局域网内其他设备的虚拟 IP,他甚至都无法查看他自己的虚拟 IP,一切权限都在管理员这里,如果只想让对方访问某个特定的设备只要给其他设备取消授权就万无一失了。加入他人虚拟网络的这一方如果不想对方访问自己的设备或某些内容,只要关闭这些内容的共享功能即可。

相比之下提到安全只能说在传输方式上 Tailscale 更安全,因为你的数据是完全不会经过 Tailscale 服务器的,而 ZeroTier 是有可能的,但是如果你使用其他服务器进行中转,那么这两个也没有太大的区别。关于稳定性方面,因为本人没有测试环境,所以无法提供信息,初步感受没有太大差别。

总而言之,这两个都挺好的,ZeroTier 比较方便与他人共享,Tailscale 相对更加安全,也许可以这样理解吧,使用体验差别不算太大,都是不限流、不限速的,即使是用于 4K 视频的串流也完全不卡,而且是免费的,相较一些收费的内网穿透工具,我觉得这两个还是很不错的选择。
————————————————

本文固定链接: https://www.eoowo.com/?p=1863 | 火星博客

该日志由 Rainer 于2023年04月11日发表在 淘宝 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 远程访问如此简单,通过 ZeroTier 和 Tailscale 轻松组建虚拟局域网,实现内网穿透。 | 火星博客

远程访问如此简单,通过 ZeroTier 和 Tailscale 轻松组建虚拟局域网,实现内网穿透。:等您坐沙发呢!

发表评论

CAPTCHAis initialing...
快捷键:Ctrl+Enter