一.介绍

一直以来,我只知道日本某大学开发的某款软件可以在没有TUN/TAP驱动的容器中运行,而且效率还相当一般,直到我后来发现了ZeroTier,这玩意有常规的TUN/TAP模式,也有一个特殊的Network Containers 模式(目前已经改名为ZeroTier SDK——>然后又变成libzt了 ),通过实现一个轻量级的应用层 TCP/IP API 来 hook 现有应用程序的 Socket API,这样可以使现有的程序也能使用 ZeroTier 技术连接其它主机,也是挺牛逼的,不过不清楚是否有兼容性问题,个人感觉效率应该会比某软件的SecureNAT要高不少。

和其它P2P VPN不同的是这个是有个后台来管理维护你的私人网络的,而它的加入网络是通过一串唯一的ID来实现的,它还有Peer和Controller等一些概念,个人根据其在GitHub上开源的内容来看,它的Controller是个API控制端,Peers负责构建它的整个网络底层架构,这里面还有Planet和Leaf两种类型的节点,当Join命令发出时,你的客户端会接入这个网络,并在网络中注册唯一ID,然后根据你Join所选择的ID从Controller拉取网络配置。

二.安装配置

这个主要得看你安装的环境,在正常的支持TUN/TAP的环境下,一切都很简单,官方提供了一键,具体请查看官方网站——>传送门

自动识别是Debian系还是RedHat系,全自动,美滋滋。对于Mac和Windows来说,提供了安装包,手机客户端也都有,甚至还有各种NAS平台的插件包,也是非常方便

之后先在官方管理后台——>传送门   注册账号,然后创建一个Network并为其配置基本的属性,比如分配的IP地址段之类的

左上角的Network ID就是你的网络ID了,在配置完后,在你安装了客户端的机器上运行如下命令

然后返回成功就说明OK了,往下翻上面那个页面,不一会儿下方会出现你的客户端,勾选前方的auth就能允许加入Network,然后你在同一个网络中的各个客户端就能用分配的内网IP通信了

而对于无TUN/TAP支持的环境来说,就可能比较麻烦了,我用的是别人备份的旧版本,新版本的libzt实在是暂时还没搞明白怎么用,如果有谁搞定了请留个言告诉下怎么用

最后那条是在新的bash进程中hook新进程,从而实现通过ZeroTier通信,最大的问题还是这个是1.1.4版本的,目前最新版本已经是1.2.4了,所以也不知道有啥bug,

 


Senraの小窝原创文章,转载请注明来自:内网穿透系列——ZeroTier(能在容器中不依赖TUN/TAP使用的P2P VPN)