HBONE
HBONE(或基于 HTTP 的覆盖网络环境)是在 Istio 组件之间使用的安全隧道协议。HBONE 是 Istio 的专用术语。它是一种机制,用于通过单个、mTLS 加密的网络连接(加密隧道)透明地复用与许多不同应用程序连接相关的 TCP 流:
在 Istio 中的当前实现中,HBONE 协议由三个开放标准组成
HTTP CONNECT 用于建立隧道连接,mTLS 用于保护和加密该连接,HTTP/2 用于通过该单个安全加密的隧道复用应用程序连接流,并传达额外的流级元数据。
安全和租户
根据 mTLS 规范的要求,每个底层隧道连接必须具有唯一的源和唯一的目标标识,并且这些标识必须用于建立该连接的加密。
这意味着通过 HBONE 协议到相同目标标识的应用程序连接将在相同的共享加密和安全底层 HTTP/2 连接上复用 - 事实上,即使该底层专用连接正在处理多个应用程序级连接,每个唯一的源和目标也必须获得自己的专用安全隧道连接。
实现细节
根据 Istio 约定,ztunnel 和其他理解 HBONE 协议的代理会在 TCP 端口 15008 上公开监听器。
由于 HBONE 仅仅是 HTTP/2、HTTP CONNECT 和 mTLS 的组合,因此在启用 HBONE 的代理之间流动的 HBONE 隧道数据包看起来如下图所示
HBONE 隧道的一个重要特性是,原始应用程序请求可以透明地代理,而无需以任何方式更改底层应用程序流量流。这意味着可以在不更改应用程序请求的情况下将有关连接的元数据传递到目标代理 - 例如,无需将 Istio 特定的标头附加到应用程序流量。
未来随着环境模式和标准的发展,将研究 HBONE 和 HTTP 隧道(例如 UDP)的其他用例。