-
Notifications
You must be signed in to change notification settings - Fork 1
ZTM Introduction
ZTM是 基于HTTP2隧道 的 去中心化 的、面向Web3 的开源 网络基础设施 软件。ZTM可以运行在任意的现存IP网络之上,包括但不限于局域网、互联网、容器网络等。ZTM为构建和使用 去中心化应用 提供了必要的网络基础,包括网络联通性、基于端口的访问控制、mTLS加密的网络通道、基于证书的身份识别与访问控制、负载均衡等基础网络及安全能力。基于ZTM可以构建多种适用于个人用户、中小团体、企业组织等安全的网络方案,如:
- 适用于个人用户的内网穿透工具,使用户可以在办公室网络访问家里计算机上文件
- 构建类似ipfs(https://ipfs.tech/) 的内容分享网络,在朋友之间分享网页、视频、图片等,无需依赖 互联网巨头控制的 社交网络平台,保证内容在群体内的私密性同时保障作品的所有权
- 构建私密的聊天、语音、视频会议工具,避免因为使用SaaS类工具(如Webex)带来的隐私泄露风险,提供更为主动、更加可管理的隐私保护能力
- 构建类似cloudflare one的SASE但是私有化的方案,提供类似cloudflare tunnel、cloudflare access能力,并且该方案的部署是私有的,不依赖于cloud flare的网络与运营
- 构建类似zerotier(https://www.zerotier.com/) 和tailscale(https://tailscale.com/) 的组网方案。区别在于ZTM运行在七层网络,并不需要在设备中构建虚拟网卡、调整路由、配置防火墙策略等,因此不需要系统特权、无侵入、简单并且更安全。同时,ZTM只提供构建类似网络所需的技术组件和方案,ZTM团队并不实际拥有、控制和运营该网络
-
ZTM是 可编程 的。ZTM以Pipy(https://github.com/flomesh-io/pipy) 为基础构建数据平面和控制平面,采用PipyJS(https://github.com/flomesh-io/pipy?tab=readme-ov-file#programmable) 开发,采用Apache2 License分发。Pipy的可编程特性使能ZTM成为 可编程网络。基于PipyJS,用户可以快速的定制访问控制策略、内容缓存策略、安全威胁识别等功能和能力,可编程 和 可扩展 是ZMT的重要特征。
-
ZTM是 高性能 的。ZTM数据平面使用高性能网络代理Pipy,并采用基于HTTP2的网络连接,充分利用了HTTP2的多路复用能力。在多数情况下,相比传统的网络方案(如 防火墙+反向代理+WAF ),ZTM可以有效的降低因为需要跨越多种网络边界而带来的性能开销。ZTM为用户带来更快的网络体验。
-
ZTM是 面向安全 的。在ZTM上,任何设备和服务的接入都是基于证书的,客户端证书的使用强化了访问者身份识别。这是我们称之为 Zero Trust 的原因之一。除了天然的客户端身份标识外,ZTM为各种网络安全管理能力提供了必要的基础能力和编程接口,基于ZTM可以快速的构建如ZTNA(Zero Trust Network Access)、SWG(Secure Web Gateway)、RBI(Remote Browser Isolation)、CASB(Cloud Access Security Broker)、DLP(Data Loss Prevention)、WAF(Web Application Firewall)等网络安全方案。在保证个人与中小用户可以开箱即用的使用安全的ZTM网络同时,企业级用户可以快速定制复杂的企业级网络安全的策略。这些策略基于Pipy内置的模块并且采用PipyJS开发,可以快速的实现 脚本化定制安全策略 。
-
ZTM是 多网络平面 的。在ZTM网络环境里,任何一个接入设备(称为End Point),都可以接入多个ZTM网络。比如我当前使用的mac-air在接入私有的办公网络同时,也接入了大学同学共享照片的网络。ZTM构建了一种类似"slack channel"用户体验的网络环境,每个个体(End Point)可以同时存在于多个网络平面。这种一个设备同时接入多个网络的立体网络形态,是我们称之为 Mesh 的原因。当我们只接入一个网络平面的时候,ZTM看起来像ZeroTier网络;或者说,ZTM用户可以快速的构建和使用多个"类ZeroTier"的网络。相比于ZeroTier,或者TailScale(基于wireguard)这些基于Layer2的去中心化网络方案,ZTM因为不需要在设备上构建虚拟网卡、不需要调整设备的路由策略、不需要设置设备的防火墙策略,因此ZTM支持多网络平面更加简单并且可行(多数的Layer2 VPN软件不能同时运行在一个主机上)。想想使用VPN的时候,连接了VPN之后就无法访问互联网的情景;这些问题在ZTM上都不存在。ZTM不需要构建本地虚拟网卡,不需要IP配置,因此不需要IP路由。ZTM的路由能力同时支持四层和七层的,ZTM可以根据设置的策略实现基于"IP+端口"的路由能力,搭配使用Flomesh FGW(https://github.com/flomesh-io/fgw) 就可以针对特定的协议(如HTTP)根据七层的报文特征(如HTTP Host和HTTP Path)进行路由。
-
ZTM是 基于端口 的。在ZTM网络上,任何一个服务(比如一个私有化部署的Zimbra Web Mail)都会映射到一个访问者本地的端口,用户在访问服务的时候天然的实现了基于端口的访问控制。这种机制一方面避免了复杂网络环境带来的 高度动态且复杂的防火墙策略 管理,一方面有效的缩小了 暴露面 。
-
ZTM 兼容 现有的网络和应用, 零改造 当前网络和应用即可使用ZTM。当用户需要构建一个ZTM网络的时候,用户不需要在现有的网络上进行额外的设置如开放端口、配置防火墙策略、配置路由规则等。用户需要在应用访问端(client端)和应用服务端(server端)的主机上或者网络里部署ZTM agent即可,ZTM会在两个Agent之间构建"隧道",隧道是一种加密的、虚拟的网络链路。零改造 的特性使得用户可以快速的把存量的服务(如ERP、OA、WebMail)接入到ZTM上,实现更简单的管理,和更高的安全策略。
-
ZTM是 去中心化 的。ZTM的设计初衷之一是用户可以在自己手机、家庭电脑上直接分享自己的内容,如照片、文章等,但是又不依赖互联网巨头们(google、facebook等)的服务。使能用户低成本高可靠的自己 拥有 自己的内容。在ZTM网络上,服务访问者(Client)和服务提供者(Server)之间通过 隧道 连接,隧道的建立有时候需要第三方的中继,但是中继节点并不 拥有 服务。中继节点只能看到加密的TCP连接,而无法知晓和干预其中传输的内容。
-
ZTM可以运行在多种CPU和操作系统之上,包括X86、ARM、RISC-V等CPU,Linux(包括Android)、MACOS、FreeBSD、Windows等操作系统。在最简单的情况下,用户可以在自己的手机里运行ZTM Agent,快速并安全的把手机中照片分享给朋友,但无需经过第三方照片分享服务(如google photos)。在复杂的企业网络环境里,比如在kubernetes容器网络里,用户也可以通过在kubernetes node上运行ZTM Agent,使得容器网络外部便捷、快速、安全的访问kubernetes集群内的服务。对于熟悉kubernetes的用户来说,ZTM为kubernetes网络对外开放服务提供了除了ELB、NodePort、Ingress之外的一个新的选择 -- 隧道。