F5 iRule 用于管理 HTTP 代理连接请求



我在Web服务器前面有一个配置了客户端https加密的F5虚拟服务器。

我希望这个VS也管理HTTP CONNECT请求,以便客户端可以将其作为Web服务器或代理请求。

也就是说,VS 应该解密所有 TCP 连接,但如果第一个 TCP 数据包以"CONNECT"开头,它应该首先响应 HTTP 200,然后等待下一个数据包(必须是"客户端 hello")并处理 SSL 握手。

使用某些 iRule 当然是可能的,但我无法轻松获得解决方案,并且在互联网上找不到任何帮助,因为 F5 文档未打开。有男孩知道怎么做吗?

我终于找到了解决方案。

VS 的默认行为是从第一个 TCP 数据包开始处理 SSL 解密:所以必须查看第一个TCP数据包,如果它以CONNECT开头,

  • 禁用 SSL 解密,
  • 使用 HTTP 200 响应,
  • 然后为应该紧随其后的"客户端问候"重新启用 SSL 解密

它在两种情况下都有效:

  • 在 TCP 上下文中,在 SSL 解密之前,检测连接请求
  • 在 HTTP 上下文中,正确响应 CONNECT 请求

    当CLIENT_ACCEPTED { # TCP 上下文    TCP::collect 7 # 查看 TCP 流的前 7 个字节}当CLIENT_DATA {    if { [TCP::p ayload] starts_with "CONNECT" } {        SSL::d可 # 禁用 SSL 解密    }}当HTTP_REQUEST { # HTTP 上下文    if { [HTTP::method] eq "CONNECT" } {        HTTP::response 200 # send HTTP 200        SSL::enable # 重新启用 SSL 解密,以便下一个"客户端问候"    }}

相关内容

  • 没有找到相关文章

最新更新