基于主机名透明代理的常见做法?

基于主机名透明代理的常见做法?

场景如下:

  • 客户端 A 对 abc.com 发出 DNS 查询并接收 IP3。
  • 客户端 B 稍后对 r123.com 发出 DNS 查询并接收 IP3。(我们假设这是可能的)。
  • abc.com 托管在服务器 1(IP1)上。r123.com 托管在服务器 2(IP2)上。
  • 客户端 A 想要与服务器 1 建立 TLS 连接。客户端 B 想要与服务器 2 建立 TLS 连接。
  • 如何透明地做到这一点?也就是说,即使客户端 A 和 B 都连接到 IP3,它们也会认为连接已分别自动与它们的预期目的地建立。
  • 我不确定是否可行的示例实现是:IP3 是一个反向代理,客户端与其建立 TCP 连接,稍后在 clientHello 中检索 SNI,并且代理以某种方式首先在客户端和实际服务器之间重新建立 TCP 连接,然后再继续进行 TLS 握手?

编辑:换句话说,客户端应该与目标服务器进行 TLS 握手,但这里的技巧是 DNS 查询仅返回另一台服务器的 IP(可能是代理。由 IP3 表示)。多个域获得此 IP3。IP3 处的服务器如何识别所请求的确切目标服务器,同时确保客户端和目标服务器之间发生 TLS 握手(其中也包含 TCP 握手)?

任何意见,将不胜感激!

相关内容