ZeroTier这个内网穿透工具我早在多年前就使用过,主要是方便自己在家里远程访问公司电脑。通过ZeroTier不需要TeamViewer/ToDesk之类的远程软件,仅仅通过Windows自带的远程桌面就可以实现远程操作(电脑需要确认开启了远程控制)。
一、前言
有时候需要在外边访问家里的设备,而众所周知一般家里都没有固定 IP 的,这时候就要内网穿透了,说到穿透的时候,大家都会提到 DDNS(动态域名解析),或者使用反向代理的方式如 FRP、Ngrok。
首先说说 DDNS,这种方式使用起来很方便,只要设置好相应的服务提供商的 API,就能做到每次 IP 变化后自动解析,这样不管家里 IP 怎么变,用域名都能访问回家。这里最大的硬伤就是公网IP,有些朋友的带宽就是个大局域网,路由器只能获取到上一级内网的 IP,这时就 GG 了。
然后是 FRP、Ngrok 这样的反向代理程序,通过服务器转发数据来达到外网访问的目的,这样就需要自己有个 VPS,或者使用他人搭建的服务,据我所知的免费服务都是限速的,要是自己搭建的话,体验就要看服务器的网络质量了。
现在我们就来看看,不需要公网 IP,不依赖服务端网络性能的 ZeroTier。
二、软件介绍
Securely Connect Any Device, Anywhere.
- ZeroTier 结合了 VPN 和 SD-WAN 的功能,简化了网络管理;
- 享受灵活性,同时避免昂贵的硬件供应商锁定;
上面是官网的介绍。
它是一个分布式网络虚拟机管理程序,建立在加密安全的全球对等网络之上。它提供与企业 SDN 交换机同等的高级网络虚拟化和管理功能,而且可以跨本地和广域网并连接几乎任何类型的应用程序或设备。
三、原理介绍
说白了就是 P2P(Peer to Peer),而且组织方式很像 DNS。
根服务器 R 记录了路径信息,设备 A 能通过ZeroTier唯一地址标识找到需要连接的设备 B
这个过程如下:
- A 想要将数据包发送到 B,但由于它没有直接路径,因此将其向上发送到 R。
- 如果 R 有直接链接到 B,它会转发数据包给 B。否则它会继续向上游发送数据包,直到达到行星根(planet)。行星根知道所有节点,所以如果 B 在线,最终数据包将到达 B。
- R 还向 A 发送一个名为会和的消息,包含有关它如何到达 B 的提示。同时,将会和发给 B,通知 B 它如何到达 A。
- A 和 B 获取它们的会合消息并尝试相互发送测试消息,可能会对 NAT 或状态防火墙进行穿透。如果这样可以建立直接链路,则不再需要中继。
- 如果无法建立直接路径,则通信可以继续中继(速度慢)
ZeroTier 官方搭建了一个行星根服务器叫做地球 Earth,行星根服务器唯一的且是免费的,它记录了所有的路径信息,一般情况下大家都直接用的这个。除此之外还有 12 个遍布全球的根服务器,这些是收费的服务。所以如果使用免费套餐,连接时的延迟可能会很高,另外由于 Earth 在国外,一些不确定因素可能会影响到使用。考虑到网络的不确定性,ZeroTier 能自己创建根服务器月球 Moons,这样就能在大局域网中得到更好的体验了。
四、下载安装
ZeroTier 是跨平台的,能安装在几乎任何平台。
Windows、macOS、Linux、iOS、Android、QNAP、Synology、西数 MyCloud NAS,下载地址:ZeroTier官方下载页。
路由器推荐安装 Entware
后使用 opkg install zerotier
命令安装。
五、使用
因为我们没有自己创建 Moons 服务器,现在就先使用 ZeroTier 提供的服务。
5.1 注册账号
自行注册账号:注册。
注册之后是这样的,保持默认就好,免费套餐能连接 25个设备,一般人够用了。
5.2 创建网络
创建好网络之后,会有一个NETWORK ID
,各个需要连接到同一网络的设备加入到此网络ID即可。
5.3 客户端加入网络
以Windows为例,安装后,点击右下角的图标,“Join New Network”,在控制台复制Network Id
填入即可。
各个设备都加入网络之后,在浏览器登录之后的控制台,点击这个网络进去,可以查看当前各个设备的连接状态,勾选允许加入到网络的设备。
5.4 远程控制
加入同一网络的设备之间,就可以直接通过Windows的远程控制工具连接了,当然前提是你的电脑开启了远程控制功能。
六、其他使用
除了远程控制,通过分配的局域网IP地址,连接公司的数据库什么的也是可以的。
最新评论
谢谢,大神的分享
你们都能正常用吗?我怎么不能呀,没有几个能放
台挺多,没一个能放的,全是播放频道时出错的提示,CCTV都凉
是挺好用的,轰死你,东至梅城林场何红涛